diff --git a/app/vmagent/README.md b/app/vmagent/README.md index fd1d794e0f..c8418e9111 100644 --- a/app/vmagent/README.md +++ b/app/vmagent/README.md @@ -463,8 +463,9 @@ with [additional enhancements](#relabeling-enhancements). The relabeling can be This relabeling is used for modifying labels in discovered targets and for dropping unneeded targets. See [relabeling cookbook](https://docs.victoriametrics.com/relabeling.html) for details. - This relabeling can be debugged by clicking the `debug` link (the link is available only if `--promscrape.dropOriginalLabels=false`) at the corresponding target on the `http://vmagent:8429/targets` page + This relabeling can be debugged by clicking the `debug` link at the corresponding target on the `http://vmagent:8429/targets` page or on the `http://vmagent:8429/service-discovery` page. See [these docs](#relabel-debug) for details. + The link is unavailable if `vmagent` runs with `-promscrape.dropOriginalLabels` command-line flag. * At the `scrape_config -> metric_relabel_configs` section in `-promscrape.config` file. This relabeling is used for modifying labels in scraped metrics and for dropping unneeded metrics. @@ -644,19 +645,21 @@ provide the following tools for debugging target-level and metric-level relabeli - Target-level debugging (e.g. `relabel_configs` section at [scrape_configs](https://docs.victoriametrics.com/sd_configs.html#scrape_configs)) can be performed by navigating to `http://vmagent:8429/targets` page (`http://victoriametrics:8428/targets` page for single-node VictoriaMetrics) - and clicking the `debug target relabeling` link (the link is available only if `--promscrape.dropOriginalLabels=false`) at the target, which must be debugged. + and clicking the `debug target relabeling` link at the target, which must be debugged. + The link is unavailable if `vmagent` runs with `-promscrape.dropOriginalLabels` command-line flag. The opened page shows step-by-step results for the actual target relabeling rules applied to the discovered target labels. The page shows also the target URL generated after applying all the relabeling rules. The `http://vmagent:8429/targets` page shows only active targets. If you need to understand why some target is dropped during the relabeling, then navigate to `http://vmagent:8428/service-discovery` page (`http://victoriametrics:8428/service-discovery` for single-node VictoriaMetrics), find the dropped target - and click the `debug` link (the link is available only if `--promscrape.dropOriginalLabels=false`) there. The opened page shows step-by-step results for the actual relabeling rules, - which result to target drop. + and click the `debug` link there. The link is unavailable if `vmagent` runs with `-promscrape.dropOriginalLabels` command-line flag. + The opened page shows step-by-step results for the actual relabeling rules, which result to target drop. - Metric-level debugging (e.g. `metric_relabel_configs` section at [scrape_configs](https://docs.victoriametrics.com/sd_configs.html#scrape_configs) can be performed by navigating to `http://vmagent:8429/targets` page (`http://victoriametrics:8428/targets` page for single-node VictoriaMetrics) - and clicking the `debug metrics relabeling` link (the link is available only if `--promscrape.dropOriginalLabels=false`) at the target, which must be debugged. + and clicking the `debug metrics relabeling` link at the target, which must be debugged. + The link is unavailable if `vmagent` runs with `-promscrape.dropOriginalLabels` command-line flag. The opened page shows step-by-step results for the actual metric relabeling rules applied to the given target labels. ## Prometheus staleness markers diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 7786fd0fda..5b2db0cbec 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -68,7 +68,7 @@ The following `tip` changes can be tested by building VictoriaMetrics components * BUGFIX: [vmalert](https://docs.victoriametrics.com/vmalert.html): correctly calculate evaluation time for rules. Before, there was a low probability for discrepancy between actual time and rules evaluation time if evaluation interval was lower than the execution time for rules within the group. * BUGFIX: [vmalert](https://docs.victoriametrics.com/vmalert.html): reset evaluation timestamp after modifying group interval. Before, there could have latency on rule evaluation time. * BUGFIX: vmselect: fix timestamp alignment for Prometheus querying API if time argument is less than 10m from the beginning of Unix epoch. -* BUGFIX: [vmagent](https://docs.victoriametrics.com/vmagent.html): hide `debug` links on the `/targets` page if `--promscrape.dropOriginalLabels` is enabled. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/4597). +* BUGFIX: [vmagent](https://docs.victoriametrics.com/vmagent.html): do not show [relabel debug](https://docs.victoriametrics.com/vmagent.html#relabel-debug) links at the `/targets` page when `vmagent` runs with `-promscrape.dropOriginalLabels` command-line flag, since it has no the original labels needed for relabel debug. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/4597). * BUGFIX: [MetricsQL](https://docs.victoriametrics.com/MetricsQL.html): properly parse binary operations with reserved words on the right side such as `foo + (on{bar="baz"})`. Previously such queries could lead to panic. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/4422). * BUGFIX: [Official Grafana dashboards for VictoriaMetrics](https://grafana.com/orgs/victoriametrics): display cache usage for all components on panel `Cache usage % by type` for cluster dashboard. Before, only vmstorage caches were shown. diff --git a/docs/vmagent.md b/docs/vmagent.md index d45f547076..bc25e2ab0f 100644 --- a/docs/vmagent.md +++ b/docs/vmagent.md @@ -474,8 +474,9 @@ with [additional enhancements](#relabeling-enhancements). The relabeling can be This relabeling is used for modifying labels in discovered targets and for dropping unneeded targets. See [relabeling cookbook](https://docs.victoriametrics.com/relabeling.html) for details. - This relabeling can be debugged by clicking the `debug` link (the link is available only if `--promscrape.dropOriginalLabels=false`) at the corresponding target on the `http://vmagent:8429/targets` page + This relabeling can be debugged by clicking the `debug` link at the corresponding target on the `http://vmagent:8429/targets` page or on the `http://vmagent:8429/service-discovery` page. See [these docs](#relabel-debug) for details. + The link is unavailable if `vmagent` runs with `-promscrape.dropOriginalLabels` command-line flag. * At the `scrape_config -> metric_relabel_configs` section in `-promscrape.config` file. This relabeling is used for modifying labels in scraped metrics and for dropping unneeded metrics. @@ -655,19 +656,21 @@ provide the following tools for debugging target-level and metric-level relabeli - Target-level debugging (e.g. `relabel_configs` section at [scrape_configs](https://docs.victoriametrics.com/sd_configs.html#scrape_configs)) can be performed by navigating to `http://vmagent:8429/targets` page (`http://victoriametrics:8428/targets` page for single-node VictoriaMetrics) - and clicking the `debug target relabeling` link (the link is available only if `--promscrape.dropOriginalLabels=false`) at the target, which must be debugged. + and clicking the `debug target relabeling` link at the target, which must be debugged. + The link is unavailable if `vmagent` runs with `-promscrape.dropOriginalLabels` command-line flag. The opened page shows step-by-step results for the actual target relabeling rules applied to the discovered target labels. The page shows also the target URL generated after applying all the relabeling rules. The `http://vmagent:8429/targets` page shows only active targets. If you need to understand why some target is dropped during the relabeling, then navigate to `http://vmagent:8428/service-discovery` page (`http://victoriametrics:8428/service-discovery` for single-node VictoriaMetrics), find the dropped target - and click the `debug` link (the link is available only if `--promscrape.dropOriginalLabels=false`) there. The opened page shows step-by-step results for the actual relabeling rules, - which result to target drop. + and click the `debug` link there. The link is unavailable if `vmagent` runs with `-promscrape.dropOriginalLabels` command-line flag. + The opened page shows step-by-step results for the actual relabeling rules, which result to target drop. - Metric-level debugging (e.g. `metric_relabel_configs` section at [scrape_configs](https://docs.victoriametrics.com/sd_configs.html#scrape_configs) can be performed by navigating to `http://vmagent:8429/targets` page (`http://victoriametrics:8428/targets` page for single-node VictoriaMetrics) - and clicking the `debug metrics relabeling` link (the link is available only if `--promscrape.dropOriginalLabels=false`) at the target, which must be debugged. + and clicking the `debug metrics relabeling` link at the target, which must be debugged. + The link is unavailable if `vmagent` runs with `-promscrape.dropOriginalLabels` command-line flag. The opened page shows step-by-step results for the actual metric relabeling rules applied to the given target labels. ## Prometheus staleness markers diff --git a/lib/promscrape/targetstatus.go b/lib/promscrape/targetstatus.go index 3d02f2a254..de1823364a 100644 --- a/lib/promscrape/targetstatus.go +++ b/lib/promscrape/targetstatus.go @@ -156,11 +156,6 @@ func (tsm *targetStatusMap) getScrapeWorkByTargetID(targetID string) *scrapeWork } func getLabelsID(labels *promutils.Labels) string { - // return empty string if OriginalLabels was dropped - // via flag --promscrape.dropOriginalLabels - if labels == nil { - return "" - } return fmt.Sprintf("%016x", uintptr(unsafe.Pointer(labels))) } @@ -397,6 +392,7 @@ func (tsm *targetStatusMap) getTargetsStatusByJob(filter *requestFilter) *target } dts := droppedTargetsMap.getTargetsList() return &targetsStatusResult{ + hasOriginalLabels: !*dropOriginalLabels, jobTargetsStatuses: jts, droppedTargets: dts, emptyJobs: emptyJobs, @@ -507,6 +503,7 @@ func getRequestFilter(r *http.Request) *requestFilter { } type targetsStatusResult struct { + hasOriginalLabels bool jobTargetsStatuses []*jobTargetsStatuses droppedTargets []droppedTarget emptyJobs []string diff --git a/lib/promscrape/targetstatus.qtpl b/lib/promscrape/targetstatus.qtpl index c822fc2533..97f822addf 100644 --- a/lib/promscrape/targetstatus.qtpl +++ b/lib/promscrape/targetstatus.qtpl @@ -180,7 +180,7 @@ <div class="row mt-4"> <div class="col-12"> {% for i, jts := range tsr.jobTargetsStatuses %} - {%= scrapeJobTargets(i, jts) %} + {%= scrapeJobTargets(i, jts, tsr.hasOriginalLabels) %} {% endfor %} {% for i, jobName := range tsr.emptyJobs %} {% code @@ -189,13 +189,13 @@ jobName: jobName, } %} - {%= scrapeJobTargets(num, jts) %} + {%= scrapeJobTargets(num, jts, tsr.hasOriginalLabels) %} {% endfor %} </div> </div> {% endfunc %} -{% func scrapeJobTargets(num int, jts *jobTargetsStatuses) %} +{% func scrapeJobTargets(num int, jts *jobTargetsStatuses, hasOriginalLabels bool) %} <div class="row mb-4"> <div class="col-12"> <h4> @@ -209,7 +209,9 @@ <th scope="col">Endpoint</th> <th scope="col">State</th> <th scope="col" title="target labels">Labels</th> - <th scope="col" title="debug relabeling">Debug relabeling</th> + {% if hasOriginalLabels %} + <th scope="col" title="debug relabeling">Debug relabeling</th> + {% endif %} <th scope="col" title="total scrapes">Scrapes</th> <th scope="col" title="total scrape errors">Errors</th> <th scope="col" title="the time of the last scrape">Last Scrape</th> @@ -222,13 +224,20 @@ {% for _, ts := range jts.targetsStatus %} {% code endpoint := ts.sw.Config.ScrapeURL + originalLabels := ts.sw.Config.OriginalLabels + // The target is uniquely identified by a pointer to its original labels. - targetID := getLabelsID(ts.sw.Config.OriginalLabels) + targetID := getLabelsID(originalLabels) lastScrapeDuration := ts.getDurationFromLastScrape() %} <tr {% if !ts.up %}{%space%}class="alert alert-danger" role="alert" {% endif %}> <td class="endpoint"> - {%= endpointContent(endpoint, targetID)%} + <a href="{%s endpoint %}" target="_blank">{%s endpoint %}</a> + {% if hasOriginalLabels %} + {% space %} + (<a href="target_response?id={%s targetID %}" target="_blank" + title="click to fetch target response on behalf of the scraper">response</a>) + {% endif %} </td> <td> {% if ts.up %} @@ -238,11 +247,26 @@ {% endif %} </td> <td class="labels"> - {%= labelsContent(targetID, ts.sw.Config) %} - </td> - <td> - {%= debugRelabelingContent(targetID)%} + <div + {% if hasOriginalLabels %} + {% space %}title="click to show original labels" + onclick="document.getElementById('original-labels-{%s targetID %}').style.display='block'" + {% endif %} + > + {%= formatLabels(ts.sw.Config.Labels) %} + </div> + {% if hasOriginalLabels %} + <div style="display:none" id="original-labels-{%s targetID %}"> + {%= formatLabels(originalLabels) %} + </div> + {% endif %} </td> + {% if hasOriginalLabels %} + <td> + <a href="target-relabel-debug?id={%s targetID %}" target="_blank">target</a>{% space %} + <a href="metric-relabel-debug?id={%s targetID %}" target="_blank">metrics</a> + </td> + {% endif %} <td>{%d ts.scrapesTotal %}</td> <td>{%d ts.scrapesFailed %}</td> <td> @@ -264,6 +288,11 @@ {% endfunc %} {% func discoveredTargets(tsr *targetsStatusResult) %} + {% if !tsr.hasOriginalLabels %} + Discovered targets are unavailable when -promscrape.dropOriginalLabels command-line flag is set + {% return %} + {% endif %} + {% code tljs := tsr.getTargetLabelsByJob() %} <div class="row mt-4"> <div class="col-12"> @@ -317,7 +346,8 @@ {%= formatLabels(t.labels) %} </td> <td> - {%= discoveredJobsRelabelContent(t.originalLabels) %} + {% code targetID := getLabelsID(t.originalLabels) %} + <a href="target-relabel-debug?id={%s targetID %}" target="_blank">debug</a> </td> </tr> {% endfor %} @@ -370,37 +400,3 @@ {% endfunc %} {% endstripspace %} - -{% func endpointContent(endpoint, targetID string) %} -<a href="{%s endpoint %}" target="_blank">{%s endpoint %}</a>{% space %} -{% if targetID != "" %} -(<a href="target_response?id={%s targetID %}" target="_blank" - title="click to fetch target response on behalf of the scraper">response</a>) -{% endif %} -{% endfunc %} - -{% func labelsContent(targetID string, config *ScrapeWork) %} -<div title="click to show original labels" - {% if targetID != "" %}onclick="document.getElementById('original-labels-{%s targetID %}').style.display='block'" {% endif %}> - {%= formatLabels(config.Labels) %} -</div> -{% if config.OriginalLabels != nil %} -<div style="display:none" id="original-labels-{%s targetID %}"> - {%= formatLabels(config.OriginalLabels) %} -</div> -{% endif %} -{% endfunc %} - -{% func debugRelabelingContent(targetID string) %} -{% if targetID != "" %} -<a href="target-relabel-debug?id={%s targetID %}" target="_blank">target</a>{% space %} -<a href="metric-relabel-debug?id={%s targetID %}" target="_blank">metrics</a> -{% endif %} -{% endfunc %} - -{% func discoveredJobsRelabelContent(originalLabels *promutils.Labels) %} -{% if originalLabels != nil %} -{% code targetID := getLabelsID(originalLabels) %} -<a href="target-relabel-debug?id={%s targetID %}" target="_blank">debug</a> -{% endif %} -{% endfunc %} diff --git a/lib/promscrape/targetstatus.qtpl.go b/lib/promscrape/targetstatus.qtpl.go index 43846fa51d..d59f5afb24 100644 --- a/lib/promscrape/targetstatus.qtpl.go +++ b/lib/promscrape/targetstatus.qtpl.go @@ -495,7 +495,7 @@ func streamscrapeTargets(qw422016 *qt422016.Writer, tsr *targetsStatusResult) { //line lib/promscrape/targetstatus.qtpl:182 for i, jts := range tsr.jobTargetsStatuses { //line lib/promscrape/targetstatus.qtpl:183 - streamscrapeJobTargets(qw422016, i, jts) + streamscrapeJobTargets(qw422016, i, jts, tsr.hasOriginalLabels) //line lib/promscrape/targetstatus.qtpl:184 } //line lib/promscrape/targetstatus.qtpl:185 @@ -507,7 +507,7 @@ func streamscrapeTargets(qw422016 *qt422016.Writer, tsr *targetsStatusResult) { } //line lib/promscrape/targetstatus.qtpl:192 - streamscrapeJobTargets(qw422016, num, jts) + streamscrapeJobTargets(qw422016, num, jts, tsr.hasOriginalLabels) //line lib/promscrape/targetstatus.qtpl:193 } //line lib/promscrape/targetstatus.qtpl:193 @@ -542,7 +542,7 @@ func scrapeTargets(tsr *targetsStatusResult) string { } //line lib/promscrape/targetstatus.qtpl:198 -func streamscrapeJobTargets(qw422016 *qt422016.Writer, num int, jts *jobTargetsStatuses) { +func streamscrapeJobTargets(qw422016 *qt422016.Writer, num int, jts *jobTargetsStatuses, hasOriginalLabels bool) { //line lib/promscrape/targetstatus.qtpl:198 qw422016.N().S(`<div class="row mb-4"><div class="col-12"><h4><span class="me-2">`) //line lib/promscrape/targetstatus.qtpl:202 @@ -568,325 +568,412 @@ func streamscrapeJobTargets(qw422016 *qt422016.Writer, num int, jts *jobTargetsS //line lib/promscrape/targetstatus.qtpl:205 qw422016.N().D(num) //line lib/promscrape/targetstatus.qtpl:205 - qw422016.N().S(`" class="scrape-job table-responsive"><table class="table table-striped table-hover table-bordered table-sm"><thead><tr><th scope="col">Endpoint</th><th scope="col">State</th><th scope="col" title="target labels">Labels</th><th scope="col" title="debug relabeling">Debug relabeling</th><th scope="col" title="total scrapes">Scrapes</th><th scope="col" title="total scrape errors">Errors</th><th scope="col" title="the time of the last scrape">Last Scrape</th><th scope="col" title="the duration of the last scrape">Duration</th><th scope="col" title="the number of metrics scraped during the last scrape">Samples</th><th scope="col" title="error from the last scrape (if any)">Last error</th></tr></thead><tbody>`) -//line lib/promscrape/targetstatus.qtpl:222 - for _, ts := range jts.targetsStatus { + qw422016.N().S(`" class="scrape-job table-responsive"><table class="table table-striped table-hover table-bordered table-sm"><thead><tr><th scope="col">Endpoint</th><th scope="col">State</th><th scope="col" title="target labels">Labels</th>`) +//line lib/promscrape/targetstatus.qtpl:212 + if hasOriginalLabels { +//line lib/promscrape/targetstatus.qtpl:212 + qw422016.N().S(`<th scope="col" title="debug relabeling">Debug relabeling</th>`) +//line lib/promscrape/targetstatus.qtpl:214 + } +//line lib/promscrape/targetstatus.qtpl:214 + qw422016.N().S(`<th scope="col" title="total scrapes">Scrapes</th><th scope="col" title="total scrape errors">Errors</th><th scope="col" title="the time of the last scrape">Last Scrape</th><th scope="col" title="the duration of the last scrape">Duration</th><th scope="col" title="the number of metrics scraped during the last scrape">Samples</th><th scope="col" title="error from the last scrape (if any)">Last error</th></tr></thead><tbody>`) //line lib/promscrape/targetstatus.qtpl:224 + for _, ts := range jts.targetsStatus { +//line lib/promscrape/targetstatus.qtpl:226 endpoint := ts.sw.Config.ScrapeURL + originalLabels := ts.sw.Config.OriginalLabels + // The target is uniquely identified by a pointer to its original labels. - targetID := getLabelsID(ts.sw.Config.OriginalLabels) + targetID := getLabelsID(originalLabels) lastScrapeDuration := ts.getDurationFromLastScrape() -//line lib/promscrape/targetstatus.qtpl:228 +//line lib/promscrape/targetstatus.qtpl:232 qw422016.N().S(`<tr`) -//line lib/promscrape/targetstatus.qtpl:229 +//line lib/promscrape/targetstatus.qtpl:233 if !ts.up { -//line lib/promscrape/targetstatus.qtpl:229 +//line lib/promscrape/targetstatus.qtpl:233 qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:229 +//line lib/promscrape/targetstatus.qtpl:233 qw422016.N().S(`class="alert alert-danger" role="alert"`) -//line lib/promscrape/targetstatus.qtpl:229 +//line lib/promscrape/targetstatus.qtpl:233 } -//line lib/promscrape/targetstatus.qtpl:229 - qw422016.N().S(`><td class="endpoint">`) -//line lib/promscrape/targetstatus.qtpl:231 - streamendpointContent(qw422016, endpoint, targetID) -//line lib/promscrape/targetstatus.qtpl:231 +//line lib/promscrape/targetstatus.qtpl:233 + qw422016.N().S(`><td class="endpoint"><a href="`) +//line lib/promscrape/targetstatus.qtpl:235 + qw422016.E().S(endpoint) +//line lib/promscrape/targetstatus.qtpl:235 + qw422016.N().S(`" target="_blank">`) +//line lib/promscrape/targetstatus.qtpl:235 + qw422016.E().S(endpoint) +//line lib/promscrape/targetstatus.qtpl:235 + qw422016.N().S(`</a>`) +//line lib/promscrape/targetstatus.qtpl:236 + if hasOriginalLabels { +//line lib/promscrape/targetstatus.qtpl:237 + qw422016.N().S(` `) +//line lib/promscrape/targetstatus.qtpl:237 + qw422016.N().S(`(<a href="target_response?id=`) +//line lib/promscrape/targetstatus.qtpl:238 + qw422016.E().S(targetID) +//line lib/promscrape/targetstatus.qtpl:238 + qw422016.N().S(`" target="_blank"title="click to fetch target response on behalf of the scraper">response</a>)`) +//line lib/promscrape/targetstatus.qtpl:240 + } +//line lib/promscrape/targetstatus.qtpl:240 qw422016.N().S(`</td><td>`) -//line lib/promscrape/targetstatus.qtpl:234 +//line lib/promscrape/targetstatus.qtpl:243 if ts.up { -//line lib/promscrape/targetstatus.qtpl:234 +//line lib/promscrape/targetstatus.qtpl:243 qw422016.N().S(`<span class="badge bg-success">UP</span>`) -//line lib/promscrape/targetstatus.qtpl:236 +//line lib/promscrape/targetstatus.qtpl:245 } else { -//line lib/promscrape/targetstatus.qtpl:236 +//line lib/promscrape/targetstatus.qtpl:245 qw422016.N().S(`<span class="badge bg-danger">DOWN</span>`) -//line lib/promscrape/targetstatus.qtpl:238 - } -//line lib/promscrape/targetstatus.qtpl:238 - qw422016.N().S(`</td><td class="labels">`) -//line lib/promscrape/targetstatus.qtpl:241 - streamlabelsContent(qw422016, targetID, ts.sw.Config) -//line lib/promscrape/targetstatus.qtpl:241 - qw422016.N().S(`</td><td>`) -//line lib/promscrape/targetstatus.qtpl:244 - streamdebugRelabelingContent(qw422016, targetID) -//line lib/promscrape/targetstatus.qtpl:244 - qw422016.N().S(`</td><td>`) -//line lib/promscrape/targetstatus.qtpl:246 - qw422016.N().D(ts.scrapesTotal) -//line lib/promscrape/targetstatus.qtpl:246 - qw422016.N().S(`</td><td>`) //line lib/promscrape/targetstatus.qtpl:247 - qw422016.N().D(ts.scrapesFailed) + } //line lib/promscrape/targetstatus.qtpl:247 - qw422016.N().S(`</td><td>`) -//line lib/promscrape/targetstatus.qtpl:249 - if lastScrapeDuration < 365*24*time.Hour { -//line lib/promscrape/targetstatus.qtpl:250 - qw422016.N().D(int(lastScrapeDuration.Milliseconds())) -//line lib/promscrape/targetstatus.qtpl:250 - qw422016.N().S(`ms ago`) + qw422016.N().S(`</td><td class="labels"><div`) //line lib/promscrape/targetstatus.qtpl:251 - } else { -//line lib/promscrape/targetstatus.qtpl:251 - qw422016.N().S(`none`) + if hasOriginalLabels { +//line lib/promscrape/targetstatus.qtpl:252 + qw422016.N().S(` `) +//line lib/promscrape/targetstatus.qtpl:252 + qw422016.N().S(`title="click to show original labels"onclick="document.getElementById('original-labels-`) //line lib/promscrape/targetstatus.qtpl:253 - } + qw422016.E().S(targetID) //line lib/promscrape/targetstatus.qtpl:253 - qw422016.N().S(`<td>`) + qw422016.N().S(`').style.display='block'"`) //line lib/promscrape/targetstatus.qtpl:254 - qw422016.N().D(int(ts.scrapeDuration)) -//line lib/promscrape/targetstatus.qtpl:254 - qw422016.N().S(`ms</td><td>`) -//line lib/promscrape/targetstatus.qtpl:255 - qw422016.N().D(ts.samplesScraped) -//line lib/promscrape/targetstatus.qtpl:255 - qw422016.N().S(`</td><td>`) -//line lib/promscrape/targetstatus.qtpl:256 - if ts.err != nil { -//line lib/promscrape/targetstatus.qtpl:256 - qw422016.E().S(ts.err.Error()) -//line lib/promscrape/targetstatus.qtpl:256 } +//line lib/promscrape/targetstatus.qtpl:254 + qw422016.N().S(`>`) //line lib/promscrape/targetstatus.qtpl:256 - qw422016.N().S(`</td></tr>`) + streamformatLabels(qw422016, ts.sw.Config.Labels) +//line lib/promscrape/targetstatus.qtpl:256 + qw422016.N().S(`</div>`) //line lib/promscrape/targetstatus.qtpl:258 - } + if hasOriginalLabels { //line lib/promscrape/targetstatus.qtpl:258 - qw422016.N().S(`</tbody></table></div></div></div>`) + qw422016.N().S(`<div style="display:none" id="original-labels-`) +//line lib/promscrape/targetstatus.qtpl:259 + qw422016.E().S(targetID) +//line lib/promscrape/targetstatus.qtpl:259 + qw422016.N().S(`">`) +//line lib/promscrape/targetstatus.qtpl:260 + streamformatLabels(qw422016, originalLabels) +//line lib/promscrape/targetstatus.qtpl:260 + qw422016.N().S(`</div>`) +//line lib/promscrape/targetstatus.qtpl:262 + } +//line lib/promscrape/targetstatus.qtpl:262 + qw422016.N().S(`</td>`) //line lib/promscrape/targetstatus.qtpl:264 -} - + if hasOriginalLabels { //line lib/promscrape/targetstatus.qtpl:264 -func writescrapeJobTargets(qq422016 qtio422016.Writer, num int, jts *jobTargetsStatuses) { -//line lib/promscrape/targetstatus.qtpl:264 - qw422016 := qt422016.AcquireWriter(qq422016) -//line lib/promscrape/targetstatus.qtpl:264 - streamscrapeJobTargets(qw422016, num, jts) -//line lib/promscrape/targetstatus.qtpl:264 - qt422016.ReleaseWriter(qw422016) -//line lib/promscrape/targetstatus.qtpl:264 -} - -//line lib/promscrape/targetstatus.qtpl:264 -func scrapeJobTargets(num int, jts *jobTargetsStatuses) string { -//line lib/promscrape/targetstatus.qtpl:264 - qb422016 := qt422016.AcquireByteBuffer() -//line lib/promscrape/targetstatus.qtpl:264 - writescrapeJobTargets(qb422016, num, jts) -//line lib/promscrape/targetstatus.qtpl:264 - qs422016 := string(qb422016.B) -//line lib/promscrape/targetstatus.qtpl:264 - qt422016.ReleaseByteBuffer(qb422016) -//line lib/promscrape/targetstatus.qtpl:264 - return qs422016 -//line lib/promscrape/targetstatus.qtpl:264 -} - + qw422016.N().S(`<td><a href="target-relabel-debug?id=`) //line lib/promscrape/targetstatus.qtpl:266 -func streamdiscoveredTargets(qw422016 *qt422016.Writer, tsr *targetsStatusResult) { + qw422016.E().S(targetID) +//line lib/promscrape/targetstatus.qtpl:266 + qw422016.N().S(`" target="_blank">target</a>`) +//line lib/promscrape/targetstatus.qtpl:266 + qw422016.N().S(` `) +//line lib/promscrape/targetstatus.qtpl:266 + qw422016.N().S(`<a href="metric-relabel-debug?id=`) //line lib/promscrape/targetstatus.qtpl:267 + qw422016.E().S(targetID) +//line lib/promscrape/targetstatus.qtpl:267 + qw422016.N().S(`" target="_blank">metrics</a></td>`) +//line lib/promscrape/targetstatus.qtpl:269 + } +//line lib/promscrape/targetstatus.qtpl:269 + qw422016.N().S(`<td>`) +//line lib/promscrape/targetstatus.qtpl:270 + qw422016.N().D(ts.scrapesTotal) +//line lib/promscrape/targetstatus.qtpl:270 + qw422016.N().S(`</td><td>`) +//line lib/promscrape/targetstatus.qtpl:271 + qw422016.N().D(ts.scrapesFailed) +//line lib/promscrape/targetstatus.qtpl:271 + qw422016.N().S(`</td><td>`) +//line lib/promscrape/targetstatus.qtpl:273 + if lastScrapeDuration < 365*24*time.Hour { +//line lib/promscrape/targetstatus.qtpl:274 + qw422016.N().D(int(lastScrapeDuration.Milliseconds())) +//line lib/promscrape/targetstatus.qtpl:274 + qw422016.N().S(`ms ago`) +//line lib/promscrape/targetstatus.qtpl:275 + } else { +//line lib/promscrape/targetstatus.qtpl:275 + qw422016.N().S(`none`) +//line lib/promscrape/targetstatus.qtpl:277 + } +//line lib/promscrape/targetstatus.qtpl:277 + qw422016.N().S(`<td>`) +//line lib/promscrape/targetstatus.qtpl:278 + qw422016.N().D(int(ts.scrapeDuration)) +//line lib/promscrape/targetstatus.qtpl:278 + qw422016.N().S(`ms</td><td>`) +//line lib/promscrape/targetstatus.qtpl:279 + qw422016.N().D(ts.samplesScraped) +//line lib/promscrape/targetstatus.qtpl:279 + qw422016.N().S(`</td><td>`) +//line lib/promscrape/targetstatus.qtpl:280 + if ts.err != nil { +//line lib/promscrape/targetstatus.qtpl:280 + qw422016.E().S(ts.err.Error()) +//line lib/promscrape/targetstatus.qtpl:280 + } +//line lib/promscrape/targetstatus.qtpl:280 + qw422016.N().S(`</td></tr>`) +//line lib/promscrape/targetstatus.qtpl:282 + } +//line lib/promscrape/targetstatus.qtpl:282 + qw422016.N().S(`</tbody></table></div></div></div>`) +//line lib/promscrape/targetstatus.qtpl:288 +} + +//line lib/promscrape/targetstatus.qtpl:288 +func writescrapeJobTargets(qq422016 qtio422016.Writer, num int, jts *jobTargetsStatuses, hasOriginalLabels bool) { +//line lib/promscrape/targetstatus.qtpl:288 + qw422016 := qt422016.AcquireWriter(qq422016) +//line lib/promscrape/targetstatus.qtpl:288 + streamscrapeJobTargets(qw422016, num, jts, hasOriginalLabels) +//line lib/promscrape/targetstatus.qtpl:288 + qt422016.ReleaseWriter(qw422016) +//line lib/promscrape/targetstatus.qtpl:288 +} + +//line lib/promscrape/targetstatus.qtpl:288 +func scrapeJobTargets(num int, jts *jobTargetsStatuses, hasOriginalLabels bool) string { +//line lib/promscrape/targetstatus.qtpl:288 + qb422016 := qt422016.AcquireByteBuffer() +//line lib/promscrape/targetstatus.qtpl:288 + writescrapeJobTargets(qb422016, num, jts, hasOriginalLabels) +//line lib/promscrape/targetstatus.qtpl:288 + qs422016 := string(qb422016.B) +//line lib/promscrape/targetstatus.qtpl:288 + qt422016.ReleaseByteBuffer(qb422016) +//line lib/promscrape/targetstatus.qtpl:288 + return qs422016 +//line lib/promscrape/targetstatus.qtpl:288 +} + +//line lib/promscrape/targetstatus.qtpl:290 +func streamdiscoveredTargets(qw422016 *qt422016.Writer, tsr *targetsStatusResult) { +//line lib/promscrape/targetstatus.qtpl:291 + if !tsr.hasOriginalLabels { +//line lib/promscrape/targetstatus.qtpl:291 + qw422016.N().S(`Discovered targets are unavailable when -promscrape.dropOriginalLabels command-line flag is set`) +//line lib/promscrape/targetstatus.qtpl:293 + return +//line lib/promscrape/targetstatus.qtpl:294 + } +//line lib/promscrape/targetstatus.qtpl:296 tljs := tsr.getTargetLabelsByJob() -//line lib/promscrape/targetstatus.qtpl:267 +//line lib/promscrape/targetstatus.qtpl:296 qw422016.N().S(`<div class="row mt-4"><div class="col-12">`) -//line lib/promscrape/targetstatus.qtpl:270 +//line lib/promscrape/targetstatus.qtpl:299 for i, tlj := range tljs { -//line lib/promscrape/targetstatus.qtpl:271 +//line lib/promscrape/targetstatus.qtpl:300 streamdiscoveredJobTargets(qw422016, i, tlj) -//line lib/promscrape/targetstatus.qtpl:272 - } -//line lib/promscrape/targetstatus.qtpl:272 - qw422016.N().S(`</div></div>`) -//line lib/promscrape/targetstatus.qtpl:275 -} - -//line lib/promscrape/targetstatus.qtpl:275 -func writediscoveredTargets(qq422016 qtio422016.Writer, tsr *targetsStatusResult) { -//line lib/promscrape/targetstatus.qtpl:275 - qw422016 := qt422016.AcquireWriter(qq422016) -//line lib/promscrape/targetstatus.qtpl:275 - streamdiscoveredTargets(qw422016, tsr) -//line lib/promscrape/targetstatus.qtpl:275 - qt422016.ReleaseWriter(qw422016) -//line lib/promscrape/targetstatus.qtpl:275 -} - -//line lib/promscrape/targetstatus.qtpl:275 -func discoveredTargets(tsr *targetsStatusResult) string { -//line lib/promscrape/targetstatus.qtpl:275 - qb422016 := qt422016.AcquireByteBuffer() -//line lib/promscrape/targetstatus.qtpl:275 - writediscoveredTargets(qb422016, tsr) -//line lib/promscrape/targetstatus.qtpl:275 - qs422016 := string(qb422016.B) -//line lib/promscrape/targetstatus.qtpl:275 - qt422016.ReleaseByteBuffer(qb422016) -//line lib/promscrape/targetstatus.qtpl:275 - return qs422016 -//line lib/promscrape/targetstatus.qtpl:275 -} - -//line lib/promscrape/targetstatus.qtpl:277 -func streamdiscoveredJobTargets(qw422016 *qt422016.Writer, num int, tlj *targetLabelsByJob) { -//line lib/promscrape/targetstatus.qtpl:277 - qw422016.N().S(`<h4><span class="me-2">`) -//line lib/promscrape/targetstatus.qtpl:279 - qw422016.E().S(tlj.jobName) -//line lib/promscrape/targetstatus.qtpl:279 - qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:279 - qw422016.N().S(`(`) -//line lib/promscrape/targetstatus.qtpl:279 - qw422016.N().D(tlj.activeTargets) -//line lib/promscrape/targetstatus.qtpl:279 - qw422016.N().S(`/`) -//line lib/promscrape/targetstatus.qtpl:279 - qw422016.N().D(tlj.activeTargets + tlj.droppedTargets) -//line lib/promscrape/targetstatus.qtpl:279 - qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:279 - qw422016.N().S(`active)</span>`) -//line lib/promscrape/targetstatus.qtpl:280 - streamshowHideScrapeJobButtons(qw422016, num) -//line lib/promscrape/targetstatus.qtpl:280 - qw422016.N().S(`</h4><div id="scrape-job-`) -//line lib/promscrape/targetstatus.qtpl:282 - qw422016.N().D(num) -//line lib/promscrape/targetstatus.qtpl:282 - qw422016.N().S(`" class="scrape-job table-responsive"><table class="table table-striped table-hover table-bordered table-sm"><thead><tr><th scope="col" style="width: 5%">Status</th><th scope="col" style="width: 60%">Discovered Labels</th><th scope="col" style="width: 30%">Target Labels</th><th scope="col" stile="width: 5%">Debug relabeling</a></tr></thead><tbody>`) -//line lib/promscrape/targetstatus.qtpl:293 - for _, t := range tlj.targets { -//line lib/promscrape/targetstatus.qtpl:293 - qw422016.N().S(`<tr`) -//line lib/promscrape/targetstatus.qtpl:295 - if !t.up { -//line lib/promscrape/targetstatus.qtpl:296 - qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:296 - qw422016.N().S(`role="alert"`) -//line lib/promscrape/targetstatus.qtpl:296 - qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:297 - if t.labels.Len() > 0 { -//line lib/promscrape/targetstatus.qtpl:297 - qw422016.N().S(`class="alert alert-danger"`) -//line lib/promscrape/targetstatus.qtpl:299 - } else { -//line lib/promscrape/targetstatus.qtpl:299 - qw422016.N().S(`class="alert alert-warning"`) //line lib/promscrape/targetstatus.qtpl:301 - } -//line lib/promscrape/targetstatus.qtpl:302 - } -//line lib/promscrape/targetstatus.qtpl:302 - qw422016.N().S(`><td>`) -//line lib/promscrape/targetstatus.qtpl:305 - if t.up { -//line lib/promscrape/targetstatus.qtpl:305 - qw422016.N().S(`<span class="badge bg-success">UP</span>`) -//line lib/promscrape/targetstatus.qtpl:307 - } else if t.labels.Len() > 0 { -//line lib/promscrape/targetstatus.qtpl:307 - qw422016.N().S(`<span class="badge bg-danger">DOWN</span>`) -//line lib/promscrape/targetstatus.qtpl:309 - } else { -//line lib/promscrape/targetstatus.qtpl:309 - qw422016.N().S(`<span class="badge bg-warning">DROPPED</span>`) -//line lib/promscrape/targetstatus.qtpl:311 - } -//line lib/promscrape/targetstatus.qtpl:311 - qw422016.N().S(`</td><td class="labels">`) -//line lib/promscrape/targetstatus.qtpl:314 - streamformatLabels(qw422016, t.originalLabels) -//line lib/promscrape/targetstatus.qtpl:314 - qw422016.N().S(`</td><td class="labels">`) -//line lib/promscrape/targetstatus.qtpl:317 - streamformatLabels(qw422016, t.labels) -//line lib/promscrape/targetstatus.qtpl:317 - qw422016.N().S(`</td><td>`) -//line lib/promscrape/targetstatus.qtpl:320 - streamdiscoveredJobsRelabelContent(qw422016, t.originalLabels) -//line lib/promscrape/targetstatus.qtpl:320 - qw422016.N().S(`</td></tr>`) -//line lib/promscrape/targetstatus.qtpl:323 } -//line lib/promscrape/targetstatus.qtpl:323 - qw422016.N().S(`</tbody></table></div>`) -//line lib/promscrape/targetstatus.qtpl:327 +//line lib/promscrape/targetstatus.qtpl:301 + qw422016.N().S(`</div></div>`) +//line lib/promscrape/targetstatus.qtpl:304 } -//line lib/promscrape/targetstatus.qtpl:327 -func writediscoveredJobTargets(qq422016 qtio422016.Writer, num int, tlj *targetLabelsByJob) { -//line lib/promscrape/targetstatus.qtpl:327 +//line lib/promscrape/targetstatus.qtpl:304 +func writediscoveredTargets(qq422016 qtio422016.Writer, tsr *targetsStatusResult) { +//line lib/promscrape/targetstatus.qtpl:304 qw422016 := qt422016.AcquireWriter(qq422016) -//line lib/promscrape/targetstatus.qtpl:327 - streamdiscoveredJobTargets(qw422016, num, tlj) -//line lib/promscrape/targetstatus.qtpl:327 +//line lib/promscrape/targetstatus.qtpl:304 + streamdiscoveredTargets(qw422016, tsr) +//line lib/promscrape/targetstatus.qtpl:304 qt422016.ReleaseWriter(qw422016) -//line lib/promscrape/targetstatus.qtpl:327 +//line lib/promscrape/targetstatus.qtpl:304 } -//line lib/promscrape/targetstatus.qtpl:327 -func discoveredJobTargets(num int, tlj *targetLabelsByJob) string { -//line lib/promscrape/targetstatus.qtpl:327 +//line lib/promscrape/targetstatus.qtpl:304 +func discoveredTargets(tsr *targetsStatusResult) string { +//line lib/promscrape/targetstatus.qtpl:304 qb422016 := qt422016.AcquireByteBuffer() -//line lib/promscrape/targetstatus.qtpl:327 - writediscoveredJobTargets(qb422016, num, tlj) -//line lib/promscrape/targetstatus.qtpl:327 +//line lib/promscrape/targetstatus.qtpl:304 + writediscoveredTargets(qb422016, tsr) +//line lib/promscrape/targetstatus.qtpl:304 qs422016 := string(qb422016.B) -//line lib/promscrape/targetstatus.qtpl:327 +//line lib/promscrape/targetstatus.qtpl:304 qt422016.ReleaseByteBuffer(qb422016) -//line lib/promscrape/targetstatus.qtpl:327 +//line lib/promscrape/targetstatus.qtpl:304 return qs422016 -//line lib/promscrape/targetstatus.qtpl:327 +//line lib/promscrape/targetstatus.qtpl:304 } -//line lib/promscrape/targetstatus.qtpl:329 -func streamshowHideScrapeJobButtons(qw422016 *qt422016.Writer, num int) { -//line lib/promscrape/targetstatus.qtpl:329 - qw422016.N().S(`<button type="button" class="btn btn-primary btn-sm me-1"onclick="document.getElementById('scrape-job-`) -//line lib/promscrape/targetstatus.qtpl:331 - qw422016.N().D(num) -//line lib/promscrape/targetstatus.qtpl:331 - qw422016.N().S(`').style.display='none'">collapse</button><button type="button" class="btn btn-secondary btn-sm me-1"onclick="document.getElementById('scrape-job-`) -//line lib/promscrape/targetstatus.qtpl:335 - qw422016.N().D(num) -//line lib/promscrape/targetstatus.qtpl:335 - qw422016.N().S(`').style.display='block'">expand</button>`) -//line lib/promscrape/targetstatus.qtpl:338 -} - -//line lib/promscrape/targetstatus.qtpl:338 -func writeshowHideScrapeJobButtons(qq422016 qtio422016.Writer, num int) { -//line lib/promscrape/targetstatus.qtpl:338 - qw422016 := qt422016.AcquireWriter(qq422016) -//line lib/promscrape/targetstatus.qtpl:338 +//line lib/promscrape/targetstatus.qtpl:306 +func streamdiscoveredJobTargets(qw422016 *qt422016.Writer, num int, tlj *targetLabelsByJob) { +//line lib/promscrape/targetstatus.qtpl:306 + qw422016.N().S(`<h4><span class="me-2">`) +//line lib/promscrape/targetstatus.qtpl:308 + qw422016.E().S(tlj.jobName) +//line lib/promscrape/targetstatus.qtpl:308 + qw422016.N().S(` `) +//line lib/promscrape/targetstatus.qtpl:308 + qw422016.N().S(`(`) +//line lib/promscrape/targetstatus.qtpl:308 + qw422016.N().D(tlj.activeTargets) +//line lib/promscrape/targetstatus.qtpl:308 + qw422016.N().S(`/`) +//line lib/promscrape/targetstatus.qtpl:308 + qw422016.N().D(tlj.activeTargets + tlj.droppedTargets) +//line lib/promscrape/targetstatus.qtpl:308 + qw422016.N().S(` `) +//line lib/promscrape/targetstatus.qtpl:308 + qw422016.N().S(`active)</span>`) +//line lib/promscrape/targetstatus.qtpl:309 streamshowHideScrapeJobButtons(qw422016, num) +//line lib/promscrape/targetstatus.qtpl:309 + qw422016.N().S(`</h4><div id="scrape-job-`) +//line lib/promscrape/targetstatus.qtpl:311 + qw422016.N().D(num) +//line lib/promscrape/targetstatus.qtpl:311 + qw422016.N().S(`" class="scrape-job table-responsive"><table class="table table-striped table-hover table-bordered table-sm"><thead><tr><th scope="col" style="width: 5%">Status</th><th scope="col" style="width: 60%">Discovered Labels</th><th scope="col" style="width: 30%">Target Labels</th><th scope="col" stile="width: 5%">Debug relabeling</a></tr></thead><tbody>`) +//line lib/promscrape/targetstatus.qtpl:322 + for _, t := range tlj.targets { +//line lib/promscrape/targetstatus.qtpl:322 + qw422016.N().S(`<tr`) +//line lib/promscrape/targetstatus.qtpl:324 + if !t.up { +//line lib/promscrape/targetstatus.qtpl:325 + qw422016.N().S(` `) +//line lib/promscrape/targetstatus.qtpl:325 + qw422016.N().S(`role="alert"`) +//line lib/promscrape/targetstatus.qtpl:325 + qw422016.N().S(` `) +//line lib/promscrape/targetstatus.qtpl:326 + if t.labels.Len() > 0 { +//line lib/promscrape/targetstatus.qtpl:326 + qw422016.N().S(`class="alert alert-danger"`) +//line lib/promscrape/targetstatus.qtpl:328 + } else { +//line lib/promscrape/targetstatus.qtpl:328 + qw422016.N().S(`class="alert alert-warning"`) +//line lib/promscrape/targetstatus.qtpl:330 + } +//line lib/promscrape/targetstatus.qtpl:331 + } +//line lib/promscrape/targetstatus.qtpl:331 + qw422016.N().S(`><td>`) +//line lib/promscrape/targetstatus.qtpl:334 + if t.up { +//line lib/promscrape/targetstatus.qtpl:334 + qw422016.N().S(`<span class="badge bg-success">UP</span>`) +//line lib/promscrape/targetstatus.qtpl:336 + } else if t.labels.Len() > 0 { +//line lib/promscrape/targetstatus.qtpl:336 + qw422016.N().S(`<span class="badge bg-danger">DOWN</span>`) //line lib/promscrape/targetstatus.qtpl:338 - qt422016.ReleaseWriter(qw422016) + } else { //line lib/promscrape/targetstatus.qtpl:338 -} - -//line lib/promscrape/targetstatus.qtpl:338 -func showHideScrapeJobButtons(num int) string { -//line lib/promscrape/targetstatus.qtpl:338 - qb422016 := qt422016.AcquireByteBuffer() -//line lib/promscrape/targetstatus.qtpl:338 - writeshowHideScrapeJobButtons(qb422016, num) -//line lib/promscrape/targetstatus.qtpl:338 - qs422016 := string(qb422016.B) -//line lib/promscrape/targetstatus.qtpl:338 - qt422016.ReleaseByteBuffer(qb422016) -//line lib/promscrape/targetstatus.qtpl:338 - return qs422016 -//line lib/promscrape/targetstatus.qtpl:338 -} - + qw422016.N().S(`<span class="badge bg-warning">DROPPED</span>`) //line lib/promscrape/targetstatus.qtpl:340 + } +//line lib/promscrape/targetstatus.qtpl:340 + qw422016.N().S(`</td><td class="labels">`) +//line lib/promscrape/targetstatus.qtpl:343 + streamformatLabels(qw422016, t.originalLabels) +//line lib/promscrape/targetstatus.qtpl:343 + qw422016.N().S(`</td><td class="labels">`) +//line lib/promscrape/targetstatus.qtpl:346 + streamformatLabels(qw422016, t.labels) +//line lib/promscrape/targetstatus.qtpl:346 + qw422016.N().S(`</td><td>`) +//line lib/promscrape/targetstatus.qtpl:349 + targetID := getLabelsID(t.originalLabels) + +//line lib/promscrape/targetstatus.qtpl:349 + qw422016.N().S(`<a href="target-relabel-debug?id=`) +//line lib/promscrape/targetstatus.qtpl:350 + qw422016.E().S(targetID) +//line lib/promscrape/targetstatus.qtpl:350 + qw422016.N().S(`" target="_blank">debug</a></td></tr>`) +//line lib/promscrape/targetstatus.qtpl:353 + } +//line lib/promscrape/targetstatus.qtpl:353 + qw422016.N().S(`</tbody></table></div>`) +//line lib/promscrape/targetstatus.qtpl:357 +} + +//line lib/promscrape/targetstatus.qtpl:357 +func writediscoveredJobTargets(qq422016 qtio422016.Writer, num int, tlj *targetLabelsByJob) { +//line lib/promscrape/targetstatus.qtpl:357 + qw422016 := qt422016.AcquireWriter(qq422016) +//line lib/promscrape/targetstatus.qtpl:357 + streamdiscoveredJobTargets(qw422016, num, tlj) +//line lib/promscrape/targetstatus.qtpl:357 + qt422016.ReleaseWriter(qw422016) +//line lib/promscrape/targetstatus.qtpl:357 +} + +//line lib/promscrape/targetstatus.qtpl:357 +func discoveredJobTargets(num int, tlj *targetLabelsByJob) string { +//line lib/promscrape/targetstatus.qtpl:357 + qb422016 := qt422016.AcquireByteBuffer() +//line lib/promscrape/targetstatus.qtpl:357 + writediscoveredJobTargets(qb422016, num, tlj) +//line lib/promscrape/targetstatus.qtpl:357 + qs422016 := string(qb422016.B) +//line lib/promscrape/targetstatus.qtpl:357 + qt422016.ReleaseByteBuffer(qb422016) +//line lib/promscrape/targetstatus.qtpl:357 + return qs422016 +//line lib/promscrape/targetstatus.qtpl:357 +} + +//line lib/promscrape/targetstatus.qtpl:359 +func streamshowHideScrapeJobButtons(qw422016 *qt422016.Writer, num int) { +//line lib/promscrape/targetstatus.qtpl:359 + qw422016.N().S(`<button type="button" class="btn btn-primary btn-sm me-1"onclick="document.getElementById('scrape-job-`) +//line lib/promscrape/targetstatus.qtpl:361 + qw422016.N().D(num) +//line lib/promscrape/targetstatus.qtpl:361 + qw422016.N().S(`').style.display='none'">collapse</button><button type="button" class="btn btn-secondary btn-sm me-1"onclick="document.getElementById('scrape-job-`) +//line lib/promscrape/targetstatus.qtpl:365 + qw422016.N().D(num) +//line lib/promscrape/targetstatus.qtpl:365 + qw422016.N().S(`').style.display='block'">expand</button>`) +//line lib/promscrape/targetstatus.qtpl:368 +} + +//line lib/promscrape/targetstatus.qtpl:368 +func writeshowHideScrapeJobButtons(qq422016 qtio422016.Writer, num int) { +//line lib/promscrape/targetstatus.qtpl:368 + qw422016 := qt422016.AcquireWriter(qq422016) +//line lib/promscrape/targetstatus.qtpl:368 + streamshowHideScrapeJobButtons(qw422016, num) +//line lib/promscrape/targetstatus.qtpl:368 + qt422016.ReleaseWriter(qw422016) +//line lib/promscrape/targetstatus.qtpl:368 +} + +//line lib/promscrape/targetstatus.qtpl:368 +func showHideScrapeJobButtons(num int) string { +//line lib/promscrape/targetstatus.qtpl:368 + qb422016 := qt422016.AcquireByteBuffer() +//line lib/promscrape/targetstatus.qtpl:368 + writeshowHideScrapeJobButtons(qb422016, num) +//line lib/promscrape/targetstatus.qtpl:368 + qs422016 := string(qb422016.B) +//line lib/promscrape/targetstatus.qtpl:368 + qt422016.ReleaseByteBuffer(qb422016) +//line lib/promscrape/targetstatus.qtpl:368 + return qs422016 +//line lib/promscrape/targetstatus.qtpl:368 +} + +//line lib/promscrape/targetstatus.qtpl:370 func streamqueryArgs(qw422016 *qt422016.Writer, filter *requestFilter, override map[string]string) { -//line lib/promscrape/targetstatus.qtpl:342 +//line lib/promscrape/targetstatus.qtpl:372 showOnlyUnhealthy := "false" if filter.showOnlyUnhealthy { showOnlyUnhealthy = "true" @@ -904,340 +991,89 @@ func streamqueryArgs(qw422016 *qt422016.Writer, filter *requestFilter, override qa[k] = []string{v} } -//line lib/promscrape/targetstatus.qtpl:359 +//line lib/promscrape/targetstatus.qtpl:389 qw422016.E().S(qa.Encode()) -//line lib/promscrape/targetstatus.qtpl:360 +//line lib/promscrape/targetstatus.qtpl:390 } -//line lib/promscrape/targetstatus.qtpl:360 +//line lib/promscrape/targetstatus.qtpl:390 func writequeryArgs(qq422016 qtio422016.Writer, filter *requestFilter, override map[string]string) { -//line lib/promscrape/targetstatus.qtpl:360 +//line lib/promscrape/targetstatus.qtpl:390 qw422016 := qt422016.AcquireWriter(qq422016) -//line lib/promscrape/targetstatus.qtpl:360 +//line lib/promscrape/targetstatus.qtpl:390 streamqueryArgs(qw422016, filter, override) -//line lib/promscrape/targetstatus.qtpl:360 +//line lib/promscrape/targetstatus.qtpl:390 qt422016.ReleaseWriter(qw422016) -//line lib/promscrape/targetstatus.qtpl:360 +//line lib/promscrape/targetstatus.qtpl:390 } -//line lib/promscrape/targetstatus.qtpl:360 +//line lib/promscrape/targetstatus.qtpl:390 func queryArgs(filter *requestFilter, override map[string]string) string { -//line lib/promscrape/targetstatus.qtpl:360 +//line lib/promscrape/targetstatus.qtpl:390 qb422016 := qt422016.AcquireByteBuffer() -//line lib/promscrape/targetstatus.qtpl:360 +//line lib/promscrape/targetstatus.qtpl:390 writequeryArgs(qb422016, filter, override) -//line lib/promscrape/targetstatus.qtpl:360 +//line lib/promscrape/targetstatus.qtpl:390 qs422016 := string(qb422016.B) -//line lib/promscrape/targetstatus.qtpl:360 +//line lib/promscrape/targetstatus.qtpl:390 qt422016.ReleaseByteBuffer(qb422016) -//line lib/promscrape/targetstatus.qtpl:360 +//line lib/promscrape/targetstatus.qtpl:390 return qs422016 -//line lib/promscrape/targetstatus.qtpl:360 +//line lib/promscrape/targetstatus.qtpl:390 } -//line lib/promscrape/targetstatus.qtpl:362 +//line lib/promscrape/targetstatus.qtpl:392 func streamformatLabels(qw422016 *qt422016.Writer, labels *promutils.Labels) { -//line lib/promscrape/targetstatus.qtpl:363 +//line lib/promscrape/targetstatus.qtpl:393 labelsList := labels.GetLabels() -//line lib/promscrape/targetstatus.qtpl:363 +//line lib/promscrape/targetstatus.qtpl:393 qw422016.N().S(`{`) -//line lib/promscrape/targetstatus.qtpl:365 +//line lib/promscrape/targetstatus.qtpl:395 for i, label := range labelsList { -//line lib/promscrape/targetstatus.qtpl:366 +//line lib/promscrape/targetstatus.qtpl:396 qw422016.E().S(label.Name) -//line lib/promscrape/targetstatus.qtpl:366 +//line lib/promscrape/targetstatus.qtpl:396 qw422016.N().S(`=`) -//line lib/promscrape/targetstatus.qtpl:366 +//line lib/promscrape/targetstatus.qtpl:396 qw422016.E().Q(label.Value) -//line lib/promscrape/targetstatus.qtpl:367 +//line lib/promscrape/targetstatus.qtpl:397 if i+1 < len(labelsList) { -//line lib/promscrape/targetstatus.qtpl:367 +//line lib/promscrape/targetstatus.qtpl:397 qw422016.N().S(`,`) -//line lib/promscrape/targetstatus.qtpl:367 +//line lib/promscrape/targetstatus.qtpl:397 qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:367 +//line lib/promscrape/targetstatus.qtpl:397 } -//line lib/promscrape/targetstatus.qtpl:368 +//line lib/promscrape/targetstatus.qtpl:398 } -//line lib/promscrape/targetstatus.qtpl:368 +//line lib/promscrape/targetstatus.qtpl:398 qw422016.N().S(`}`) -//line lib/promscrape/targetstatus.qtpl:370 +//line lib/promscrape/targetstatus.qtpl:400 } -//line lib/promscrape/targetstatus.qtpl:370 +//line lib/promscrape/targetstatus.qtpl:400 func writeformatLabels(qq422016 qtio422016.Writer, labels *promutils.Labels) { -//line lib/promscrape/targetstatus.qtpl:370 +//line lib/promscrape/targetstatus.qtpl:400 qw422016 := qt422016.AcquireWriter(qq422016) -//line lib/promscrape/targetstatus.qtpl:370 +//line lib/promscrape/targetstatus.qtpl:400 streamformatLabels(qw422016, labels) -//line lib/promscrape/targetstatus.qtpl:370 +//line lib/promscrape/targetstatus.qtpl:400 qt422016.ReleaseWriter(qw422016) -//line lib/promscrape/targetstatus.qtpl:370 +//line lib/promscrape/targetstatus.qtpl:400 } -//line lib/promscrape/targetstatus.qtpl:370 +//line lib/promscrape/targetstatus.qtpl:400 func formatLabels(labels *promutils.Labels) string { -//line lib/promscrape/targetstatus.qtpl:370 +//line lib/promscrape/targetstatus.qtpl:400 qb422016 := qt422016.AcquireByteBuffer() -//line lib/promscrape/targetstatus.qtpl:370 +//line lib/promscrape/targetstatus.qtpl:400 writeformatLabels(qb422016, labels) -//line lib/promscrape/targetstatus.qtpl:370 +//line lib/promscrape/targetstatus.qtpl:400 qs422016 := string(qb422016.B) -//line lib/promscrape/targetstatus.qtpl:370 +//line lib/promscrape/targetstatus.qtpl:400 qt422016.ReleaseByteBuffer(qb422016) -//line lib/promscrape/targetstatus.qtpl:370 +//line lib/promscrape/targetstatus.qtpl:400 return qs422016 -//line lib/promscrape/targetstatus.qtpl:370 -} - -//line lib/promscrape/targetstatus.qtpl:374 -func streamendpointContent(qw422016 *qt422016.Writer, endpoint, targetID string) { -//line lib/promscrape/targetstatus.qtpl:374 - qw422016.N().S(` -<a href="`) -//line lib/promscrape/targetstatus.qtpl:375 - qw422016.E().S(endpoint) -//line lib/promscrape/targetstatus.qtpl:375 - qw422016.N().S(`" target="_blank">`) -//line lib/promscrape/targetstatus.qtpl:375 - qw422016.E().S(endpoint) -//line lib/promscrape/targetstatus.qtpl:375 - qw422016.N().S(`</a>`) -//line lib/promscrape/targetstatus.qtpl:375 - qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:375 - qw422016.N().S(` -`) -//line lib/promscrape/targetstatus.qtpl:376 - if targetID != "" { -//line lib/promscrape/targetstatus.qtpl:376 - qw422016.N().S(` -(<a href="target_response?id=`) -//line lib/promscrape/targetstatus.qtpl:377 - qw422016.E().S(targetID) -//line lib/promscrape/targetstatus.qtpl:377 - qw422016.N().S(`" target="_blank" - title="click to fetch target response on behalf of the scraper">response</a>) -`) -//line lib/promscrape/targetstatus.qtpl:379 - } -//line lib/promscrape/targetstatus.qtpl:379 - qw422016.N().S(` -`) -//line lib/promscrape/targetstatus.qtpl:380 -} - -//line lib/promscrape/targetstatus.qtpl:380 -func writeendpointContent(qq422016 qtio422016.Writer, endpoint, targetID string) { -//line lib/promscrape/targetstatus.qtpl:380 - qw422016 := qt422016.AcquireWriter(qq422016) -//line lib/promscrape/targetstatus.qtpl:380 - streamendpointContent(qw422016, endpoint, targetID) -//line lib/promscrape/targetstatus.qtpl:380 - qt422016.ReleaseWriter(qw422016) -//line lib/promscrape/targetstatus.qtpl:380 -} - -//line lib/promscrape/targetstatus.qtpl:380 -func endpointContent(endpoint, targetID string) string { -//line lib/promscrape/targetstatus.qtpl:380 - qb422016 := qt422016.AcquireByteBuffer() -//line lib/promscrape/targetstatus.qtpl:380 - writeendpointContent(qb422016, endpoint, targetID) -//line lib/promscrape/targetstatus.qtpl:380 - qs422016 := string(qb422016.B) -//line lib/promscrape/targetstatus.qtpl:380 - qt422016.ReleaseByteBuffer(qb422016) -//line lib/promscrape/targetstatus.qtpl:380 - return qs422016 -//line lib/promscrape/targetstatus.qtpl:380 -} - -//line lib/promscrape/targetstatus.qtpl:382 -func streamlabelsContent(qw422016 *qt422016.Writer, targetID string, config *ScrapeWork) { -//line lib/promscrape/targetstatus.qtpl:382 - qw422016.N().S(` -<div title="click to show original labels" - `) -//line lib/promscrape/targetstatus.qtpl:384 - if targetID != "" { -//line lib/promscrape/targetstatus.qtpl:384 - qw422016.N().S(`onclick="document.getElementById('original-labels-`) -//line lib/promscrape/targetstatus.qtpl:384 - qw422016.E().S(targetID) -//line lib/promscrape/targetstatus.qtpl:384 - qw422016.N().S(`').style.display='block'" `) -//line lib/promscrape/targetstatus.qtpl:384 - } -//line lib/promscrape/targetstatus.qtpl:384 - qw422016.N().S(`> - `) -//line lib/promscrape/targetstatus.qtpl:385 - streamformatLabels(qw422016, config.Labels) -//line lib/promscrape/targetstatus.qtpl:385 - qw422016.N().S(` -</div> -`) -//line lib/promscrape/targetstatus.qtpl:387 - if config.OriginalLabels != nil { -//line lib/promscrape/targetstatus.qtpl:387 - qw422016.N().S(` -<div style="display:none" id="original-labels-`) -//line lib/promscrape/targetstatus.qtpl:388 - qw422016.E().S(targetID) -//line lib/promscrape/targetstatus.qtpl:388 - qw422016.N().S(`"> - `) -//line lib/promscrape/targetstatus.qtpl:389 - streamformatLabels(qw422016, config.OriginalLabels) -//line lib/promscrape/targetstatus.qtpl:389 - qw422016.N().S(` -</div> -`) -//line lib/promscrape/targetstatus.qtpl:391 - } -//line lib/promscrape/targetstatus.qtpl:391 - qw422016.N().S(` -`) -//line lib/promscrape/targetstatus.qtpl:392 -} - -//line lib/promscrape/targetstatus.qtpl:392 -func writelabelsContent(qq422016 qtio422016.Writer, targetID string, config *ScrapeWork) { -//line lib/promscrape/targetstatus.qtpl:392 - qw422016 := qt422016.AcquireWriter(qq422016) -//line lib/promscrape/targetstatus.qtpl:392 - streamlabelsContent(qw422016, targetID, config) -//line lib/promscrape/targetstatus.qtpl:392 - qt422016.ReleaseWriter(qw422016) -//line lib/promscrape/targetstatus.qtpl:392 -} - -//line lib/promscrape/targetstatus.qtpl:392 -func labelsContent(targetID string, config *ScrapeWork) string { -//line lib/promscrape/targetstatus.qtpl:392 - qb422016 := qt422016.AcquireByteBuffer() -//line lib/promscrape/targetstatus.qtpl:392 - writelabelsContent(qb422016, targetID, config) -//line lib/promscrape/targetstatus.qtpl:392 - qs422016 := string(qb422016.B) -//line lib/promscrape/targetstatus.qtpl:392 - qt422016.ReleaseByteBuffer(qb422016) -//line lib/promscrape/targetstatus.qtpl:392 - return qs422016 -//line lib/promscrape/targetstatus.qtpl:392 -} - -//line lib/promscrape/targetstatus.qtpl:394 -func streamdebugRelabelingContent(qw422016 *qt422016.Writer, targetID string) { -//line lib/promscrape/targetstatus.qtpl:394 - qw422016.N().S(` -`) -//line lib/promscrape/targetstatus.qtpl:395 - if targetID != "" { -//line lib/promscrape/targetstatus.qtpl:395 - qw422016.N().S(` -<a href="target-relabel-debug?id=`) -//line lib/promscrape/targetstatus.qtpl:396 - qw422016.E().S(targetID) -//line lib/promscrape/targetstatus.qtpl:396 - qw422016.N().S(`" target="_blank">target</a>`) -//line lib/promscrape/targetstatus.qtpl:396 - qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:396 - qw422016.N().S(` -<a href="metric-relabel-debug?id=`) -//line lib/promscrape/targetstatus.qtpl:397 - qw422016.E().S(targetID) -//line lib/promscrape/targetstatus.qtpl:397 - qw422016.N().S(`" target="_blank">metrics</a> -`) -//line lib/promscrape/targetstatus.qtpl:398 - } -//line lib/promscrape/targetstatus.qtpl:398 - qw422016.N().S(` -`) -//line lib/promscrape/targetstatus.qtpl:399 -} - -//line lib/promscrape/targetstatus.qtpl:399 -func writedebugRelabelingContent(qq422016 qtio422016.Writer, targetID string) { -//line lib/promscrape/targetstatus.qtpl:399 - qw422016 := qt422016.AcquireWriter(qq422016) -//line lib/promscrape/targetstatus.qtpl:399 - streamdebugRelabelingContent(qw422016, targetID) -//line lib/promscrape/targetstatus.qtpl:399 - qt422016.ReleaseWriter(qw422016) -//line lib/promscrape/targetstatus.qtpl:399 -} - -//line lib/promscrape/targetstatus.qtpl:399 -func debugRelabelingContent(targetID string) string { -//line lib/promscrape/targetstatus.qtpl:399 - qb422016 := qt422016.AcquireByteBuffer() -//line lib/promscrape/targetstatus.qtpl:399 - writedebugRelabelingContent(qb422016, targetID) -//line lib/promscrape/targetstatus.qtpl:399 - qs422016 := string(qb422016.B) -//line lib/promscrape/targetstatus.qtpl:399 - qt422016.ReleaseByteBuffer(qb422016) -//line lib/promscrape/targetstatus.qtpl:399 - return qs422016 -//line lib/promscrape/targetstatus.qtpl:399 -} - -//line lib/promscrape/targetstatus.qtpl:401 -func streamdiscoveredJobsRelabelContent(qw422016 *qt422016.Writer, originalLabels *promutils.Labels) { -//line lib/promscrape/targetstatus.qtpl:401 - qw422016.N().S(` -`) -//line lib/promscrape/targetstatus.qtpl:402 - if originalLabels != nil { -//line lib/promscrape/targetstatus.qtpl:402 - qw422016.N().S(` -`) -//line lib/promscrape/targetstatus.qtpl:403 - targetID := getLabelsID(originalLabels) - -//line lib/promscrape/targetstatus.qtpl:403 - qw422016.N().S(` -<a href="target-relabel-debug?id=`) -//line lib/promscrape/targetstatus.qtpl:404 - qw422016.E().S(targetID) -//line lib/promscrape/targetstatus.qtpl:404 - qw422016.N().S(`" target="_blank">debug</a> -`) -//line lib/promscrape/targetstatus.qtpl:405 - } -//line lib/promscrape/targetstatus.qtpl:405 - qw422016.N().S(` -`) -//line lib/promscrape/targetstatus.qtpl:406 -} - -//line lib/promscrape/targetstatus.qtpl:406 -func writediscoveredJobsRelabelContent(qq422016 qtio422016.Writer, originalLabels *promutils.Labels) { -//line lib/promscrape/targetstatus.qtpl:406 - qw422016 := qt422016.AcquireWriter(qq422016) -//line lib/promscrape/targetstatus.qtpl:406 - streamdiscoveredJobsRelabelContent(qw422016, originalLabels) -//line lib/promscrape/targetstatus.qtpl:406 - qt422016.ReleaseWriter(qw422016) -//line lib/promscrape/targetstatus.qtpl:406 -} - -//line lib/promscrape/targetstatus.qtpl:406 -func discoveredJobsRelabelContent(originalLabels *promutils.Labels) string { -//line lib/promscrape/targetstatus.qtpl:406 - qb422016 := qt422016.AcquireByteBuffer() -//line lib/promscrape/targetstatus.qtpl:406 - writediscoveredJobsRelabelContent(qb422016, originalLabels) -//line lib/promscrape/targetstatus.qtpl:406 - qs422016 := string(qb422016.B) -//line lib/promscrape/targetstatus.qtpl:406 - qt422016.ReleaseByteBuffer(qb422016) -//line lib/promscrape/targetstatus.qtpl:406 - return qs422016 -//line lib/promscrape/targetstatus.qtpl:406 +//line lib/promscrape/targetstatus.qtpl:400 }