mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-11-21 14:44:00 +00:00
lib/promrelabel: pass query args via query string at /metric-relabel-debug and /target-relabel-debug pages if their length doesnt exceed 1000
This allows copy-n-pasting the url to another browser window and seeing the same result. The limit in 1000 chars is selected in order to prevent from potential issues with systems which limit the url length such as Internet Explorer - see https://stackoverflow.com/questions/812925/what-is-the-maximum-possible-length-of-a-query-string If the limit is exceeded, then query args are sent via POST method and aren't visible in the url. Updates https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3580
This commit is contained in:
parent
21be927afa
commit
1af6e0b233
4 changed files with 304 additions and 274 deletions
|
@ -21,7 +21,7 @@ func writeRelabelDebug(w io.Writer, isTargetRelabel bool, targetID, metric, rela
|
|||
if metric == "" {
|
||||
metric = "{}"
|
||||
}
|
||||
if targetID == "" {
|
||||
if err != nil {
|
||||
WriteRelabelDebugSteps(w, isTargetRelabel, targetID, nil, metric, relabelConfigs, err)
|
||||
return
|
||||
}
|
||||
|
|
|
@ -11,6 +11,16 @@
|
|||
<head>
|
||||
{%= htmlcomponents.CommonHeader() %}
|
||||
<title>Metric relabel debug</title>
|
||||
<script>
|
||||
function submitRelabelDebugForm(e) {
|
||||
var form = e.target;
|
||||
var method = "GET";
|
||||
if (form.elements["relabel_configs"].value.length + form.elements["metric"].value.length > 1000) {
|
||||
method = "POST";
|
||||
}
|
||||
form.method = method;
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
{%= htmlcomponents.Navbar() %}
|
||||
|
@ -18,9 +28,9 @@
|
|||
<a href="https://docs.victoriametrics.com/relabeling.html" target="_blank">Relabeling docs</a>{% space %}
|
||||
|
||||
{% if isTargetRelabel %}
|
||||
<a href="metric-relabel-debug?id={%s targetID %}">Metric relabel debug</a>
|
||||
<a href="metric-relabel-debug{% if targetID != "" %}?id={%s targetID %}{% endif %}">Metric relabel debug</a>
|
||||
{% else %}
|
||||
<a href="target-relabel-debug?id={%s targetID %}">Target relabel debug</a>
|
||||
<a href="target-relabel-debug{% if targetID != "" %}?id={%s targetID %}{% endif %}">Target relabel debug</a>
|
||||
{% endif %}
|
||||
|
||||
<br>
|
||||
|
@ -29,9 +39,11 @@
|
|||
{% endif %}
|
||||
|
||||
<div class="m-3">
|
||||
<form method="POST">
|
||||
<form method="POST" onsubmit="submitRelabelDebugForm(event)">
|
||||
{%= relabelDebugFormInputs(metric, relabelConfigs) %}
|
||||
<input type="hidden" name="id" value="{%s targetID %}" />
|
||||
{% if targetID != "" %}
|
||||
<input type="hidden" name="id" value="{%s targetID %}" />
|
||||
{% endif %}
|
||||
<input type="submit" value="Submit" class="btn btn-primary m-1" />
|
||||
{% if targetID != "" %}
|
||||
<button type="button" onclick="location.href='?id={%s targetID %}'" class="btn btn-secondary m-1">Reset</button>
|
||||
|
|
|
@ -30,126 +30,103 @@ func StreamRelabelDebugSteps(qw422016 *qt422016.Writer, isTargetRelabel bool, ta
|
|||
//line lib/promrelabel/debug.qtpl:12
|
||||
htmlcomponents.StreamCommonHeader(qw422016)
|
||||
//line lib/promrelabel/debug.qtpl:12
|
||||
qw422016.N().S(`<title>Metric relabel debug</title></head><body>`)
|
||||
//line lib/promrelabel/debug.qtpl:16
|
||||
qw422016.N().S(`<title>Metric relabel debug</title><script>function submitRelabelDebugForm(e) {var form = e.target;var method = "GET";if (form.elements["relabel_configs"].value.length + form.elements["metric"].value.length > 1000) {method = "POST";}form.method = method;}</script></head><body>`)
|
||||
//line lib/promrelabel/debug.qtpl:26
|
||||
htmlcomponents.StreamNavbar(qw422016)
|
||||
//line lib/promrelabel/debug.qtpl:16
|
||||
//line lib/promrelabel/debug.qtpl:26
|
||||
qw422016.N().S(`<div class="container-fluid"><a href="https://docs.victoriametrics.com/relabeling.html" target="_blank">Relabeling docs</a>`)
|
||||
//line lib/promrelabel/debug.qtpl:18
|
||||
qw422016.N().S(` `)
|
||||
//line lib/promrelabel/debug.qtpl:20
|
||||
if isTargetRelabel {
|
||||
//line lib/promrelabel/debug.qtpl:20
|
||||
qw422016.N().S(`<a href="metric-relabel-debug?id=`)
|
||||
//line lib/promrelabel/debug.qtpl:21
|
||||
qw422016.E().S(targetID)
|
||||
//line lib/promrelabel/debug.qtpl:21
|
||||
qw422016.N().S(`">Metric relabel debug</a>`)
|
||||
//line lib/promrelabel/debug.qtpl:22
|
||||
} else {
|
||||
//line lib/promrelabel/debug.qtpl:22
|
||||
qw422016.N().S(`<a href="target-relabel-debug?id=`)
|
||||
//line lib/promrelabel/debug.qtpl:23
|
||||
qw422016.E().S(targetID)
|
||||
//line lib/promrelabel/debug.qtpl:23
|
||||
qw422016.N().S(`">Target relabel debug</a>`)
|
||||
//line lib/promrelabel/debug.qtpl:24
|
||||
}
|
||||
//line lib/promrelabel/debug.qtpl:24
|
||||
qw422016.N().S(`<br>`)
|
||||
//line lib/promrelabel/debug.qtpl:27
|
||||
if err != nil {
|
||||
//line lib/promrelabel/debug.qtpl:28
|
||||
qw422016.N().S(` `)
|
||||
//line lib/promrelabel/debug.qtpl:30
|
||||
if isTargetRelabel {
|
||||
//line lib/promrelabel/debug.qtpl:30
|
||||
qw422016.N().S(`<a href="metric-relabel-debug`)
|
||||
//line lib/promrelabel/debug.qtpl:31
|
||||
if targetID != "" {
|
||||
//line lib/promrelabel/debug.qtpl:31
|
||||
qw422016.N().S(`?id=`)
|
||||
//line lib/promrelabel/debug.qtpl:31
|
||||
qw422016.E().S(targetID)
|
||||
//line lib/promrelabel/debug.qtpl:31
|
||||
}
|
||||
//line lib/promrelabel/debug.qtpl:31
|
||||
qw422016.N().S(`">Metric relabel debug</a>`)
|
||||
//line lib/promrelabel/debug.qtpl:32
|
||||
} else {
|
||||
//line lib/promrelabel/debug.qtpl:32
|
||||
qw422016.N().S(`<a href="target-relabel-debug`)
|
||||
//line lib/promrelabel/debug.qtpl:33
|
||||
if targetID != "" {
|
||||
//line lib/promrelabel/debug.qtpl:33
|
||||
qw422016.N().S(`?id=`)
|
||||
//line lib/promrelabel/debug.qtpl:33
|
||||
qw422016.E().S(targetID)
|
||||
//line lib/promrelabel/debug.qtpl:33
|
||||
}
|
||||
//line lib/promrelabel/debug.qtpl:33
|
||||
qw422016.N().S(`">Target relabel debug</a>`)
|
||||
//line lib/promrelabel/debug.qtpl:34
|
||||
}
|
||||
//line lib/promrelabel/debug.qtpl:34
|
||||
qw422016.N().S(`<br>`)
|
||||
//line lib/promrelabel/debug.qtpl:37
|
||||
if err != nil {
|
||||
//line lib/promrelabel/debug.qtpl:38
|
||||
htmlcomponents.StreamErrorNotification(qw422016, err)
|
||||
//line lib/promrelabel/debug.qtpl:29
|
||||
//line lib/promrelabel/debug.qtpl:39
|
||||
}
|
||||
//line lib/promrelabel/debug.qtpl:29
|
||||
qw422016.N().S(`<div class="m-3"><form method="POST">`)
|
||||
//line lib/promrelabel/debug.qtpl:33
|
||||
//line lib/promrelabel/debug.qtpl:39
|
||||
qw422016.N().S(`<div class="m-3"><form method="POST" onsubmit="submitRelabelDebugForm(event)">`)
|
||||
//line lib/promrelabel/debug.qtpl:43
|
||||
streamrelabelDebugFormInputs(qw422016, metric, relabelConfigs)
|
||||
//line lib/promrelabel/debug.qtpl:33
|
||||
qw422016.N().S(`<input type="hidden" name="id" value="`)
|
||||
//line lib/promrelabel/debug.qtpl:34
|
||||
qw422016.E().S(targetID)
|
||||
//line lib/promrelabel/debug.qtpl:34
|
||||
qw422016.N().S(`" /><input type="submit" value="Submit" class="btn btn-primary m-1" />`)
|
||||
//line lib/promrelabel/debug.qtpl:36
|
||||
//line lib/promrelabel/debug.qtpl:44
|
||||
if targetID != "" {
|
||||
//line lib/promrelabel/debug.qtpl:36
|
||||
qw422016.N().S(`<button type="button" onclick="location.href='?id=`)
|
||||
//line lib/promrelabel/debug.qtpl:37
|
||||
//line lib/promrelabel/debug.qtpl:44
|
||||
qw422016.N().S(`<input type="hidden" name="id" value="`)
|
||||
//line lib/promrelabel/debug.qtpl:45
|
||||
qw422016.E().S(targetID)
|
||||
//line lib/promrelabel/debug.qtpl:37
|
||||
qw422016.N().S(`'" class="btn btn-secondary m-1">Reset</button>`)
|
||||
//line lib/promrelabel/debug.qtpl:38
|
||||
//line lib/promrelabel/debug.qtpl:45
|
||||
qw422016.N().S(`" />`)
|
||||
//line lib/promrelabel/debug.qtpl:46
|
||||
}
|
||||
//line lib/promrelabel/debug.qtpl:38
|
||||
//line lib/promrelabel/debug.qtpl:46
|
||||
qw422016.N().S(`<input type="submit" value="Submit" class="btn btn-primary m-1" />`)
|
||||
//line lib/promrelabel/debug.qtpl:48
|
||||
if targetID != "" {
|
||||
//line lib/promrelabel/debug.qtpl:48
|
||||
qw422016.N().S(`<button type="button" onclick="location.href='?id=`)
|
||||
//line lib/promrelabel/debug.qtpl:49
|
||||
qw422016.E().S(targetID)
|
||||
//line lib/promrelabel/debug.qtpl:49
|
||||
qw422016.N().S(`'" class="btn btn-secondary m-1">Reset</button>`)
|
||||
//line lib/promrelabel/debug.qtpl:50
|
||||
}
|
||||
//line lib/promrelabel/debug.qtpl:50
|
||||
qw422016.N().S(`</form></div><div class="row"><main class="col-12">`)
|
||||
//line lib/promrelabel/debug.qtpl:44
|
||||
//line lib/promrelabel/debug.qtpl:56
|
||||
streamrelabelDebugSteps(qw422016, dss)
|
||||
//line lib/promrelabel/debug.qtpl:44
|
||||
//line lib/promrelabel/debug.qtpl:56
|
||||
qw422016.N().S(`</main></div></div></body></html>`)
|
||||
//line lib/promrelabel/debug.qtpl:50
|
||||
//line lib/promrelabel/debug.qtpl:62
|
||||
}
|
||||
|
||||
//line lib/promrelabel/debug.qtpl:50
|
||||
//line lib/promrelabel/debug.qtpl:62
|
||||
func WriteRelabelDebugSteps(qq422016 qtio422016.Writer, isTargetRelabel bool, targetID string, dss []DebugStep, metric, relabelConfigs string, err error) {
|
||||
//line lib/promrelabel/debug.qtpl:50
|
||||
//line lib/promrelabel/debug.qtpl:62
|
||||
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||
//line lib/promrelabel/debug.qtpl:50
|
||||
//line lib/promrelabel/debug.qtpl:62
|
||||
StreamRelabelDebugSteps(qw422016, isTargetRelabel, targetID, dss, metric, relabelConfigs, err)
|
||||
//line lib/promrelabel/debug.qtpl:50
|
||||
//line lib/promrelabel/debug.qtpl:62
|
||||
qt422016.ReleaseWriter(qw422016)
|
||||
//line lib/promrelabel/debug.qtpl:50
|
||||
//line lib/promrelabel/debug.qtpl:62
|
||||
}
|
||||
|
||||
//line lib/promrelabel/debug.qtpl:50
|
||||
//line lib/promrelabel/debug.qtpl:62
|
||||
func RelabelDebugSteps(isTargetRelabel bool, targetID string, dss []DebugStep, metric, relabelConfigs string, err error) string {
|
||||
//line lib/promrelabel/debug.qtpl:50
|
||||
//line lib/promrelabel/debug.qtpl:62
|
||||
qb422016 := qt422016.AcquireByteBuffer()
|
||||
//line lib/promrelabel/debug.qtpl:50
|
||||
//line lib/promrelabel/debug.qtpl:62
|
||||
WriteRelabelDebugSteps(qb422016, isTargetRelabel, targetID, dss, metric, relabelConfigs, err)
|
||||
//line lib/promrelabel/debug.qtpl:50
|
||||
qs422016 := string(qb422016.B)
|
||||
//line lib/promrelabel/debug.qtpl:50
|
||||
qt422016.ReleaseByteBuffer(qb422016)
|
||||
//line lib/promrelabel/debug.qtpl:50
|
||||
return qs422016
|
||||
//line lib/promrelabel/debug.qtpl:50
|
||||
}
|
||||
|
||||
//line lib/promrelabel/debug.qtpl:52
|
||||
func streamrelabelDebugFormInputs(qw422016 *qt422016.Writer, metric, relabelConfigs string) {
|
||||
//line lib/promrelabel/debug.qtpl:52
|
||||
qw422016.N().S(`<div>Relabel configs:<br/><textarea name="relabel_configs" style="width: 100%; height: 15em" class="m-1">`)
|
||||
//line lib/promrelabel/debug.qtpl:55
|
||||
qw422016.E().S(relabelConfigs)
|
||||
//line lib/promrelabel/debug.qtpl:55
|
||||
qw422016.N().S(`</textarea></div><div>Labels:<br/><textarea name="metric" style="width: 100%; height: 5em" class="m-1">`)
|
||||
//line lib/promrelabel/debug.qtpl:60
|
||||
qw422016.E().S(metric)
|
||||
//line lib/promrelabel/debug.qtpl:60
|
||||
qw422016.N().S(`</textarea></div>`)
|
||||
//line lib/promrelabel/debug.qtpl:62
|
||||
}
|
||||
|
||||
//line lib/promrelabel/debug.qtpl:62
|
||||
func writerelabelDebugFormInputs(qq422016 qtio422016.Writer, metric, relabelConfigs string) {
|
||||
//line lib/promrelabel/debug.qtpl:62
|
||||
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||
//line lib/promrelabel/debug.qtpl:62
|
||||
streamrelabelDebugFormInputs(qw422016, metric, relabelConfigs)
|
||||
//line lib/promrelabel/debug.qtpl:62
|
||||
qt422016.ReleaseWriter(qw422016)
|
||||
//line lib/promrelabel/debug.qtpl:62
|
||||
}
|
||||
|
||||
//line lib/promrelabel/debug.qtpl:62
|
||||
func relabelDebugFormInputs(metric, relabelConfigs string) string {
|
||||
//line lib/promrelabel/debug.qtpl:62
|
||||
qb422016 := qt422016.AcquireByteBuffer()
|
||||
//line lib/promrelabel/debug.qtpl:62
|
||||
writerelabelDebugFormInputs(qb422016, metric, relabelConfigs)
|
||||
//line lib/promrelabel/debug.qtpl:62
|
||||
qs422016 := string(qb422016.B)
|
||||
//line lib/promrelabel/debug.qtpl:62
|
||||
|
@ -160,90 +137,131 @@ func relabelDebugFormInputs(metric, relabelConfigs string) string {
|
|||
}
|
||||
|
||||
//line lib/promrelabel/debug.qtpl:64
|
||||
func streamrelabelDebugFormInputs(qw422016 *qt422016.Writer, metric, relabelConfigs string) {
|
||||
//line lib/promrelabel/debug.qtpl:64
|
||||
qw422016.N().S(`<div>Relabel configs:<br/><textarea name="relabel_configs" style="width: 100%; height: 15em" class="m-1">`)
|
||||
//line lib/promrelabel/debug.qtpl:67
|
||||
qw422016.E().S(relabelConfigs)
|
||||
//line lib/promrelabel/debug.qtpl:67
|
||||
qw422016.N().S(`</textarea></div><div>Labels:<br/><textarea name="metric" style="width: 100%; height: 5em" class="m-1">`)
|
||||
//line lib/promrelabel/debug.qtpl:72
|
||||
qw422016.E().S(metric)
|
||||
//line lib/promrelabel/debug.qtpl:72
|
||||
qw422016.N().S(`</textarea></div>`)
|
||||
//line lib/promrelabel/debug.qtpl:74
|
||||
}
|
||||
|
||||
//line lib/promrelabel/debug.qtpl:74
|
||||
func writerelabelDebugFormInputs(qq422016 qtio422016.Writer, metric, relabelConfigs string) {
|
||||
//line lib/promrelabel/debug.qtpl:74
|
||||
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||
//line lib/promrelabel/debug.qtpl:74
|
||||
streamrelabelDebugFormInputs(qw422016, metric, relabelConfigs)
|
||||
//line lib/promrelabel/debug.qtpl:74
|
||||
qt422016.ReleaseWriter(qw422016)
|
||||
//line lib/promrelabel/debug.qtpl:74
|
||||
}
|
||||
|
||||
//line lib/promrelabel/debug.qtpl:74
|
||||
func relabelDebugFormInputs(metric, relabelConfigs string) string {
|
||||
//line lib/promrelabel/debug.qtpl:74
|
||||
qb422016 := qt422016.AcquireByteBuffer()
|
||||
//line lib/promrelabel/debug.qtpl:74
|
||||
writerelabelDebugFormInputs(qb422016, metric, relabelConfigs)
|
||||
//line lib/promrelabel/debug.qtpl:74
|
||||
qs422016 := string(qb422016.B)
|
||||
//line lib/promrelabel/debug.qtpl:74
|
||||
qt422016.ReleaseByteBuffer(qb422016)
|
||||
//line lib/promrelabel/debug.qtpl:74
|
||||
return qs422016
|
||||
//line lib/promrelabel/debug.qtpl:74
|
||||
}
|
||||
|
||||
//line lib/promrelabel/debug.qtpl:76
|
||||
func streamrelabelDebugSteps(qw422016 *qt422016.Writer, dss []DebugStep) {
|
||||
//line lib/promrelabel/debug.qtpl:65
|
||||
//line lib/promrelabel/debug.qtpl:77
|
||||
if len(dss) > 0 {
|
||||
//line lib/promrelabel/debug.qtpl:65
|
||||
//line lib/promrelabel/debug.qtpl:77
|
||||
qw422016.N().S(`<div class="m-3"><b>Original labels:</b> <samp>`)
|
||||
//line lib/promrelabel/debug.qtpl:67
|
||||
//line lib/promrelabel/debug.qtpl:79
|
||||
streammustFormatLabels(qw422016, dss[0].In)
|
||||
//line lib/promrelabel/debug.qtpl:67
|
||||
//line lib/promrelabel/debug.qtpl:79
|
||||
qw422016.N().S(`</samp></div>`)
|
||||
//line lib/promrelabel/debug.qtpl:69
|
||||
//line lib/promrelabel/debug.qtpl:81
|
||||
}
|
||||
//line lib/promrelabel/debug.qtpl:69
|
||||
//line lib/promrelabel/debug.qtpl:81
|
||||
qw422016.N().S(`<table class="table table-striped table-hover table-bordered table-sm"><thead><tr><th scope="col" style="width: 5%">Step</th><th scope="col" style="width: 25%">Relabeling Rule</th><th scope="col" style="width: 35%">Input Labels</th><th scope="col" stile="width: 35%">Output labels</a></tr></thead><tbody>`)
|
||||
//line lib/promrelabel/debug.qtpl:80
|
||||
//line lib/promrelabel/debug.qtpl:92
|
||||
for i, ds := range dss {
|
||||
//line lib/promrelabel/debug.qtpl:82
|
||||
//line lib/promrelabel/debug.qtpl:94
|
||||
inLabels := promutils.MustNewLabelsFromString(ds.In)
|
||||
outLabels := promutils.MustNewLabelsFromString(ds.Out)
|
||||
changedLabels := getChangedLabelNames(inLabels, outLabels)
|
||||
|
||||
//line lib/promrelabel/debug.qtpl:85
|
||||
//line lib/promrelabel/debug.qtpl:97
|
||||
qw422016.N().S(`<tr><td>`)
|
||||
//line lib/promrelabel/debug.qtpl:87
|
||||
//line lib/promrelabel/debug.qtpl:99
|
||||
qw422016.N().D(i)
|
||||
//line lib/promrelabel/debug.qtpl:87
|
||||
//line lib/promrelabel/debug.qtpl:99
|
||||
qw422016.N().S(`</td><td><b><pre class="m-2">`)
|
||||
//line lib/promrelabel/debug.qtpl:88
|
||||
//line lib/promrelabel/debug.qtpl:100
|
||||
qw422016.E().S(ds.Rule)
|
||||
//line lib/promrelabel/debug.qtpl:88
|
||||
//line lib/promrelabel/debug.qtpl:100
|
||||
qw422016.N().S(`</pre></b></td><td><div class="m-2" style="font-size: 0.9em" title="deleted and updated labels highlighted in red">`)
|
||||
//line lib/promrelabel/debug.qtpl:91
|
||||
//line lib/promrelabel/debug.qtpl:103
|
||||
streamlabelsWithHighlight(qw422016, inLabels, changedLabels, "red")
|
||||
//line lib/promrelabel/debug.qtpl:91
|
||||
//line lib/promrelabel/debug.qtpl:103
|
||||
qw422016.N().S(`</div></td><td><div class="m-2" style="font-size: 0.9em" title="added and updated labels highlighted in blue">`)
|
||||
//line lib/promrelabel/debug.qtpl:96
|
||||
//line lib/promrelabel/debug.qtpl:108
|
||||
streamlabelsWithHighlight(qw422016, outLabels, changedLabels, "blue")
|
||||
//line lib/promrelabel/debug.qtpl:96
|
||||
//line lib/promrelabel/debug.qtpl:108
|
||||
qw422016.N().S(`</div></td></tr>`)
|
||||
//line lib/promrelabel/debug.qtpl:100
|
||||
}
|
||||
//line lib/promrelabel/debug.qtpl:100
|
||||
qw422016.N().S(`</tbody></table>`)
|
||||
//line lib/promrelabel/debug.qtpl:103
|
||||
if len(dss) > 0 {
|
||||
//line lib/promrelabel/debug.qtpl:103
|
||||
qw422016.N().S(`<div class="m-3"><b>Resulting labels:</b> <samp>`)
|
||||
//line lib/promrelabel/debug.qtpl:105
|
||||
streammustFormatLabels(qw422016, dss[len(dss)-1].Out)
|
||||
//line lib/promrelabel/debug.qtpl:105
|
||||
qw422016.N().S(`</samp></div>`)
|
||||
//line lib/promrelabel/debug.qtpl:107
|
||||
}
|
||||
//line lib/promrelabel/debug.qtpl:108
|
||||
}
|
||||
|
||||
//line lib/promrelabel/debug.qtpl:108
|
||||
func writerelabelDebugSteps(qq422016 qtio422016.Writer, dss []DebugStep) {
|
||||
//line lib/promrelabel/debug.qtpl:108
|
||||
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||
//line lib/promrelabel/debug.qtpl:108
|
||||
streamrelabelDebugSteps(qw422016, dss)
|
||||
//line lib/promrelabel/debug.qtpl:108
|
||||
qt422016.ReleaseWriter(qw422016)
|
||||
//line lib/promrelabel/debug.qtpl:108
|
||||
}
|
||||
|
||||
//line lib/promrelabel/debug.qtpl:108
|
||||
func relabelDebugSteps(dss []DebugStep) string {
|
||||
//line lib/promrelabel/debug.qtpl:108
|
||||
qb422016 := qt422016.AcquireByteBuffer()
|
||||
//line lib/promrelabel/debug.qtpl:108
|
||||
writerelabelDebugSteps(qb422016, dss)
|
||||
//line lib/promrelabel/debug.qtpl:108
|
||||
qs422016 := string(qb422016.B)
|
||||
//line lib/promrelabel/debug.qtpl:108
|
||||
qt422016.ReleaseByteBuffer(qb422016)
|
||||
//line lib/promrelabel/debug.qtpl:108
|
||||
return qs422016
|
||||
//line lib/promrelabel/debug.qtpl:108
|
||||
}
|
||||
|
||||
//line lib/promrelabel/debug.qtpl:110
|
||||
func streamlabelsWithHighlight(qw422016 *qt422016.Writer, labels *promutils.Labels, highlight map[string]struct{}, color string) {
|
||||
//line lib/promrelabel/debug.qtpl:112
|
||||
}
|
||||
//line lib/promrelabel/debug.qtpl:112
|
||||
qw422016.N().S(`</tbody></table>`)
|
||||
//line lib/promrelabel/debug.qtpl:115
|
||||
if len(dss) > 0 {
|
||||
//line lib/promrelabel/debug.qtpl:115
|
||||
qw422016.N().S(`<div class="m-3"><b>Resulting labels:</b> <samp>`)
|
||||
//line lib/promrelabel/debug.qtpl:117
|
||||
streammustFormatLabels(qw422016, dss[len(dss)-1].Out)
|
||||
//line lib/promrelabel/debug.qtpl:117
|
||||
qw422016.N().S(`</samp></div>`)
|
||||
//line lib/promrelabel/debug.qtpl:119
|
||||
}
|
||||
//line lib/promrelabel/debug.qtpl:120
|
||||
}
|
||||
|
||||
//line lib/promrelabel/debug.qtpl:120
|
||||
func writerelabelDebugSteps(qq422016 qtio422016.Writer, dss []DebugStep) {
|
||||
//line lib/promrelabel/debug.qtpl:120
|
||||
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||
//line lib/promrelabel/debug.qtpl:120
|
||||
streamrelabelDebugSteps(qw422016, dss)
|
||||
//line lib/promrelabel/debug.qtpl:120
|
||||
qt422016.ReleaseWriter(qw422016)
|
||||
//line lib/promrelabel/debug.qtpl:120
|
||||
}
|
||||
|
||||
//line lib/promrelabel/debug.qtpl:120
|
||||
func relabelDebugSteps(dss []DebugStep) string {
|
||||
//line lib/promrelabel/debug.qtpl:120
|
||||
qb422016 := qt422016.AcquireByteBuffer()
|
||||
//line lib/promrelabel/debug.qtpl:120
|
||||
writerelabelDebugSteps(qb422016, dss)
|
||||
//line lib/promrelabel/debug.qtpl:120
|
||||
qs422016 := string(qb422016.B)
|
||||
//line lib/promrelabel/debug.qtpl:120
|
||||
qt422016.ReleaseByteBuffer(qb422016)
|
||||
//line lib/promrelabel/debug.qtpl:120
|
||||
return qs422016
|
||||
//line lib/promrelabel/debug.qtpl:120
|
||||
}
|
||||
|
||||
//line lib/promrelabel/debug.qtpl:122
|
||||
func streamlabelsWithHighlight(qw422016 *qt422016.Writer, labels *promutils.Labels, highlight map[string]struct{}, color string) {
|
||||
//line lib/promrelabel/debug.qtpl:124
|
||||
labelsList := labels.GetLabels()
|
||||
metricName := ""
|
||||
for i, label := range labelsList {
|
||||
|
@ -254,137 +272,137 @@ func streamlabelsWithHighlight(qw422016 *qt422016.Writer, labels *promutils.Labe
|
|||
}
|
||||
}
|
||||
|
||||
//line lib/promrelabel/debug.qtpl:122
|
||||
if metricName != "" {
|
||||
//line lib/promrelabel/debug.qtpl:123
|
||||
if _, ok := highlight["__name__"]; ok {
|
||||
//line lib/promrelabel/debug.qtpl:123
|
||||
qw422016.N().S(`<span style="font-weight:bold;color:`)
|
||||
//line lib/promrelabel/debug.qtpl:124
|
||||
qw422016.E().S(color)
|
||||
//line lib/promrelabel/debug.qtpl:124
|
||||
qw422016.N().S(`">`)
|
||||
//line lib/promrelabel/debug.qtpl:124
|
||||
qw422016.E().S(metricName)
|
||||
//line lib/promrelabel/debug.qtpl:124
|
||||
qw422016.N().S(`</span>`)
|
||||
//line lib/promrelabel/debug.qtpl:125
|
||||
} else {
|
||||
//line lib/promrelabel/debug.qtpl:126
|
||||
qw422016.E().S(metricName)
|
||||
//line lib/promrelabel/debug.qtpl:127
|
||||
}
|
||||
//line lib/promrelabel/debug.qtpl:128
|
||||
if len(labelsList) == 0 {
|
||||
//line lib/promrelabel/debug.qtpl:128
|
||||
return
|
||||
//line lib/promrelabel/debug.qtpl:128
|
||||
}
|
||||
//line lib/promrelabel/debug.qtpl:129
|
||||
}
|
||||
//line lib/promrelabel/debug.qtpl:129
|
||||
qw422016.N().S(`{`)
|
||||
//line lib/promrelabel/debug.qtpl:131
|
||||
for i, label := range labelsList {
|
||||
//line lib/promrelabel/debug.qtpl:132
|
||||
if _, ok := highlight[label.Name]; ok {
|
||||
//line lib/promrelabel/debug.qtpl:132
|
||||
qw422016.N().S(`<span style="font-weight:bold;color:`)
|
||||
//line lib/promrelabel/debug.qtpl:133
|
||||
qw422016.E().S(color)
|
||||
//line lib/promrelabel/debug.qtpl:133
|
||||
qw422016.N().S(`">`)
|
||||
//line lib/promrelabel/debug.qtpl:133
|
||||
qw422016.E().S(label.Name)
|
||||
//line lib/promrelabel/debug.qtpl:133
|
||||
qw422016.N().S(`=`)
|
||||
//line lib/promrelabel/debug.qtpl:133
|
||||
qw422016.E().Q(label.Value)
|
||||
//line lib/promrelabel/debug.qtpl:133
|
||||
qw422016.N().S(`</span>`)
|
||||
//line lib/promrelabel/debug.qtpl:134
|
||||
} else {
|
||||
if metricName != "" {
|
||||
//line lib/promrelabel/debug.qtpl:135
|
||||
qw422016.E().S(label.Name)
|
||||
if _, ok := highlight["__name__"]; ok {
|
||||
//line lib/promrelabel/debug.qtpl:135
|
||||
qw422016.N().S(`=`)
|
||||
//line lib/promrelabel/debug.qtpl:135
|
||||
qw422016.E().Q(label.Value)
|
||||
qw422016.N().S(`<span style="font-weight:bold;color:`)
|
||||
//line lib/promrelabel/debug.qtpl:136
|
||||
}
|
||||
qw422016.E().S(color)
|
||||
//line lib/promrelabel/debug.qtpl:136
|
||||
qw422016.N().S(`">`)
|
||||
//line lib/promrelabel/debug.qtpl:136
|
||||
qw422016.E().S(metricName)
|
||||
//line lib/promrelabel/debug.qtpl:136
|
||||
qw422016.N().S(`</span>`)
|
||||
//line lib/promrelabel/debug.qtpl:137
|
||||
if i < len(labelsList)-1 {
|
||||
//line lib/promrelabel/debug.qtpl:137
|
||||
qw422016.N().S(`,`)
|
||||
//line lib/promrelabel/debug.qtpl:137
|
||||
qw422016.N().S(` `)
|
||||
//line lib/promrelabel/debug.qtpl:137
|
||||
}
|
||||
} else {
|
||||
//line lib/promrelabel/debug.qtpl:138
|
||||
qw422016.E().S(metricName)
|
||||
//line lib/promrelabel/debug.qtpl:139
|
||||
}
|
||||
//line lib/promrelabel/debug.qtpl:140
|
||||
if len(labelsList) == 0 {
|
||||
//line lib/promrelabel/debug.qtpl:140
|
||||
return
|
||||
//line lib/promrelabel/debug.qtpl:140
|
||||
}
|
||||
//line lib/promrelabel/debug.qtpl:141
|
||||
}
|
||||
//line lib/promrelabel/debug.qtpl:138
|
||||
qw422016.N().S(`}`)
|
||||
//line lib/promrelabel/debug.qtpl:140
|
||||
}
|
||||
|
||||
//line lib/promrelabel/debug.qtpl:140
|
||||
func writelabelsWithHighlight(qq422016 qtio422016.Writer, labels *promutils.Labels, highlight map[string]struct{}, color string) {
|
||||
//line lib/promrelabel/debug.qtpl:140
|
||||
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||
//line lib/promrelabel/debug.qtpl:140
|
||||
streamlabelsWithHighlight(qw422016, labels, highlight, color)
|
||||
//line lib/promrelabel/debug.qtpl:140
|
||||
qt422016.ReleaseWriter(qw422016)
|
||||
//line lib/promrelabel/debug.qtpl:140
|
||||
}
|
||||
|
||||
//line lib/promrelabel/debug.qtpl:140
|
||||
func labelsWithHighlight(labels *promutils.Labels, highlight map[string]struct{}, color string) string {
|
||||
//line lib/promrelabel/debug.qtpl:140
|
||||
qb422016 := qt422016.AcquireByteBuffer()
|
||||
//line lib/promrelabel/debug.qtpl:140
|
||||
writelabelsWithHighlight(qb422016, labels, highlight, color)
|
||||
//line lib/promrelabel/debug.qtpl:140
|
||||
qs422016 := string(qb422016.B)
|
||||
//line lib/promrelabel/debug.qtpl:140
|
||||
qt422016.ReleaseByteBuffer(qb422016)
|
||||
//line lib/promrelabel/debug.qtpl:140
|
||||
return qs422016
|
||||
//line lib/promrelabel/debug.qtpl:140
|
||||
}
|
||||
|
||||
//line lib/promrelabel/debug.qtpl:142
|
||||
func streammustFormatLabels(qw422016 *qt422016.Writer, s string) {
|
||||
//line lib/promrelabel/debug.qtpl:141
|
||||
qw422016.N().S(`{`)
|
||||
//line lib/promrelabel/debug.qtpl:143
|
||||
for i, label := range labelsList {
|
||||
//line lib/promrelabel/debug.qtpl:144
|
||||
if _, ok := highlight[label.Name]; ok {
|
||||
//line lib/promrelabel/debug.qtpl:144
|
||||
qw422016.N().S(`<span style="font-weight:bold;color:`)
|
||||
//line lib/promrelabel/debug.qtpl:145
|
||||
qw422016.E().S(color)
|
||||
//line lib/promrelabel/debug.qtpl:145
|
||||
qw422016.N().S(`">`)
|
||||
//line lib/promrelabel/debug.qtpl:145
|
||||
qw422016.E().S(label.Name)
|
||||
//line lib/promrelabel/debug.qtpl:145
|
||||
qw422016.N().S(`=`)
|
||||
//line lib/promrelabel/debug.qtpl:145
|
||||
qw422016.E().Q(label.Value)
|
||||
//line lib/promrelabel/debug.qtpl:145
|
||||
qw422016.N().S(`</span>`)
|
||||
//line lib/promrelabel/debug.qtpl:146
|
||||
} else {
|
||||
//line lib/promrelabel/debug.qtpl:147
|
||||
qw422016.E().S(label.Name)
|
||||
//line lib/promrelabel/debug.qtpl:147
|
||||
qw422016.N().S(`=`)
|
||||
//line lib/promrelabel/debug.qtpl:147
|
||||
qw422016.E().Q(label.Value)
|
||||
//line lib/promrelabel/debug.qtpl:148
|
||||
}
|
||||
//line lib/promrelabel/debug.qtpl:149
|
||||
if i < len(labelsList)-1 {
|
||||
//line lib/promrelabel/debug.qtpl:149
|
||||
qw422016.N().S(`,`)
|
||||
//line lib/promrelabel/debug.qtpl:149
|
||||
qw422016.N().S(` `)
|
||||
//line lib/promrelabel/debug.qtpl:149
|
||||
}
|
||||
//line lib/promrelabel/debug.qtpl:150
|
||||
}
|
||||
//line lib/promrelabel/debug.qtpl:150
|
||||
qw422016.N().S(`}`)
|
||||
//line lib/promrelabel/debug.qtpl:152
|
||||
}
|
||||
|
||||
//line lib/promrelabel/debug.qtpl:152
|
||||
func writelabelsWithHighlight(qq422016 qtio422016.Writer, labels *promutils.Labels, highlight map[string]struct{}, color string) {
|
||||
//line lib/promrelabel/debug.qtpl:152
|
||||
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||
//line lib/promrelabel/debug.qtpl:152
|
||||
streamlabelsWithHighlight(qw422016, labels, highlight, color)
|
||||
//line lib/promrelabel/debug.qtpl:152
|
||||
qt422016.ReleaseWriter(qw422016)
|
||||
//line lib/promrelabel/debug.qtpl:152
|
||||
}
|
||||
|
||||
//line lib/promrelabel/debug.qtpl:152
|
||||
func labelsWithHighlight(labels *promutils.Labels, highlight map[string]struct{}, color string) string {
|
||||
//line lib/promrelabel/debug.qtpl:152
|
||||
qb422016 := qt422016.AcquireByteBuffer()
|
||||
//line lib/promrelabel/debug.qtpl:152
|
||||
writelabelsWithHighlight(qb422016, labels, highlight, color)
|
||||
//line lib/promrelabel/debug.qtpl:152
|
||||
qs422016 := string(qb422016.B)
|
||||
//line lib/promrelabel/debug.qtpl:152
|
||||
qt422016.ReleaseByteBuffer(qb422016)
|
||||
//line lib/promrelabel/debug.qtpl:152
|
||||
return qs422016
|
||||
//line lib/promrelabel/debug.qtpl:152
|
||||
}
|
||||
|
||||
//line lib/promrelabel/debug.qtpl:154
|
||||
func streammustFormatLabels(qw422016 *qt422016.Writer, s string) {
|
||||
//line lib/promrelabel/debug.qtpl:155
|
||||
labels := promutils.MustNewLabelsFromString(s)
|
||||
|
||||
//line lib/promrelabel/debug.qtpl:144
|
||||
//line lib/promrelabel/debug.qtpl:156
|
||||
streamlabelsWithHighlight(qw422016, labels, nil, "")
|
||||
//line lib/promrelabel/debug.qtpl:145
|
||||
//line lib/promrelabel/debug.qtpl:157
|
||||
}
|
||||
|
||||
//line lib/promrelabel/debug.qtpl:145
|
||||
//line lib/promrelabel/debug.qtpl:157
|
||||
func writemustFormatLabels(qq422016 qtio422016.Writer, s string) {
|
||||
//line lib/promrelabel/debug.qtpl:145
|
||||
//line lib/promrelabel/debug.qtpl:157
|
||||
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||
//line lib/promrelabel/debug.qtpl:145
|
||||
//line lib/promrelabel/debug.qtpl:157
|
||||
streammustFormatLabels(qw422016, s)
|
||||
//line lib/promrelabel/debug.qtpl:145
|
||||
//line lib/promrelabel/debug.qtpl:157
|
||||
qt422016.ReleaseWriter(qw422016)
|
||||
//line lib/promrelabel/debug.qtpl:145
|
||||
//line lib/promrelabel/debug.qtpl:157
|
||||
}
|
||||
|
||||
//line lib/promrelabel/debug.qtpl:145
|
||||
//line lib/promrelabel/debug.qtpl:157
|
||||
func mustFormatLabels(s string) string {
|
||||
//line lib/promrelabel/debug.qtpl:145
|
||||
//line lib/promrelabel/debug.qtpl:157
|
||||
qb422016 := qt422016.AcquireByteBuffer()
|
||||
//line lib/promrelabel/debug.qtpl:145
|
||||
//line lib/promrelabel/debug.qtpl:157
|
||||
writemustFormatLabels(qb422016, s)
|
||||
//line lib/promrelabel/debug.qtpl:145
|
||||
//line lib/promrelabel/debug.qtpl:157
|
||||
qs422016 := string(qb422016.B)
|
||||
//line lib/promrelabel/debug.qtpl:145
|
||||
//line lib/promrelabel/debug.qtpl:157
|
||||
qt422016.ReleaseByteBuffer(qb422016)
|
||||
//line lib/promrelabel/debug.qtpl:145
|
||||
//line lib/promrelabel/debug.qtpl:157
|
||||
return qs422016
|
||||
//line lib/promrelabel/debug.qtpl:145
|
||||
//line lib/promrelabel/debug.qtpl:157
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ func WriteMetricRelabelDebug(w http.ResponseWriter, r *http.Request) {
|
|||
relabelConfigs := r.FormValue("relabel_configs")
|
||||
var err error
|
||||
|
||||
if metric == "" && relabelConfigs == "" {
|
||||
if metric == "" && relabelConfigs == "" && targetID != "" {
|
||||
pcs, labels, ok := getMetricRelabelContextByTargetID(targetID)
|
||||
if !ok {
|
||||
err = fmt.Errorf("cannot find target for id=%s", targetID)
|
||||
|
@ -34,7 +34,7 @@ func WriteTargetRelabelDebug(w http.ResponseWriter, r *http.Request) {
|
|||
relabelConfigs := r.FormValue("relabel_configs")
|
||||
var err error
|
||||
|
||||
if metric == "" && relabelConfigs == "" {
|
||||
if metric == "" && relabelConfigs == "" && targetID != "" {
|
||||
pcs, labels, ok := getTargetRelabelContextByTargetID(targetID)
|
||||
if !ok {
|
||||
err = fmt.Errorf("cannot find target for id=%s", targetID)
|
||||
|
|
Loading…
Reference in a new issue