diff --git a/docs/vmagent.md b/docs/vmagent.md index 0dccdf3264..c8648f4f22 100644 --- a/docs/vmagent.md +++ b/docs/vmagent.md @@ -813,9 +813,15 @@ start a cluster of three `vmagent` instances, where each target is scraped by tw Every `vmagent` in the cluster exposes all the discovered targets at `http://vmagent:8429/service-discovery` page. Each discovered target on this page contains its status (`UP`, `DOWN` or `DROPPED` with the reason why the target has been dropped). If the target is dropped because of sharding to other `vmagent` instances in the cluster, then the status column contains -`-promscrape.cluster.memberNum` values for `vmagent` instances where the given target is scraped. Note that `vmagent` shows -up to `-promscrape.maxDroppedTargets` dropped targets on the `/service-discovery` page. Increase the `-promscrape.maxDroppedTargets` command-line flag value -if the `/service-discovery` page misses some dropped targets. +`-promscrape.cluster.memberNum` values for `vmagent` instances where the given target is scraped. + +The `/service-discovery` page provides links to the corresponding `vmagent` instances if `-promscrape.cluster.memberURLTemplate` command-line flag is set. +Every occurrence of `%d` inside the `-promscrape.cluster.memberURLTemplate` is substituted with the `-promscrape.cluster.memberNum` +for the corresponding `vmagent` instance. For examle, `-promscrape.cluster.memberURLTemplate='http://vmagent-instance-%d:8429/targets'` +generates `http://vmagent-instance-42:8429/targets` url for `vmagent` instance, which runs with `-promscrape.cluster.memberNum=42`. + +Note that `vmagent` shows up to `-promscrape.maxDroppedTargets` dropped targets on the `/service-discovery` page. +Increase the `-promscrape.maxDroppedTargets` command-line flag value if the `/service-discovery` page misses some dropped targets. If each target is scraped by multiple `vmagent` instances, then data deduplication must be enabled at remote storage pointed by `-remoteWrite.url`. The `-dedup.minScrapeInterval` must be set to the `scrape_interval` configured at `-promscrape.config`. diff --git a/lib/promscrape/config.go b/lib/promscrape/config.go index 5f8cb9e17b..4b60e86963 100644 --- a/lib/promscrape/config.go +++ b/lib/promscrape/config.go @@ -64,6 +64,10 @@ var ( "See also -promscrape.cluster.memberLabel . See https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets for more info") clusterMemberLabel = flag.String("promscrape.cluster.memberLabel", "", "If non-empty, then the label with this name and the -promscrape.cluster.memberNum value "+ "is added to all the scraped metrics. See https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets for more info") + clusterMemberURLTemplate = flag.String("promscrape.cluster.memberURLTemplate", "", "An optional template for URL to access vmagent instance with the given -promscrape.cluster.memberNum value. "+ + "Every %d occurence in the template is substituted with -promscrape.cluster.memberNum at urls to vmagent instances responsible for scraping the given target "+ + "at /service-discovery page. For example -promscrape.cluster.memberURLTemplate='http://vmagent-%d:8429/targets'. "+ + "See https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets for more details") clusterReplicationFactor = flag.Int("promscrape.cluster.replicationFactor", 1, "The number of members in the cluster, which scrape the same targets. "+ "If the replication factor is greater than 1, then the deduplication must be enabled at remote storage side. "+ "See https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets for more info") diff --git a/lib/promscrape/targetstatus.qtpl b/lib/promscrape/targetstatus.qtpl index d4206ee2d2..d7acee30e2 100644 --- a/lib/promscrape/targetstatus.qtpl +++ b/lib/promscrape/targetstatus.qtpl @@ -1,5 +1,7 @@ {% import ( "net/url" + "strconv" + "strings" "github.com/VictoriaMetrics/VictoriaMetrics/lib/htmlcomponents" "github.com/VictoriaMetrics/VictoriaMetrics/lib/promutils" @@ -335,7 +337,11 @@ <span title="The target exists at vmagent instances with the given -promscrape.cluster.memberNum values"> exists at{% space %} {% for i, memberNum := range t.clusterMemberNums %} - {%d memberNum %} + {% if *clusterMemberURLTemplate == "" %} + {%d memberNum %} + {% else %} + <a href="{%s strings.ReplaceAll(*clusterMemberURLTemplate, "%d", strconv.Itoa(memberNum)) %}">{%d memberNum %}</a> + {% endif %} {% if i+1 < len(t.clusterMemberNums) %},{% space %}{% endif %} {% endfor %} {% endif %} diff --git a/lib/promscrape/targetstatus.qtpl.go b/lib/promscrape/targetstatus.qtpl.go index 1957684df8..eda7b760c6 100644 --- a/lib/promscrape/targetstatus.qtpl.go +++ b/lib/promscrape/targetstatus.qtpl.go @@ -7,987 +7,1005 @@ package promscrape //line lib/promscrape/targetstatus.qtpl:1 import ( "net/url" + "strconv" + "strings" "github.com/VictoriaMetrics/VictoriaMetrics/lib/htmlcomponents" "github.com/VictoriaMetrics/VictoriaMetrics/lib/promutils" ) -//line lib/promscrape/targetstatus.qtpl:10 +//line lib/promscrape/targetstatus.qtpl:12 import ( qtio422016 "io" qt422016 "github.com/valyala/quicktemplate" ) -//line lib/promscrape/targetstatus.qtpl:10 +//line lib/promscrape/targetstatus.qtpl:12 var ( _ = qtio422016.Copy _ = qt422016.AcquireByteBuffer ) -//line lib/promscrape/targetstatus.qtpl:10 -func StreamTargetsResponsePlain(qw422016 *qt422016.Writer, tsr *targetsStatusResult, filter *requestFilter) { //line lib/promscrape/targetstatus.qtpl:12 - if tsr.err != nil { -//line lib/promscrape/targetstatus.qtpl:13 - qw422016.N().S(tsr.err.Error()) +func StreamTargetsResponsePlain(qw422016 *qt422016.Writer, tsr *targetsStatusResult, filter *requestFilter) { //line lib/promscrape/targetstatus.qtpl:14 - return + if tsr.err != nil { //line lib/promscrape/targetstatus.qtpl:15 + qw422016.N().S(tsr.err.Error()) +//line lib/promscrape/targetstatus.qtpl:16 + return +//line lib/promscrape/targetstatus.qtpl:17 } -//line lib/promscrape/targetstatus.qtpl:17 - for _, jts := range tsr.jobTargetsStatuses { -//line lib/promscrape/targetstatus.qtpl:17 - qw422016.N().S(`job=`) -//line lib/promscrape/targetstatus.qtpl:18 - qw422016.N().S(jts.jobName) -//line lib/promscrape/targetstatus.qtpl:18 - qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:18 - qw422016.N().S(`(`) -//line lib/promscrape/targetstatus.qtpl:18 - qw422016.N().D(jts.upCount) -//line lib/promscrape/targetstatus.qtpl:18 - qw422016.N().S(`/`) -//line lib/promscrape/targetstatus.qtpl:18 - qw422016.N().D(jts.targetsTotal) -//line lib/promscrape/targetstatus.qtpl:18 - qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:18 - qw422016.N().S(`up)`) //line lib/promscrape/targetstatus.qtpl:19 + for _, jts := range tsr.jobTargetsStatuses { +//line lib/promscrape/targetstatus.qtpl:19 + qw422016.N().S(`job=`) +//line lib/promscrape/targetstatus.qtpl:20 + qw422016.N().S(jts.jobName) +//line lib/promscrape/targetstatus.qtpl:20 + qw422016.N().S(` `) +//line lib/promscrape/targetstatus.qtpl:20 + qw422016.N().S(`(`) +//line lib/promscrape/targetstatus.qtpl:20 + qw422016.N().D(jts.upCount) +//line lib/promscrape/targetstatus.qtpl:20 + qw422016.N().S(`/`) +//line lib/promscrape/targetstatus.qtpl:20 + qw422016.N().D(jts.targetsTotal) +//line lib/promscrape/targetstatus.qtpl:20 + qw422016.N().S(` `) +//line lib/promscrape/targetstatus.qtpl:20 + qw422016.N().S(`up)`) +//line lib/promscrape/targetstatus.qtpl:21 qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:20 +//line lib/promscrape/targetstatus.qtpl:22 for _, ts := range jts.targetsStatus { -//line lib/promscrape/targetstatus.qtpl:21 +//line lib/promscrape/targetstatus.qtpl:23 qw422016.N().S("\t") -//line lib/promscrape/targetstatus.qtpl:21 +//line lib/promscrape/targetstatus.qtpl:23 qw422016.N().S(`state=`) -//line lib/promscrape/targetstatus.qtpl:22 +//line lib/promscrape/targetstatus.qtpl:24 if ts.up { -//line lib/promscrape/targetstatus.qtpl:22 +//line lib/promscrape/targetstatus.qtpl:24 qw422016.N().S(`up`) -//line lib/promscrape/targetstatus.qtpl:22 +//line lib/promscrape/targetstatus.qtpl:24 } else { -//line lib/promscrape/targetstatus.qtpl:22 +//line lib/promscrape/targetstatus.qtpl:24 qw422016.N().S(`down`) -//line lib/promscrape/targetstatus.qtpl:22 +//line lib/promscrape/targetstatus.qtpl:24 } -//line lib/promscrape/targetstatus.qtpl:22 +//line lib/promscrape/targetstatus.qtpl:24 qw422016.N().S(`,`) -//line lib/promscrape/targetstatus.qtpl:22 +//line lib/promscrape/targetstatus.qtpl:24 qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:22 +//line lib/promscrape/targetstatus.qtpl:24 qw422016.N().S(`endpoint=`) -//line lib/promscrape/targetstatus.qtpl:23 +//line lib/promscrape/targetstatus.qtpl:25 qw422016.N().S(ts.sw.Config.ScrapeURL) -//line lib/promscrape/targetstatus.qtpl:23 +//line lib/promscrape/targetstatus.qtpl:25 qw422016.N().S(`,`) -//line lib/promscrape/targetstatus.qtpl:23 +//line lib/promscrape/targetstatus.qtpl:25 qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:23 +//line lib/promscrape/targetstatus.qtpl:25 qw422016.N().S(`labels=`) -//line lib/promscrape/targetstatus.qtpl:24 +//line lib/promscrape/targetstatus.qtpl:26 qw422016.N().S(ts.sw.Config.Labels.String()) -//line lib/promscrape/targetstatus.qtpl:24 +//line lib/promscrape/targetstatus.qtpl:26 qw422016.N().S(`,`) -//line lib/promscrape/targetstatus.qtpl:24 +//line lib/promscrape/targetstatus.qtpl:26 qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:25 +//line lib/promscrape/targetstatus.qtpl:27 if filter.showOriginalLabels { -//line lib/promscrape/targetstatus.qtpl:25 +//line lib/promscrape/targetstatus.qtpl:27 qw422016.N().S(`originalLabels=`) -//line lib/promscrape/targetstatus.qtpl:25 +//line lib/promscrape/targetstatus.qtpl:27 qw422016.N().S(ts.sw.Config.OriginalLabels.String()) -//line lib/promscrape/targetstatus.qtpl:25 +//line lib/promscrape/targetstatus.qtpl:27 qw422016.N().S(`,`) -//line lib/promscrape/targetstatus.qtpl:25 +//line lib/promscrape/targetstatus.qtpl:27 qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:25 +//line lib/promscrape/targetstatus.qtpl:27 } -//line lib/promscrape/targetstatus.qtpl:25 +//line lib/promscrape/targetstatus.qtpl:27 qw422016.N().S(`scrapes_total=`) -//line lib/promscrape/targetstatus.qtpl:26 +//line lib/promscrape/targetstatus.qtpl:28 qw422016.N().D(ts.scrapesTotal) -//line lib/promscrape/targetstatus.qtpl:26 +//line lib/promscrape/targetstatus.qtpl:28 qw422016.N().S(`,`) -//line lib/promscrape/targetstatus.qtpl:26 +//line lib/promscrape/targetstatus.qtpl:28 qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:26 +//line lib/promscrape/targetstatus.qtpl:28 qw422016.N().S(`scrapes_failed=`) -//line lib/promscrape/targetstatus.qtpl:27 +//line lib/promscrape/targetstatus.qtpl:29 qw422016.N().D(ts.scrapesFailed) -//line lib/promscrape/targetstatus.qtpl:27 +//line lib/promscrape/targetstatus.qtpl:29 qw422016.N().S(`,`) -//line lib/promscrape/targetstatus.qtpl:27 +//line lib/promscrape/targetstatus.qtpl:29 qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:27 +//line lib/promscrape/targetstatus.qtpl:29 qw422016.N().S(`last_scrape=`) -//line lib/promscrape/targetstatus.qtpl:28 +//line lib/promscrape/targetstatus.qtpl:30 qw422016.E().S(ts.getDurationFromLastScrape()) -//line lib/promscrape/targetstatus.qtpl:28 +//line lib/promscrape/targetstatus.qtpl:30 qw422016.N().S(`,`) -//line lib/promscrape/targetstatus.qtpl:28 +//line lib/promscrape/targetstatus.qtpl:30 qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:28 +//line lib/promscrape/targetstatus.qtpl:30 qw422016.N().S(`scrape_duration=`) -//line lib/promscrape/targetstatus.qtpl:29 +//line lib/promscrape/targetstatus.qtpl:31 qw422016.N().D(int(ts.scrapeDuration)) -//line lib/promscrape/targetstatus.qtpl:29 +//line lib/promscrape/targetstatus.qtpl:31 qw422016.N().S(`ms,`) -//line lib/promscrape/targetstatus.qtpl:29 +//line lib/promscrape/targetstatus.qtpl:31 qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:29 +//line lib/promscrape/targetstatus.qtpl:31 qw422016.N().S(`samples_scraped=`) -//line lib/promscrape/targetstatus.qtpl:30 - qw422016.N().D(ts.samplesScraped) -//line lib/promscrape/targetstatus.qtpl:30 - qw422016.N().S(`,`) -//line lib/promscrape/targetstatus.qtpl:30 - qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:30 - qw422016.N().S(`error=`) -//line lib/promscrape/targetstatus.qtpl:31 - if ts.err != nil { -//line lib/promscrape/targetstatus.qtpl:31 - qw422016.N().S(ts.err.Error()) -//line lib/promscrape/targetstatus.qtpl:31 - } //line lib/promscrape/targetstatus.qtpl:32 + qw422016.N().D(ts.samplesScraped) +//line lib/promscrape/targetstatus.qtpl:32 + qw422016.N().S(`,`) +//line lib/promscrape/targetstatus.qtpl:32 + qw422016.N().S(` `) +//line lib/promscrape/targetstatus.qtpl:32 + qw422016.N().S(`error=`) +//line lib/promscrape/targetstatus.qtpl:33 + if ts.err != nil { +//line lib/promscrape/targetstatus.qtpl:33 + qw422016.N().S(ts.err.Error()) +//line lib/promscrape/targetstatus.qtpl:33 + } +//line lib/promscrape/targetstatus.qtpl:34 qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:33 +//line lib/promscrape/targetstatus.qtpl:35 } -//line lib/promscrape/targetstatus.qtpl:34 +//line lib/promscrape/targetstatus.qtpl:36 } -//line lib/promscrape/targetstatus.qtpl:36 - for _, jobName := range tsr.emptyJobs { -//line lib/promscrape/targetstatus.qtpl:36 - qw422016.N().S(`job=`) -//line lib/promscrape/targetstatus.qtpl:37 - qw422016.N().S(jobName) -//line lib/promscrape/targetstatus.qtpl:37 - qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:37 - qw422016.N().S(`(0/0 up)`) //line lib/promscrape/targetstatus.qtpl:38 + for _, jobName := range tsr.emptyJobs { +//line lib/promscrape/targetstatus.qtpl:38 + qw422016.N().S(`job=`) +//line lib/promscrape/targetstatus.qtpl:39 + qw422016.N().S(jobName) +//line lib/promscrape/targetstatus.qtpl:39 + qw422016.N().S(` `) +//line lib/promscrape/targetstatus.qtpl:39 + qw422016.N().S(`(0/0 up)`) +//line lib/promscrape/targetstatus.qtpl:40 qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:39 - } //line lib/promscrape/targetstatus.qtpl:41 + } +//line lib/promscrape/targetstatus.qtpl:43 } -//line lib/promscrape/targetstatus.qtpl:41 +//line lib/promscrape/targetstatus.qtpl:43 func WriteTargetsResponsePlain(qq422016 qtio422016.Writer, tsr *targetsStatusResult, filter *requestFilter) { -//line lib/promscrape/targetstatus.qtpl:41 +//line lib/promscrape/targetstatus.qtpl:43 qw422016 := qt422016.AcquireWriter(qq422016) -//line lib/promscrape/targetstatus.qtpl:41 +//line lib/promscrape/targetstatus.qtpl:43 StreamTargetsResponsePlain(qw422016, tsr, filter) -//line lib/promscrape/targetstatus.qtpl:41 +//line lib/promscrape/targetstatus.qtpl:43 qt422016.ReleaseWriter(qw422016) -//line lib/promscrape/targetstatus.qtpl:41 +//line lib/promscrape/targetstatus.qtpl:43 } -//line lib/promscrape/targetstatus.qtpl:41 +//line lib/promscrape/targetstatus.qtpl:43 func TargetsResponsePlain(tsr *targetsStatusResult, filter *requestFilter) string { -//line lib/promscrape/targetstatus.qtpl:41 +//line lib/promscrape/targetstatus.qtpl:43 qb422016 := qt422016.AcquireByteBuffer() -//line lib/promscrape/targetstatus.qtpl:41 +//line lib/promscrape/targetstatus.qtpl:43 WriteTargetsResponsePlain(qb422016, tsr, filter) -//line lib/promscrape/targetstatus.qtpl:41 +//line lib/promscrape/targetstatus.qtpl:43 qs422016 := string(qb422016.B) -//line lib/promscrape/targetstatus.qtpl:41 +//line lib/promscrape/targetstatus.qtpl:43 qt422016.ReleaseByteBuffer(qb422016) -//line lib/promscrape/targetstatus.qtpl:41 +//line lib/promscrape/targetstatus.qtpl:43 return qs422016 -//line lib/promscrape/targetstatus.qtpl:41 +//line lib/promscrape/targetstatus.qtpl:43 } -//line lib/promscrape/targetstatus.qtpl:43 +//line lib/promscrape/targetstatus.qtpl:45 func StreamTargetsResponseHTML(qw422016 *qt422016.Writer, tsr *targetsStatusResult, filter *requestFilter) { -//line lib/promscrape/targetstatus.qtpl:43 +//line lib/promscrape/targetstatus.qtpl:45 qw422016.N().S(`<!DOCTYPE html><html lang="en"><head>`) -//line lib/promscrape/targetstatus.qtpl:47 +//line lib/promscrape/targetstatus.qtpl:49 htmlcomponents.StreamCommonHeader(qw422016) -//line lib/promscrape/targetstatus.qtpl:47 +//line lib/promscrape/targetstatus.qtpl:49 qw422016.N().S(`<title>Active Targets</title></head><body>`) -//line lib/promscrape/targetstatus.qtpl:51 - htmlcomponents.StreamNavbar(qw422016) -//line lib/promscrape/targetstatus.qtpl:51 - qw422016.N().S(`<div class="container-fluid">`) //line lib/promscrape/targetstatus.qtpl:53 - if tsr.err != nil { -//line lib/promscrape/targetstatus.qtpl:54 - htmlcomponents.StreamErrorNotification(qw422016, tsr.err) -//line lib/promscrape/targetstatus.qtpl:55 - } -//line lib/promscrape/targetstatus.qtpl:55 - qw422016.N().S(`<div class="row"><main class="col-12"><h1>Active Targets</h1><hr />`) -//line lib/promscrape/targetstatus.qtpl:60 - streamfiltersForm(qw422016, filter) -//line lib/promscrape/targetstatus.qtpl:60 - qw422016.N().S(`<hr />`) -//line lib/promscrape/targetstatus.qtpl:62 - streamtargetsTabs(qw422016, tsr, filter, "scrapeTargets") -//line lib/promscrape/targetstatus.qtpl:62 - qw422016.N().S(`</main></div></div></body></html>`) -//line lib/promscrape/targetstatus.qtpl:68 -} - -//line lib/promscrape/targetstatus.qtpl:68 -func WriteTargetsResponseHTML(qq422016 qtio422016.Writer, tsr *targetsStatusResult, filter *requestFilter) { -//line lib/promscrape/targetstatus.qtpl:68 - qw422016 := qt422016.AcquireWriter(qq422016) -//line lib/promscrape/targetstatus.qtpl:68 - StreamTargetsResponseHTML(qw422016, tsr, filter) -//line lib/promscrape/targetstatus.qtpl:68 - qt422016.ReleaseWriter(qw422016) -//line lib/promscrape/targetstatus.qtpl:68 -} - -//line lib/promscrape/targetstatus.qtpl:68 -func TargetsResponseHTML(tsr *targetsStatusResult, filter *requestFilter) string { -//line lib/promscrape/targetstatus.qtpl:68 - qb422016 := qt422016.AcquireByteBuffer() -//line lib/promscrape/targetstatus.qtpl:68 - WriteTargetsResponseHTML(qb422016, tsr, filter) -//line lib/promscrape/targetstatus.qtpl:68 - qs422016 := string(qb422016.B) -//line lib/promscrape/targetstatus.qtpl:68 - qt422016.ReleaseByteBuffer(qb422016) -//line lib/promscrape/targetstatus.qtpl:68 - return qs422016 -//line lib/promscrape/targetstatus.qtpl:68 -} - -//line lib/promscrape/targetstatus.qtpl:70 -func StreamServiceDiscoveryResponse(qw422016 *qt422016.Writer, tsr *targetsStatusResult, filter *requestFilter) { -//line lib/promscrape/targetstatus.qtpl:70 - qw422016.N().S(`<!DOCTYPE html><html lang="en"><head>`) -//line lib/promscrape/targetstatus.qtpl:74 - htmlcomponents.StreamCommonHeader(qw422016) -//line lib/promscrape/targetstatus.qtpl:74 - qw422016.N().S(`<title>Discovered Targets</title></head><body>`) -//line lib/promscrape/targetstatus.qtpl:78 htmlcomponents.StreamNavbar(qw422016) -//line lib/promscrape/targetstatus.qtpl:78 +//line lib/promscrape/targetstatus.qtpl:53 qw422016.N().S(`<div class="container-fluid">`) -//line lib/promscrape/targetstatus.qtpl:80 +//line lib/promscrape/targetstatus.qtpl:55 if tsr.err != nil { -//line lib/promscrape/targetstatus.qtpl:81 +//line lib/promscrape/targetstatus.qtpl:56 htmlcomponents.StreamErrorNotification(qw422016, tsr.err) -//line lib/promscrape/targetstatus.qtpl:82 +//line lib/promscrape/targetstatus.qtpl:57 } -//line lib/promscrape/targetstatus.qtpl:82 - qw422016.N().S(`<div class="row"><main class="col-12"><h1>Discovered Targets</h1><hr />`) -//line lib/promscrape/targetstatus.qtpl:87 +//line lib/promscrape/targetstatus.qtpl:57 + qw422016.N().S(`<div class="row"><main class="col-12"><h1>Active Targets</h1><hr />`) +//line lib/promscrape/targetstatus.qtpl:62 streamfiltersForm(qw422016, filter) -//line lib/promscrape/targetstatus.qtpl:87 +//line lib/promscrape/targetstatus.qtpl:62 qw422016.N().S(`<hr />`) -//line lib/promscrape/targetstatus.qtpl:89 - streamtargetsTabs(qw422016, tsr, filter, "discoveredTargets") -//line lib/promscrape/targetstatus.qtpl:89 +//line lib/promscrape/targetstatus.qtpl:64 + streamtargetsTabs(qw422016, tsr, filter, "scrapeTargets") +//line lib/promscrape/targetstatus.qtpl:64 qw422016.N().S(`</main></div></div></body></html>`) -//line lib/promscrape/targetstatus.qtpl:95 +//line lib/promscrape/targetstatus.qtpl:70 } -//line lib/promscrape/targetstatus.qtpl:95 -func WriteServiceDiscoveryResponse(qq422016 qtio422016.Writer, tsr *targetsStatusResult, filter *requestFilter) { -//line lib/promscrape/targetstatus.qtpl:95 +//line lib/promscrape/targetstatus.qtpl:70 +func WriteTargetsResponseHTML(qq422016 qtio422016.Writer, tsr *targetsStatusResult, filter *requestFilter) { +//line lib/promscrape/targetstatus.qtpl:70 qw422016 := qt422016.AcquireWriter(qq422016) -//line lib/promscrape/targetstatus.qtpl:95 - StreamServiceDiscoveryResponse(qw422016, tsr, filter) -//line lib/promscrape/targetstatus.qtpl:95 +//line lib/promscrape/targetstatus.qtpl:70 + StreamTargetsResponseHTML(qw422016, tsr, filter) +//line lib/promscrape/targetstatus.qtpl:70 qt422016.ReleaseWriter(qw422016) -//line lib/promscrape/targetstatus.qtpl:95 +//line lib/promscrape/targetstatus.qtpl:70 } -//line lib/promscrape/targetstatus.qtpl:95 -func ServiceDiscoveryResponse(tsr *targetsStatusResult, filter *requestFilter) string { -//line lib/promscrape/targetstatus.qtpl:95 +//line lib/promscrape/targetstatus.qtpl:70 +func TargetsResponseHTML(tsr *targetsStatusResult, filter *requestFilter) string { +//line lib/promscrape/targetstatus.qtpl:70 qb422016 := qt422016.AcquireByteBuffer() -//line lib/promscrape/targetstatus.qtpl:95 - WriteServiceDiscoveryResponse(qb422016, tsr, filter) -//line lib/promscrape/targetstatus.qtpl:95 +//line lib/promscrape/targetstatus.qtpl:70 + WriteTargetsResponseHTML(qb422016, tsr, filter) +//line lib/promscrape/targetstatus.qtpl:70 qs422016 := string(qb422016.B) -//line lib/promscrape/targetstatus.qtpl:95 +//line lib/promscrape/targetstatus.qtpl:70 qt422016.ReleaseByteBuffer(qb422016) -//line lib/promscrape/targetstatus.qtpl:95 +//line lib/promscrape/targetstatus.qtpl:70 return qs422016 -//line lib/promscrape/targetstatus.qtpl:95 +//line lib/promscrape/targetstatus.qtpl:70 } -//line lib/promscrape/targetstatus.qtpl:97 -func streamfiltersForm(qw422016 *qt422016.Writer, filter *requestFilter) { -//line lib/promscrape/targetstatus.qtpl:97 - qw422016.N().S(`<div class="row g-3 align-items-center mb-3"><div class="col-auto"><button id="all-btn" type="button" class="btn`) -//line lib/promscrape/targetstatus.qtpl:100 - qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:100 - if !filter.showOnlyUnhealthy { -//line lib/promscrape/targetstatus.qtpl:100 - qw422016.N().S(`btn-secondary`) -//line lib/promscrape/targetstatus.qtpl:100 - } else { -//line lib/promscrape/targetstatus.qtpl:100 - qw422016.N().S(`btn-success`) -//line lib/promscrape/targetstatus.qtpl:100 +//line lib/promscrape/targetstatus.qtpl:72 +func StreamServiceDiscoveryResponse(qw422016 *qt422016.Writer, tsr *targetsStatusResult, filter *requestFilter) { +//line lib/promscrape/targetstatus.qtpl:72 + qw422016.N().S(`<!DOCTYPE html><html lang="en"><head>`) +//line lib/promscrape/targetstatus.qtpl:76 + htmlcomponents.StreamCommonHeader(qw422016) +//line lib/promscrape/targetstatus.qtpl:76 + qw422016.N().S(`<title>Discovered Targets</title></head><body>`) +//line lib/promscrape/targetstatus.qtpl:80 + htmlcomponents.StreamNavbar(qw422016) +//line lib/promscrape/targetstatus.qtpl:80 + qw422016.N().S(`<div class="container-fluid">`) +//line lib/promscrape/targetstatus.qtpl:82 + if tsr.err != nil { +//line lib/promscrape/targetstatus.qtpl:83 + htmlcomponents.StreamErrorNotification(qw422016, tsr.err) +//line lib/promscrape/targetstatus.qtpl:84 } -//line lib/promscrape/targetstatus.qtpl:100 - qw422016.N().S(`"onclick="location.href='?`) -//line lib/promscrape/targetstatus.qtpl:101 - streamqueryArgs(qw422016, filter, map[string]string{"show_only_unhealthy": "false"}) -//line lib/promscrape/targetstatus.qtpl:101 - qw422016.N().S(`'">All</button></div><div class="col-auto"><button id="unhealthy-btn" type="button" class="btn`) -//line lib/promscrape/targetstatus.qtpl:106 - qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:106 - if filter.showOnlyUnhealthy { -//line lib/promscrape/targetstatus.qtpl:106 - qw422016.N().S(`btn-secondary`) -//line lib/promscrape/targetstatus.qtpl:106 - } else { -//line lib/promscrape/targetstatus.qtpl:106 - qw422016.N().S(`btn-danger`) -//line lib/promscrape/targetstatus.qtpl:106 - } -//line lib/promscrape/targetstatus.qtpl:106 - qw422016.N().S(`"onclick="location.href='?`) -//line lib/promscrape/targetstatus.qtpl:107 - streamqueryArgs(qw422016, filter, map[string]string{"show_only_unhealthy": "true"}) -//line lib/promscrape/targetstatus.qtpl:107 - qw422016.N().S(`'">Unhealthy</button></div><div class="col-auto"><button type="button" class="btn btn-primary" onclick="document.querySelectorAll('.scrape-job').forEach((el) => { el.style.display = 'none'; })">Collapse all</button></div><div class="col-auto"><button type="button" class="btn btn-secondary" onclick="document.querySelectorAll('.scrape-job').forEach((el) => { el.style.display = 'block'; })">Expand all</button></div><div class="col-auto"><button type="button" class="btn btn-success" onclick="document.getElementById('filters').style.display='block'">Filter targets</button></div></div><div id="filters"`) -//line lib/promscrape/targetstatus.qtpl:127 - if filter.endpointSearch == "" && filter.labelSearch == "" { -//line lib/promscrape/targetstatus.qtpl:127 - qw422016.N().S(`style="display:none"`) -//line lib/promscrape/targetstatus.qtpl:127 - } -//line lib/promscrape/targetstatus.qtpl:127 - qw422016.N().S(`><form class="form-horizontal"><div class="form-group mb-3"><label for="endpoint_search" class="col-sm-10 control-label">Endpoint filter (<a target="_blank" href="https://github.com/google/re2/wiki/Syntax">Regexp</a> is accepted)</label><div class="col-sm-10"><input type="text" id="endpoint_search" name="endpoint_search"placeholder="For example, 127.0.0.1" class="form-control" value="`) -//line lib/promscrape/targetstatus.qtpl:133 - qw422016.E().S(filter.endpointSearch) -//line lib/promscrape/targetstatus.qtpl:133 - qw422016.N().S(`"/></div></div><div class="form-group mb-3"><label for="label_search" class="col-sm-10 control-label">Labels filter (<a target="_blank" href="https://prometheus.io/docs/prometheus/latest/querying/basics/#time-series-selectors">Arbitrary time series selectors</a> are accepted)</label><div class="col-sm-10"><input type="text" id="label_search" name="label_search"placeholder="For example, {instance=~'.+:9100'}" class="form-control" value="`) -//line lib/promscrape/targetstatus.qtpl:140 - qw422016.E().S(filter.labelSearch) -//line lib/promscrape/targetstatus.qtpl:140 - qw422016.N().S(`"/></div></div><input type="hidden" name="show_only_unhealthy" value="`) -//line lib/promscrape/targetstatus.qtpl:143 - qw422016.E().V(filter.showOnlyUnhealthy) -//line lib/promscrape/targetstatus.qtpl:143 - qw422016.N().S(`"/><input type="hidden" name="show_original_labels" value="`) -//line lib/promscrape/targetstatus.qtpl:144 - qw422016.E().V(filter.showOriginalLabels) -//line lib/promscrape/targetstatus.qtpl:144 - qw422016.N().S(`"/><button type="submit" class="btn btn-success mb-3">Submit</button><button type="button" class="btn btn-danger mb-3" onclick="location.href='?'">Clear target filters</button></form></div>`) -//line lib/promscrape/targetstatus.qtpl:149 -} - -//line lib/promscrape/targetstatus.qtpl:149 -func writefiltersForm(qq422016 qtio422016.Writer, filter *requestFilter) { -//line lib/promscrape/targetstatus.qtpl:149 - qw422016 := qt422016.AcquireWriter(qq422016) -//line lib/promscrape/targetstatus.qtpl:149 +//line lib/promscrape/targetstatus.qtpl:84 + qw422016.N().S(`<div class="row"><main class="col-12"><h1>Discovered Targets</h1><hr />`) +//line lib/promscrape/targetstatus.qtpl:89 streamfiltersForm(qw422016, filter) -//line lib/promscrape/targetstatus.qtpl:149 - qt422016.ReleaseWriter(qw422016) -//line lib/promscrape/targetstatus.qtpl:149 +//line lib/promscrape/targetstatus.qtpl:89 + qw422016.N().S(`<hr />`) +//line lib/promscrape/targetstatus.qtpl:91 + streamtargetsTabs(qw422016, tsr, filter, "discoveredTargets") +//line lib/promscrape/targetstatus.qtpl:91 + qw422016.N().S(`</main></div></div></body></html>`) +//line lib/promscrape/targetstatus.qtpl:97 } -//line lib/promscrape/targetstatus.qtpl:149 -func filtersForm(filter *requestFilter) string { -//line lib/promscrape/targetstatus.qtpl:149 - qb422016 := qt422016.AcquireByteBuffer() -//line lib/promscrape/targetstatus.qtpl:149 - writefiltersForm(qb422016, filter) -//line lib/promscrape/targetstatus.qtpl:149 - qs422016 := string(qb422016.B) -//line lib/promscrape/targetstatus.qtpl:149 - qt422016.ReleaseByteBuffer(qb422016) -//line lib/promscrape/targetstatus.qtpl:149 - return qs422016 -//line lib/promscrape/targetstatus.qtpl:149 -} - -//line lib/promscrape/targetstatus.qtpl:151 -func streamtargetsTabs(qw422016 *qt422016.Writer, tsr *targetsStatusResult, filter *requestFilter, activeTab string) { -//line lib/promscrape/targetstatus.qtpl:151 - qw422016.N().S(`<ul class="nav nav-tabs" id="myTab" role="tablist"><li class="nav-item" role="presentation"><button class="nav-link`) -//line lib/promscrape/targetstatus.qtpl:154 - if activeTab == "scrapeTargets" { -//line lib/promscrape/targetstatus.qtpl:154 - qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:154 - qw422016.N().S(`active`) -//line lib/promscrape/targetstatus.qtpl:154 - } -//line lib/promscrape/targetstatus.qtpl:154 - qw422016.N().S(`" type="button" role="tab"onclick="location.href='targets?`) -//line lib/promscrape/targetstatus.qtpl:155 - streamqueryArgs(qw422016, filter, nil) -//line lib/promscrape/targetstatus.qtpl:155 - qw422016.N().S(`'">Active targets</button></li><li class="nav-item" role="presentation"><button class="nav-link`) -//line lib/promscrape/targetstatus.qtpl:160 - if activeTab == "discoveredTargets" { -//line lib/promscrape/targetstatus.qtpl:160 - qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:160 - qw422016.N().S(`active`) -//line lib/promscrape/targetstatus.qtpl:160 - } -//line lib/promscrape/targetstatus.qtpl:160 - qw422016.N().S(`" type="button" role="tab"onclick="location.href='service-discovery?`) -//line lib/promscrape/targetstatus.qtpl:161 - streamqueryArgs(qw422016, filter, nil) -//line lib/promscrape/targetstatus.qtpl:161 - qw422016.N().S(`'">Discovered targets</button></li></ul><div class="tab-content"><div class="tab-pane active" role="tabpanel">`) -//line lib/promscrape/targetstatus.qtpl:168 - switch activeTab { -//line lib/promscrape/targetstatus.qtpl:169 - case "scrapeTargets": -//line lib/promscrape/targetstatus.qtpl:170 - streamscrapeTargets(qw422016, tsr) -//line lib/promscrape/targetstatus.qtpl:171 - case "discoveredTargets": -//line lib/promscrape/targetstatus.qtpl:172 - streamdiscoveredTargets(qw422016, tsr) -//line lib/promscrape/targetstatus.qtpl:173 - } -//line lib/promscrape/targetstatus.qtpl:173 - qw422016.N().S(`</div></div>`) -//line lib/promscrape/targetstatus.qtpl:176 -} - -//line lib/promscrape/targetstatus.qtpl:176 -func writetargetsTabs(qq422016 qtio422016.Writer, tsr *targetsStatusResult, filter *requestFilter, activeTab string) { -//line lib/promscrape/targetstatus.qtpl:176 +//line lib/promscrape/targetstatus.qtpl:97 +func WriteServiceDiscoveryResponse(qq422016 qtio422016.Writer, tsr *targetsStatusResult, filter *requestFilter) { +//line lib/promscrape/targetstatus.qtpl:97 qw422016 := qt422016.AcquireWriter(qq422016) -//line lib/promscrape/targetstatus.qtpl:176 - streamtargetsTabs(qw422016, tsr, filter, activeTab) -//line lib/promscrape/targetstatus.qtpl:176 +//line lib/promscrape/targetstatus.qtpl:97 + StreamServiceDiscoveryResponse(qw422016, tsr, filter) +//line lib/promscrape/targetstatus.qtpl:97 qt422016.ReleaseWriter(qw422016) -//line lib/promscrape/targetstatus.qtpl:176 +//line lib/promscrape/targetstatus.qtpl:97 } -//line lib/promscrape/targetstatus.qtpl:176 -func targetsTabs(tsr *targetsStatusResult, filter *requestFilter, activeTab string) string { -//line lib/promscrape/targetstatus.qtpl:176 +//line lib/promscrape/targetstatus.qtpl:97 +func ServiceDiscoveryResponse(tsr *targetsStatusResult, filter *requestFilter) string { +//line lib/promscrape/targetstatus.qtpl:97 qb422016 := qt422016.AcquireByteBuffer() -//line lib/promscrape/targetstatus.qtpl:176 - writetargetsTabs(qb422016, tsr, filter, activeTab) -//line lib/promscrape/targetstatus.qtpl:176 +//line lib/promscrape/targetstatus.qtpl:97 + WriteServiceDiscoveryResponse(qb422016, tsr, filter) +//line lib/promscrape/targetstatus.qtpl:97 qs422016 := string(qb422016.B) -//line lib/promscrape/targetstatus.qtpl:176 +//line lib/promscrape/targetstatus.qtpl:97 qt422016.ReleaseByteBuffer(qb422016) -//line lib/promscrape/targetstatus.qtpl:176 +//line lib/promscrape/targetstatus.qtpl:97 return qs422016 -//line lib/promscrape/targetstatus.qtpl:176 +//line lib/promscrape/targetstatus.qtpl:97 +} + +//line lib/promscrape/targetstatus.qtpl:99 +func streamfiltersForm(qw422016 *qt422016.Writer, filter *requestFilter) { +//line lib/promscrape/targetstatus.qtpl:99 + qw422016.N().S(`<div class="row g-3 align-items-center mb-3"><div class="col-auto"><button id="all-btn" type="button" class="btn`) +//line lib/promscrape/targetstatus.qtpl:102 + qw422016.N().S(` `) +//line lib/promscrape/targetstatus.qtpl:102 + if !filter.showOnlyUnhealthy { +//line lib/promscrape/targetstatus.qtpl:102 + qw422016.N().S(`btn-secondary`) +//line lib/promscrape/targetstatus.qtpl:102 + } else { +//line lib/promscrape/targetstatus.qtpl:102 + qw422016.N().S(`btn-success`) +//line lib/promscrape/targetstatus.qtpl:102 + } +//line lib/promscrape/targetstatus.qtpl:102 + qw422016.N().S(`"onclick="location.href='?`) +//line lib/promscrape/targetstatus.qtpl:103 + streamqueryArgs(qw422016, filter, map[string]string{"show_only_unhealthy": "false"}) +//line lib/promscrape/targetstatus.qtpl:103 + qw422016.N().S(`'">All</button></div><div class="col-auto"><button id="unhealthy-btn" type="button" class="btn`) +//line lib/promscrape/targetstatus.qtpl:108 + qw422016.N().S(` `) +//line lib/promscrape/targetstatus.qtpl:108 + if filter.showOnlyUnhealthy { +//line lib/promscrape/targetstatus.qtpl:108 + qw422016.N().S(`btn-secondary`) +//line lib/promscrape/targetstatus.qtpl:108 + } else { +//line lib/promscrape/targetstatus.qtpl:108 + qw422016.N().S(`btn-danger`) +//line lib/promscrape/targetstatus.qtpl:108 + } +//line lib/promscrape/targetstatus.qtpl:108 + qw422016.N().S(`"onclick="location.href='?`) +//line lib/promscrape/targetstatus.qtpl:109 + streamqueryArgs(qw422016, filter, map[string]string{"show_only_unhealthy": "true"}) +//line lib/promscrape/targetstatus.qtpl:109 + qw422016.N().S(`'">Unhealthy</button></div><div class="col-auto"><button type="button" class="btn btn-primary" onclick="document.querySelectorAll('.scrape-job').forEach((el) => { el.style.display = 'none'; })">Collapse all</button></div><div class="col-auto"><button type="button" class="btn btn-secondary" onclick="document.querySelectorAll('.scrape-job').forEach((el) => { el.style.display = 'block'; })">Expand all</button></div><div class="col-auto"><button type="button" class="btn btn-success" onclick="document.getElementById('filters').style.display='block'">Filter targets</button></div></div><div id="filters"`) +//line lib/promscrape/targetstatus.qtpl:129 + if filter.endpointSearch == "" && filter.labelSearch == "" { +//line lib/promscrape/targetstatus.qtpl:129 + qw422016.N().S(`style="display:none"`) +//line lib/promscrape/targetstatus.qtpl:129 + } +//line lib/promscrape/targetstatus.qtpl:129 + qw422016.N().S(`><form class="form-horizontal"><div class="form-group mb-3"><label for="endpoint_search" class="col-sm-10 control-label">Endpoint filter (<a target="_blank" href="https://github.com/google/re2/wiki/Syntax">Regexp</a> is accepted)</label><div class="col-sm-10"><input type="text" id="endpoint_search" name="endpoint_search"placeholder="For example, 127.0.0.1" class="form-control" value="`) +//line lib/promscrape/targetstatus.qtpl:135 + qw422016.E().S(filter.endpointSearch) +//line lib/promscrape/targetstatus.qtpl:135 + qw422016.N().S(`"/></div></div><div class="form-group mb-3"><label for="label_search" class="col-sm-10 control-label">Labels filter (<a target="_blank" href="https://prometheus.io/docs/prometheus/latest/querying/basics/#time-series-selectors">Arbitrary time series selectors</a> are accepted)</label><div class="col-sm-10"><input type="text" id="label_search" name="label_search"placeholder="For example, {instance=~'.+:9100'}" class="form-control" value="`) +//line lib/promscrape/targetstatus.qtpl:142 + qw422016.E().S(filter.labelSearch) +//line lib/promscrape/targetstatus.qtpl:142 + qw422016.N().S(`"/></div></div><input type="hidden" name="show_only_unhealthy" value="`) +//line lib/promscrape/targetstatus.qtpl:145 + qw422016.E().V(filter.showOnlyUnhealthy) +//line lib/promscrape/targetstatus.qtpl:145 + qw422016.N().S(`"/><input type="hidden" name="show_original_labels" value="`) +//line lib/promscrape/targetstatus.qtpl:146 + qw422016.E().V(filter.showOriginalLabels) +//line lib/promscrape/targetstatus.qtpl:146 + qw422016.N().S(`"/><button type="submit" class="btn btn-success mb-3">Submit</button><button type="button" class="btn btn-danger mb-3" onclick="location.href='?'">Clear target filters</button></form></div>`) +//line lib/promscrape/targetstatus.qtpl:151 +} + +//line lib/promscrape/targetstatus.qtpl:151 +func writefiltersForm(qq422016 qtio422016.Writer, filter *requestFilter) { +//line lib/promscrape/targetstatus.qtpl:151 + qw422016 := qt422016.AcquireWriter(qq422016) +//line lib/promscrape/targetstatus.qtpl:151 + streamfiltersForm(qw422016, filter) +//line lib/promscrape/targetstatus.qtpl:151 + qt422016.ReleaseWriter(qw422016) +//line lib/promscrape/targetstatus.qtpl:151 +} + +//line lib/promscrape/targetstatus.qtpl:151 +func filtersForm(filter *requestFilter) string { +//line lib/promscrape/targetstatus.qtpl:151 + qb422016 := qt422016.AcquireByteBuffer() +//line lib/promscrape/targetstatus.qtpl:151 + writefiltersForm(qb422016, filter) +//line lib/promscrape/targetstatus.qtpl:151 + qs422016 := string(qb422016.B) +//line lib/promscrape/targetstatus.qtpl:151 + qt422016.ReleaseByteBuffer(qb422016) +//line lib/promscrape/targetstatus.qtpl:151 + return qs422016 +//line lib/promscrape/targetstatus.qtpl:151 +} + +//line lib/promscrape/targetstatus.qtpl:153 +func streamtargetsTabs(qw422016 *qt422016.Writer, tsr *targetsStatusResult, filter *requestFilter, activeTab string) { +//line lib/promscrape/targetstatus.qtpl:153 + qw422016.N().S(`<ul class="nav nav-tabs" id="myTab" role="tablist"><li class="nav-item" role="presentation"><button class="nav-link`) +//line lib/promscrape/targetstatus.qtpl:156 + if activeTab == "scrapeTargets" { +//line lib/promscrape/targetstatus.qtpl:156 + qw422016.N().S(` `) +//line lib/promscrape/targetstatus.qtpl:156 + qw422016.N().S(`active`) +//line lib/promscrape/targetstatus.qtpl:156 + } +//line lib/promscrape/targetstatus.qtpl:156 + qw422016.N().S(`" type="button" role="tab"onclick="location.href='targets?`) +//line lib/promscrape/targetstatus.qtpl:157 + streamqueryArgs(qw422016, filter, nil) +//line lib/promscrape/targetstatus.qtpl:157 + qw422016.N().S(`'">Active targets</button></li><li class="nav-item" role="presentation"><button class="nav-link`) +//line lib/promscrape/targetstatus.qtpl:162 + if activeTab == "discoveredTargets" { +//line lib/promscrape/targetstatus.qtpl:162 + qw422016.N().S(` `) +//line lib/promscrape/targetstatus.qtpl:162 + qw422016.N().S(`active`) +//line lib/promscrape/targetstatus.qtpl:162 + } +//line lib/promscrape/targetstatus.qtpl:162 + qw422016.N().S(`" type="button" role="tab"onclick="location.href='service-discovery?`) +//line lib/promscrape/targetstatus.qtpl:163 + streamqueryArgs(qw422016, filter, nil) +//line lib/promscrape/targetstatus.qtpl:163 + qw422016.N().S(`'">Discovered targets</button></li></ul><div class="tab-content"><div class="tab-pane active" role="tabpanel">`) +//line lib/promscrape/targetstatus.qtpl:170 + switch activeTab { +//line lib/promscrape/targetstatus.qtpl:171 + case "scrapeTargets": +//line lib/promscrape/targetstatus.qtpl:172 + streamscrapeTargets(qw422016, tsr) +//line lib/promscrape/targetstatus.qtpl:173 + case "discoveredTargets": +//line lib/promscrape/targetstatus.qtpl:174 + streamdiscoveredTargets(qw422016, tsr) +//line lib/promscrape/targetstatus.qtpl:175 + } +//line lib/promscrape/targetstatus.qtpl:175 + qw422016.N().S(`</div></div>`) +//line lib/promscrape/targetstatus.qtpl:178 } //line lib/promscrape/targetstatus.qtpl:178 -func streamscrapeTargets(qw422016 *qt422016.Writer, tsr *targetsStatusResult) { +func writetargetsTabs(qq422016 qtio422016.Writer, tsr *targetsStatusResult, filter *requestFilter, activeTab string) { //line lib/promscrape/targetstatus.qtpl:178 + qw422016 := qt422016.AcquireWriter(qq422016) +//line lib/promscrape/targetstatus.qtpl:178 + streamtargetsTabs(qw422016, tsr, filter, activeTab) +//line lib/promscrape/targetstatus.qtpl:178 + qt422016.ReleaseWriter(qw422016) +//line lib/promscrape/targetstatus.qtpl:178 +} + +//line lib/promscrape/targetstatus.qtpl:178 +func targetsTabs(tsr *targetsStatusResult, filter *requestFilter, activeTab string) string { +//line lib/promscrape/targetstatus.qtpl:178 + qb422016 := qt422016.AcquireByteBuffer() +//line lib/promscrape/targetstatus.qtpl:178 + writetargetsTabs(qb422016, tsr, filter, activeTab) +//line lib/promscrape/targetstatus.qtpl:178 + qs422016 := string(qb422016.B) +//line lib/promscrape/targetstatus.qtpl:178 + qt422016.ReleaseByteBuffer(qb422016) +//line lib/promscrape/targetstatus.qtpl:178 + return qs422016 +//line lib/promscrape/targetstatus.qtpl:178 +} + +//line lib/promscrape/targetstatus.qtpl:180 +func streamscrapeTargets(qw422016 *qt422016.Writer, tsr *targetsStatusResult) { +//line lib/promscrape/targetstatus.qtpl:180 qw422016.N().S(`<div class="row mt-4"><div class="col-12">`) -//line lib/promscrape/targetstatus.qtpl:181 - for i, jts := range tsr.jobTargetsStatuses { -//line lib/promscrape/targetstatus.qtpl:182 - streamscrapeJobTargets(qw422016, i, jts, tsr.hasOriginalLabels) //line lib/promscrape/targetstatus.qtpl:183 - } + for i, jts := range tsr.jobTargetsStatuses { //line lib/promscrape/targetstatus.qtpl:184 - for i, jobName := range tsr.emptyJobs { + streamscrapeJobTargets(qw422016, i, jts, tsr.hasOriginalLabels) +//line lib/promscrape/targetstatus.qtpl:185 + } //line lib/promscrape/targetstatus.qtpl:186 + for i, jobName := range tsr.emptyJobs { +//line lib/promscrape/targetstatus.qtpl:188 num := i + len(tsr.jobTargetsStatuses) jts := &jobTargetsStatuses{ jobName: jobName, } -//line lib/promscrape/targetstatus.qtpl:191 +//line lib/promscrape/targetstatus.qtpl:193 streamscrapeJobTargets(qw422016, num, jts, tsr.hasOriginalLabels) -//line lib/promscrape/targetstatus.qtpl:192 +//line lib/promscrape/targetstatus.qtpl:194 } -//line lib/promscrape/targetstatus.qtpl:192 +//line lib/promscrape/targetstatus.qtpl:194 qw422016.N().S(`</div></div>`) -//line lib/promscrape/targetstatus.qtpl:195 +//line lib/promscrape/targetstatus.qtpl:197 } -//line lib/promscrape/targetstatus.qtpl:195 +//line lib/promscrape/targetstatus.qtpl:197 func writescrapeTargets(qq422016 qtio422016.Writer, tsr *targetsStatusResult) { -//line lib/promscrape/targetstatus.qtpl:195 +//line lib/promscrape/targetstatus.qtpl:197 qw422016 := qt422016.AcquireWriter(qq422016) -//line lib/promscrape/targetstatus.qtpl:195 +//line lib/promscrape/targetstatus.qtpl:197 streamscrapeTargets(qw422016, tsr) -//line lib/promscrape/targetstatus.qtpl:195 +//line lib/promscrape/targetstatus.qtpl:197 qt422016.ReleaseWriter(qw422016) -//line lib/promscrape/targetstatus.qtpl:195 +//line lib/promscrape/targetstatus.qtpl:197 } -//line lib/promscrape/targetstatus.qtpl:195 +//line lib/promscrape/targetstatus.qtpl:197 func scrapeTargets(tsr *targetsStatusResult) string { -//line lib/promscrape/targetstatus.qtpl:195 +//line lib/promscrape/targetstatus.qtpl:197 qb422016 := qt422016.AcquireByteBuffer() -//line lib/promscrape/targetstatus.qtpl:195 +//line lib/promscrape/targetstatus.qtpl:197 writescrapeTargets(qb422016, tsr) -//line lib/promscrape/targetstatus.qtpl:195 +//line lib/promscrape/targetstatus.qtpl:197 qs422016 := string(qb422016.B) -//line lib/promscrape/targetstatus.qtpl:195 +//line lib/promscrape/targetstatus.qtpl:197 qt422016.ReleaseByteBuffer(qb422016) -//line lib/promscrape/targetstatus.qtpl:195 +//line lib/promscrape/targetstatus.qtpl:197 return qs422016 -//line lib/promscrape/targetstatus.qtpl:195 +//line lib/promscrape/targetstatus.qtpl:197 } -//line lib/promscrape/targetstatus.qtpl:197 +//line lib/promscrape/targetstatus.qtpl:199 func streamscrapeJobTargets(qw422016 *qt422016.Writer, num int, jts *jobTargetsStatuses, hasOriginalLabels bool) { -//line lib/promscrape/targetstatus.qtpl:197 +//line lib/promscrape/targetstatus.qtpl:199 qw422016.N().S(`<div class="row mb-4"><div class="col-12"><h4><span class="me-2">`) -//line lib/promscrape/targetstatus.qtpl:201 +//line lib/promscrape/targetstatus.qtpl:203 qw422016.E().S(jts.jobName) -//line lib/promscrape/targetstatus.qtpl:201 +//line lib/promscrape/targetstatus.qtpl:203 qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:201 +//line lib/promscrape/targetstatus.qtpl:203 qw422016.N().S(`(`) -//line lib/promscrape/targetstatus.qtpl:201 +//line lib/promscrape/targetstatus.qtpl:203 qw422016.N().D(jts.upCount) -//line lib/promscrape/targetstatus.qtpl:201 +//line lib/promscrape/targetstatus.qtpl:203 qw422016.N().S(`/`) -//line lib/promscrape/targetstatus.qtpl:201 +//line lib/promscrape/targetstatus.qtpl:203 qw422016.N().D(jts.targetsTotal) -//line lib/promscrape/targetstatus.qtpl:201 +//line lib/promscrape/targetstatus.qtpl:203 qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:201 +//line lib/promscrape/targetstatus.qtpl:203 qw422016.N().S(`up)</span>`) -//line lib/promscrape/targetstatus.qtpl:202 +//line lib/promscrape/targetstatus.qtpl:204 streamshowHideScrapeJobButtons(qw422016, num) -//line lib/promscrape/targetstatus.qtpl:202 +//line lib/promscrape/targetstatus.qtpl:204 qw422016.N().S(`</h4><div id="scrape-job-`) -//line lib/promscrape/targetstatus.qtpl:204 +//line lib/promscrape/targetstatus.qtpl:206 qw422016.N().D(num) -//line lib/promscrape/targetstatus.qtpl:204 +//line lib/promscrape/targetstatus.qtpl:206 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:211 +//line lib/promscrape/targetstatus.qtpl:213 if hasOriginalLabels { -//line lib/promscrape/targetstatus.qtpl:211 +//line lib/promscrape/targetstatus.qtpl:213 qw422016.N().S(`<th scope="col" title="debug relabeling">Debug relabeling</th>`) -//line lib/promscrape/targetstatus.qtpl:213 +//line lib/promscrape/targetstatus.qtpl:215 } -//line lib/promscrape/targetstatus.qtpl:213 +//line lib/promscrape/targetstatus.qtpl:215 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:223 - for _, ts := range jts.targetsStatus { //line lib/promscrape/targetstatus.qtpl:225 + for _, ts := range jts.targetsStatus { +//line lib/promscrape/targetstatus.qtpl:227 endpoint := ts.sw.Config.ScrapeURL originalLabels := ts.sw.Config.OriginalLabels // The target is uniquely identified by a pointer to its original labels. targetID := getLabelsID(originalLabels) -//line lib/promscrape/targetstatus.qtpl:230 +//line lib/promscrape/targetstatus.qtpl:232 qw422016.N().S(`<tr`) -//line lib/promscrape/targetstatus.qtpl:231 +//line lib/promscrape/targetstatus.qtpl:233 if !ts.up { -//line lib/promscrape/targetstatus.qtpl:231 +//line lib/promscrape/targetstatus.qtpl:233 qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:231 +//line lib/promscrape/targetstatus.qtpl:233 qw422016.N().S(`class="alert alert-danger" role="alert"`) -//line lib/promscrape/targetstatus.qtpl:231 +//line lib/promscrape/targetstatus.qtpl:233 } -//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:233 +//line lib/promscrape/targetstatus.qtpl:235 qw422016.E().S(endpoint) -//line lib/promscrape/targetstatus.qtpl:233 +//line lib/promscrape/targetstatus.qtpl:235 qw422016.N().S(`" target="_blank">`) -//line lib/promscrape/targetstatus.qtpl:233 +//line lib/promscrape/targetstatus.qtpl:235 qw422016.E().S(endpoint) -//line lib/promscrape/targetstatus.qtpl:233 +//line lib/promscrape/targetstatus.qtpl:235 qw422016.N().S(`</a>`) -//line lib/promscrape/targetstatus.qtpl:234 +//line lib/promscrape/targetstatus.qtpl:236 if hasOriginalLabels { -//line lib/promscrape/targetstatus.qtpl:235 +//line lib/promscrape/targetstatus.qtpl:237 qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:235 +//line lib/promscrape/targetstatus.qtpl:237 qw422016.N().S(`(<a href="target_response?id=`) -//line lib/promscrape/targetstatus.qtpl:236 +//line lib/promscrape/targetstatus.qtpl:238 qw422016.E().S(targetID) -//line lib/promscrape/targetstatus.qtpl:236 +//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:238 +//line lib/promscrape/targetstatus.qtpl:240 } -//line lib/promscrape/targetstatus.qtpl:238 +//line lib/promscrape/targetstatus.qtpl:240 qw422016.N().S(`</td><td>`) -//line lib/promscrape/targetstatus.qtpl:241 +//line lib/promscrape/targetstatus.qtpl:243 if ts.up { -//line lib/promscrape/targetstatus.qtpl:241 +//line lib/promscrape/targetstatus.qtpl:243 qw422016.N().S(`<span class="badge bg-success">UP</span>`) -//line lib/promscrape/targetstatus.qtpl:243 +//line lib/promscrape/targetstatus.qtpl:245 } else { -//line lib/promscrape/targetstatus.qtpl:243 +//line lib/promscrape/targetstatus.qtpl:245 qw422016.N().S(`<span class="badge bg-danger">DOWN</span>`) -//line lib/promscrape/targetstatus.qtpl:245 +//line lib/promscrape/targetstatus.qtpl:247 } -//line lib/promscrape/targetstatus.qtpl:245 +//line lib/promscrape/targetstatus.qtpl:247 qw422016.N().S(`</td><td class="labels"><div`) -//line lib/promscrape/targetstatus.qtpl:249 +//line lib/promscrape/targetstatus.qtpl:251 if hasOriginalLabels { -//line lib/promscrape/targetstatus.qtpl:250 +//line lib/promscrape/targetstatus.qtpl:252 qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:250 +//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:251 +//line lib/promscrape/targetstatus.qtpl:253 qw422016.E().S(targetID) -//line lib/promscrape/targetstatus.qtpl:251 +//line lib/promscrape/targetstatus.qtpl:253 qw422016.N().S(`').style.display='block'"`) -//line lib/promscrape/targetstatus.qtpl:252 +//line lib/promscrape/targetstatus.qtpl:254 } -//line lib/promscrape/targetstatus.qtpl:252 +//line lib/promscrape/targetstatus.qtpl:254 qw422016.N().S(`>`) -//line lib/promscrape/targetstatus.qtpl:254 +//line lib/promscrape/targetstatus.qtpl:256 streamformatLabels(qw422016, ts.sw.Config.Labels) -//line lib/promscrape/targetstatus.qtpl:254 +//line lib/promscrape/targetstatus.qtpl:256 qw422016.N().S(`</div>`) -//line lib/promscrape/targetstatus.qtpl:256 +//line lib/promscrape/targetstatus.qtpl:258 if hasOriginalLabels { -//line lib/promscrape/targetstatus.qtpl:256 +//line lib/promscrape/targetstatus.qtpl:258 qw422016.N().S(`<div style="display:none" id="original-labels-`) -//line lib/promscrape/targetstatus.qtpl:257 +//line lib/promscrape/targetstatus.qtpl:259 qw422016.E().S(targetID) -//line lib/promscrape/targetstatus.qtpl:257 +//line lib/promscrape/targetstatus.qtpl:259 qw422016.N().S(`">`) -//line lib/promscrape/targetstatus.qtpl:258 +//line lib/promscrape/targetstatus.qtpl:260 streamformatLabels(qw422016, originalLabels) -//line lib/promscrape/targetstatus.qtpl:258 +//line lib/promscrape/targetstatus.qtpl:260 qw422016.N().S(`</div>`) -//line lib/promscrape/targetstatus.qtpl:260 +//line lib/promscrape/targetstatus.qtpl:262 } -//line lib/promscrape/targetstatus.qtpl:260 +//line lib/promscrape/targetstatus.qtpl:262 qw422016.N().S(`</td>`) -//line lib/promscrape/targetstatus.qtpl:262 +//line lib/promscrape/targetstatus.qtpl:264 if hasOriginalLabels { -//line lib/promscrape/targetstatus.qtpl:262 +//line lib/promscrape/targetstatus.qtpl:264 qw422016.N().S(`<td><a href="target-relabel-debug?id=`) -//line lib/promscrape/targetstatus.qtpl:264 +//line lib/promscrape/targetstatus.qtpl:266 qw422016.E().S(targetID) -//line lib/promscrape/targetstatus.qtpl:264 +//line lib/promscrape/targetstatus.qtpl:266 qw422016.N().S(`" target="_blank">target</a>`) -//line lib/promscrape/targetstatus.qtpl:264 +//line lib/promscrape/targetstatus.qtpl:266 qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:264 +//line lib/promscrape/targetstatus.qtpl:266 qw422016.N().S(`<a href="metric-relabel-debug?id=`) -//line lib/promscrape/targetstatus.qtpl:265 +//line lib/promscrape/targetstatus.qtpl:267 qw422016.E().S(targetID) -//line lib/promscrape/targetstatus.qtpl:265 +//line lib/promscrape/targetstatus.qtpl:267 qw422016.N().S(`" target="_blank">metrics</a></td>`) -//line lib/promscrape/targetstatus.qtpl:267 +//line lib/promscrape/targetstatus.qtpl:269 } -//line lib/promscrape/targetstatus.qtpl:267 +//line lib/promscrape/targetstatus.qtpl:269 qw422016.N().S(`<td>`) -//line lib/promscrape/targetstatus.qtpl:268 +//line lib/promscrape/targetstatus.qtpl:270 qw422016.N().D(ts.scrapesTotal) -//line lib/promscrape/targetstatus.qtpl:268 +//line lib/promscrape/targetstatus.qtpl:270 qw422016.N().S(`</td><td>`) -//line lib/promscrape/targetstatus.qtpl:269 +//line lib/promscrape/targetstatus.qtpl:271 qw422016.N().D(ts.scrapesFailed) -//line lib/promscrape/targetstatus.qtpl:269 +//line lib/promscrape/targetstatus.qtpl:271 qw422016.N().S(`</td><td>`) -//line lib/promscrape/targetstatus.qtpl:270 +//line lib/promscrape/targetstatus.qtpl:272 qw422016.E().S(ts.getDurationFromLastScrape()) -//line lib/promscrape/targetstatus.qtpl:270 +//line lib/promscrape/targetstatus.qtpl:272 qw422016.N().S(`<td>`) -//line lib/promscrape/targetstatus.qtpl:271 +//line lib/promscrape/targetstatus.qtpl:273 qw422016.N().D(int(ts.scrapeDuration)) -//line lib/promscrape/targetstatus.qtpl:271 +//line lib/promscrape/targetstatus.qtpl:273 qw422016.N().S(`ms</td><td>`) -//line lib/promscrape/targetstatus.qtpl:272 +//line lib/promscrape/targetstatus.qtpl:274 qw422016.N().D(ts.samplesScraped) -//line lib/promscrape/targetstatus.qtpl:272 +//line lib/promscrape/targetstatus.qtpl:274 qw422016.N().S(`</td><td>`) -//line lib/promscrape/targetstatus.qtpl:273 +//line lib/promscrape/targetstatus.qtpl:275 if ts.err != nil { -//line lib/promscrape/targetstatus.qtpl:273 +//line lib/promscrape/targetstatus.qtpl:275 qw422016.E().S(ts.err.Error()) -//line lib/promscrape/targetstatus.qtpl:273 +//line lib/promscrape/targetstatus.qtpl:275 } -//line lib/promscrape/targetstatus.qtpl:273 +//line lib/promscrape/targetstatus.qtpl:275 qw422016.N().S(`</td></tr>`) -//line lib/promscrape/targetstatus.qtpl:275 +//line lib/promscrape/targetstatus.qtpl:277 } -//line lib/promscrape/targetstatus.qtpl:275 +//line lib/promscrape/targetstatus.qtpl:277 qw422016.N().S(`</tbody></table></div></div></div>`) -//line lib/promscrape/targetstatus.qtpl:281 -} - -//line lib/promscrape/targetstatus.qtpl:281 -func writescrapeJobTargets(qq422016 qtio422016.Writer, num int, jts *jobTargetsStatuses, hasOriginalLabels bool) { -//line lib/promscrape/targetstatus.qtpl:281 - qw422016 := qt422016.AcquireWriter(qq422016) -//line lib/promscrape/targetstatus.qtpl:281 - streamscrapeJobTargets(qw422016, num, jts, hasOriginalLabels) -//line lib/promscrape/targetstatus.qtpl:281 - qt422016.ReleaseWriter(qw422016) -//line lib/promscrape/targetstatus.qtpl:281 -} - -//line lib/promscrape/targetstatus.qtpl:281 -func scrapeJobTargets(num int, jts *jobTargetsStatuses, hasOriginalLabels bool) string { -//line lib/promscrape/targetstatus.qtpl:281 - qb422016 := qt422016.AcquireByteBuffer() -//line lib/promscrape/targetstatus.qtpl:281 - writescrapeJobTargets(qb422016, num, jts, hasOriginalLabels) -//line lib/promscrape/targetstatus.qtpl:281 - qs422016 := string(qb422016.B) -//line lib/promscrape/targetstatus.qtpl:281 - qt422016.ReleaseByteBuffer(qb422016) -//line lib/promscrape/targetstatus.qtpl:281 - return qs422016 -//line lib/promscrape/targetstatus.qtpl:281 +//line lib/promscrape/targetstatus.qtpl:283 } //line lib/promscrape/targetstatus.qtpl:283 +func writescrapeJobTargets(qq422016 qtio422016.Writer, num int, jts *jobTargetsStatuses, hasOriginalLabels bool) { +//line lib/promscrape/targetstatus.qtpl:283 + qw422016 := qt422016.AcquireWriter(qq422016) +//line lib/promscrape/targetstatus.qtpl:283 + streamscrapeJobTargets(qw422016, num, jts, hasOriginalLabels) +//line lib/promscrape/targetstatus.qtpl:283 + qt422016.ReleaseWriter(qw422016) +//line lib/promscrape/targetstatus.qtpl:283 +} + +//line lib/promscrape/targetstatus.qtpl:283 +func scrapeJobTargets(num int, jts *jobTargetsStatuses, hasOriginalLabels bool) string { +//line lib/promscrape/targetstatus.qtpl:283 + qb422016 := qt422016.AcquireByteBuffer() +//line lib/promscrape/targetstatus.qtpl:283 + writescrapeJobTargets(qb422016, num, jts, hasOriginalLabels) +//line lib/promscrape/targetstatus.qtpl:283 + qs422016 := string(qb422016.B) +//line lib/promscrape/targetstatus.qtpl:283 + qt422016.ReleaseByteBuffer(qb422016) +//line lib/promscrape/targetstatus.qtpl:283 + return qs422016 +//line lib/promscrape/targetstatus.qtpl:283 +} + +//line lib/promscrape/targetstatus.qtpl:285 func streamdiscoveredTargets(qw422016 *qt422016.Writer, tsr *targetsStatusResult) { -//line lib/promscrape/targetstatus.qtpl:284 - if !tsr.hasOriginalLabels { -//line lib/promscrape/targetstatus.qtpl:284 - qw422016.N().S(`Discovered targets are unavailable when -promscrape.dropOriginalLabels command-line flag is set`) //line lib/promscrape/targetstatus.qtpl:286 + if !tsr.hasOriginalLabels { +//line lib/promscrape/targetstatus.qtpl:286 + qw422016.N().S(`Discovered targets are unavailable when -promscrape.dropOriginalLabels command-line flag is set`) +//line lib/promscrape/targetstatus.qtpl:288 return -//line lib/promscrape/targetstatus.qtpl:287 - } //line lib/promscrape/targetstatus.qtpl:289 + } +//line lib/promscrape/targetstatus.qtpl:291 tljs := tsr.getTargetLabelsByJob() -//line lib/promscrape/targetstatus.qtpl:289 +//line lib/promscrape/targetstatus.qtpl:291 qw422016.N().S(`<div class="row mt-4"><div class="col-12">`) -//line lib/promscrape/targetstatus.qtpl:292 +//line lib/promscrape/targetstatus.qtpl:294 for i, tlj := range tljs { -//line lib/promscrape/targetstatus.qtpl:293 +//line lib/promscrape/targetstatus.qtpl:295 streamdiscoveredJobTargets(qw422016, i, tlj) -//line lib/promscrape/targetstatus.qtpl:294 +//line lib/promscrape/targetstatus.qtpl:296 } -//line lib/promscrape/targetstatus.qtpl:294 +//line lib/promscrape/targetstatus.qtpl:296 qw422016.N().S(`</div></div>`) -//line lib/promscrape/targetstatus.qtpl:297 +//line lib/promscrape/targetstatus.qtpl:299 } -//line lib/promscrape/targetstatus.qtpl:297 +//line lib/promscrape/targetstatus.qtpl:299 func writediscoveredTargets(qq422016 qtio422016.Writer, tsr *targetsStatusResult) { -//line lib/promscrape/targetstatus.qtpl:297 +//line lib/promscrape/targetstatus.qtpl:299 qw422016 := qt422016.AcquireWriter(qq422016) -//line lib/promscrape/targetstatus.qtpl:297 +//line lib/promscrape/targetstatus.qtpl:299 streamdiscoveredTargets(qw422016, tsr) -//line lib/promscrape/targetstatus.qtpl:297 +//line lib/promscrape/targetstatus.qtpl:299 qt422016.ReleaseWriter(qw422016) -//line lib/promscrape/targetstatus.qtpl:297 +//line lib/promscrape/targetstatus.qtpl:299 } -//line lib/promscrape/targetstatus.qtpl:297 +//line lib/promscrape/targetstatus.qtpl:299 func discoveredTargets(tsr *targetsStatusResult) string { -//line lib/promscrape/targetstatus.qtpl:297 +//line lib/promscrape/targetstatus.qtpl:299 qb422016 := qt422016.AcquireByteBuffer() -//line lib/promscrape/targetstatus.qtpl:297 +//line lib/promscrape/targetstatus.qtpl:299 writediscoveredTargets(qb422016, tsr) -//line lib/promscrape/targetstatus.qtpl:297 +//line lib/promscrape/targetstatus.qtpl:299 qs422016 := string(qb422016.B) -//line lib/promscrape/targetstatus.qtpl:297 +//line lib/promscrape/targetstatus.qtpl:299 qt422016.ReleaseByteBuffer(qb422016) -//line lib/promscrape/targetstatus.qtpl:297 +//line lib/promscrape/targetstatus.qtpl:299 return qs422016 -//line lib/promscrape/targetstatus.qtpl:297 +//line lib/promscrape/targetstatus.qtpl:299 } -//line lib/promscrape/targetstatus.qtpl:299 +//line lib/promscrape/targetstatus.qtpl:301 func streamdiscoveredJobTargets(qw422016 *qt422016.Writer, num int, tlj *targetLabelsByJob) { -//line lib/promscrape/targetstatus.qtpl:299 +//line lib/promscrape/targetstatus.qtpl:301 qw422016.N().S(`<h4><span class="me-2">`) -//line lib/promscrape/targetstatus.qtpl:301 +//line lib/promscrape/targetstatus.qtpl:303 qw422016.E().S(tlj.jobName) -//line lib/promscrape/targetstatus.qtpl:301 +//line lib/promscrape/targetstatus.qtpl:303 qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:301 +//line lib/promscrape/targetstatus.qtpl:303 qw422016.N().S(`(`) -//line lib/promscrape/targetstatus.qtpl:301 +//line lib/promscrape/targetstatus.qtpl:303 qw422016.N().D(tlj.activeTargets) -//line lib/promscrape/targetstatus.qtpl:301 +//line lib/promscrape/targetstatus.qtpl:303 qw422016.N().S(`/`) -//line lib/promscrape/targetstatus.qtpl:301 +//line lib/promscrape/targetstatus.qtpl:303 qw422016.N().D(tlj.activeTargets + tlj.droppedTargets) -//line lib/promscrape/targetstatus.qtpl:301 +//line lib/promscrape/targetstatus.qtpl:303 qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:301 +//line lib/promscrape/targetstatus.qtpl:303 qw422016.N().S(`active)</span>`) -//line lib/promscrape/targetstatus.qtpl:302 +//line lib/promscrape/targetstatus.qtpl:304 streamshowHideScrapeJobButtons(qw422016, num) -//line lib/promscrape/targetstatus.qtpl:302 +//line lib/promscrape/targetstatus.qtpl:304 qw422016.N().S(`</h4><div id="scrape-job-`) -//line lib/promscrape/targetstatus.qtpl:304 +//line lib/promscrape/targetstatus.qtpl:306 qw422016.N().D(num) -//line lib/promscrape/targetstatus.qtpl:304 +//line lib/promscrape/targetstatus.qtpl:306 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:315 - for _, t := range tlj.targets { -//line lib/promscrape/targetstatus.qtpl:315 - qw422016.N().S(`<tr`) //line lib/promscrape/targetstatus.qtpl:317 + for _, t := range tlj.targets { +//line lib/promscrape/targetstatus.qtpl:317 + qw422016.N().S(`<tr`) +//line lib/promscrape/targetstatus.qtpl:319 if !t.up { -//line lib/promscrape/targetstatus.qtpl:318 +//line lib/promscrape/targetstatus.qtpl:320 qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:318 +//line lib/promscrape/targetstatus.qtpl:320 qw422016.N().S(`role="alert"`) -//line lib/promscrape/targetstatus.qtpl:318 +//line lib/promscrape/targetstatus.qtpl:320 qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:319 +//line lib/promscrape/targetstatus.qtpl:321 if t.labels.Len() > 0 { -//line lib/promscrape/targetstatus.qtpl:319 +//line lib/promscrape/targetstatus.qtpl:321 qw422016.N().S(`class="alert alert-danger"`) -//line lib/promscrape/targetstatus.qtpl:321 - } else { -//line lib/promscrape/targetstatus.qtpl:321 - qw422016.N().S(`class="alert alert-warning"`) //line lib/promscrape/targetstatus.qtpl:323 + } else { +//line lib/promscrape/targetstatus.qtpl:323 + qw422016.N().S(`class="alert alert-warning"`) +//line lib/promscrape/targetstatus.qtpl:325 } -//line lib/promscrape/targetstatus.qtpl:324 +//line lib/promscrape/targetstatus.qtpl:326 } -//line lib/promscrape/targetstatus.qtpl:324 +//line lib/promscrape/targetstatus.qtpl:326 qw422016.N().S(`><td>`) -//line lib/promscrape/targetstatus.qtpl:327 +//line lib/promscrape/targetstatus.qtpl:329 if t.up { -//line lib/promscrape/targetstatus.qtpl:327 +//line lib/promscrape/targetstatus.qtpl:329 qw422016.N().S(`<span class="badge bg-success">UP</span>`) -//line lib/promscrape/targetstatus.qtpl:329 +//line lib/promscrape/targetstatus.qtpl:331 } else if t.labels.Len() > 0 { -//line lib/promscrape/targetstatus.qtpl:329 +//line lib/promscrape/targetstatus.qtpl:331 qw422016.N().S(`<span class="badge bg-danger">DOWN</span>`) -//line lib/promscrape/targetstatus.qtpl:331 +//line lib/promscrape/targetstatus.qtpl:333 } else { -//line lib/promscrape/targetstatus.qtpl:331 +//line lib/promscrape/targetstatus.qtpl:333 qw422016.N().S(`<span class="badge bg-warning">DROPPED (`) -//line lib/promscrape/targetstatus.qtpl:332 +//line lib/promscrape/targetstatus.qtpl:334 qw422016.E().S(string(t.dropReason)) -//line lib/promscrape/targetstatus.qtpl:332 +//line lib/promscrape/targetstatus.qtpl:334 qw422016.N().S(`)</span>`) -//line lib/promscrape/targetstatus.qtpl:333 +//line lib/promscrape/targetstatus.qtpl:335 if len(t.clusterMemberNums) > 0 { -//line lib/promscrape/targetstatus.qtpl:333 +//line lib/promscrape/targetstatus.qtpl:335 qw422016.N().S(`<br/><span title="The target exists at vmagent instances with the given -promscrape.cluster.memberNum values">exists at`) -//line lib/promscrape/targetstatus.qtpl:336 - qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:337 - for i, memberNum := range t.clusterMemberNums { //line lib/promscrape/targetstatus.qtpl:338 - qw422016.N().D(memberNum) + qw422016.N().S(` `) //line lib/promscrape/targetstatus.qtpl:339 - if i+1 < len(t.clusterMemberNums) { -//line lib/promscrape/targetstatus.qtpl:339 - qw422016.N().S(`,`) -//line lib/promscrape/targetstatus.qtpl:339 - qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:339 - } + for i, memberNum := range t.clusterMemberNums { //line lib/promscrape/targetstatus.qtpl:340 - } + if *clusterMemberURLTemplate == "" { //line lib/promscrape/targetstatus.qtpl:341 + qw422016.N().D(memberNum) +//line lib/promscrape/targetstatus.qtpl:342 + } else { +//line lib/promscrape/targetstatus.qtpl:342 + qw422016.N().S(`<a href="`) +//line lib/promscrape/targetstatus.qtpl:343 + qw422016.E().S(strings.ReplaceAll(*clusterMemberURLTemplate, "%d", strconv.Itoa(memberNum))) +//line lib/promscrape/targetstatus.qtpl:343 + qw422016.N().S(`">`) +//line lib/promscrape/targetstatus.qtpl:343 + qw422016.N().D(memberNum) +//line lib/promscrape/targetstatus.qtpl:343 + qw422016.N().S(`</a>`) +//line lib/promscrape/targetstatus.qtpl:344 + } +//line lib/promscrape/targetstatus.qtpl:345 + if i+1 < len(t.clusterMemberNums) { +//line lib/promscrape/targetstatus.qtpl:345 + qw422016.N().S(`,`) +//line lib/promscrape/targetstatus.qtpl:345 + qw422016.N().S(` `) +//line lib/promscrape/targetstatus.qtpl:345 + } +//line lib/promscrape/targetstatus.qtpl:346 + } +//line lib/promscrape/targetstatus.qtpl:347 } -//line lib/promscrape/targetstatus.qtpl:342 +//line lib/promscrape/targetstatus.qtpl:348 } -//line lib/promscrape/targetstatus.qtpl:342 - qw422016.N().S(`</td><td class="labels">`) -//line lib/promscrape/targetstatus.qtpl:345 - streamformatLabels(qw422016, t.originalLabels) -//line lib/promscrape/targetstatus.qtpl:345 - qw422016.N().S(`</td><td class="labels">`) //line lib/promscrape/targetstatus.qtpl:348 - streamformatLabels(qw422016, t.labels) -//line lib/promscrape/targetstatus.qtpl:348 - qw422016.N().S(`</td><td>`) + qw422016.N().S(`</td><td class="labels">`) //line lib/promscrape/targetstatus.qtpl:351 + streamformatLabels(qw422016, t.originalLabels) +//line lib/promscrape/targetstatus.qtpl:351 + qw422016.N().S(`</td><td class="labels">`) +//line lib/promscrape/targetstatus.qtpl:354 + streamformatLabels(qw422016, t.labels) +//line lib/promscrape/targetstatus.qtpl:354 + qw422016.N().S(`</td><td>`) +//line lib/promscrape/targetstatus.qtpl:357 targetID := getLabelsID(t.originalLabels) -//line lib/promscrape/targetstatus.qtpl:351 +//line lib/promscrape/targetstatus.qtpl:357 qw422016.N().S(`<a href="target-relabel-debug?id=`) -//line lib/promscrape/targetstatus.qtpl:352 +//line lib/promscrape/targetstatus.qtpl:358 qw422016.E().S(targetID) -//line lib/promscrape/targetstatus.qtpl:352 +//line lib/promscrape/targetstatus.qtpl:358 qw422016.N().S(`" target="_blank">debug</a></td></tr>`) -//line lib/promscrape/targetstatus.qtpl:355 +//line lib/promscrape/targetstatus.qtpl:361 } -//line lib/promscrape/targetstatus.qtpl:355 +//line lib/promscrape/targetstatus.qtpl:361 qw422016.N().S(`</tbody></table></div>`) -//line lib/promscrape/targetstatus.qtpl:359 +//line lib/promscrape/targetstatus.qtpl:365 } -//line lib/promscrape/targetstatus.qtpl:359 +//line lib/promscrape/targetstatus.qtpl:365 func writediscoveredJobTargets(qq422016 qtio422016.Writer, num int, tlj *targetLabelsByJob) { -//line lib/promscrape/targetstatus.qtpl:359 +//line lib/promscrape/targetstatus.qtpl:365 qw422016 := qt422016.AcquireWriter(qq422016) -//line lib/promscrape/targetstatus.qtpl:359 +//line lib/promscrape/targetstatus.qtpl:365 streamdiscoveredJobTargets(qw422016, num, tlj) -//line lib/promscrape/targetstatus.qtpl:359 +//line lib/promscrape/targetstatus.qtpl:365 qt422016.ReleaseWriter(qw422016) -//line lib/promscrape/targetstatus.qtpl:359 +//line lib/promscrape/targetstatus.qtpl:365 } -//line lib/promscrape/targetstatus.qtpl:359 +//line lib/promscrape/targetstatus.qtpl:365 func discoveredJobTargets(num int, tlj *targetLabelsByJob) string { -//line lib/promscrape/targetstatus.qtpl:359 +//line lib/promscrape/targetstatus.qtpl:365 qb422016 := qt422016.AcquireByteBuffer() -//line lib/promscrape/targetstatus.qtpl:359 +//line lib/promscrape/targetstatus.qtpl:365 writediscoveredJobTargets(qb422016, num, tlj) -//line lib/promscrape/targetstatus.qtpl:359 +//line lib/promscrape/targetstatus.qtpl:365 qs422016 := string(qb422016.B) -//line lib/promscrape/targetstatus.qtpl:359 +//line lib/promscrape/targetstatus.qtpl:365 qt422016.ReleaseByteBuffer(qb422016) -//line lib/promscrape/targetstatus.qtpl:359 +//line lib/promscrape/targetstatus.qtpl:365 return qs422016 -//line lib/promscrape/targetstatus.qtpl:359 +//line lib/promscrape/targetstatus.qtpl:365 } -//line lib/promscrape/targetstatus.qtpl:361 +//line lib/promscrape/targetstatus.qtpl:367 func streamshowHideScrapeJobButtons(qw422016 *qt422016.Writer, num int) { -//line lib/promscrape/targetstatus.qtpl:361 +//line lib/promscrape/targetstatus.qtpl:367 qw422016.N().S(`<button type="button" class="btn btn-primary btn-sm me-1"onclick="document.getElementById('scrape-job-`) -//line lib/promscrape/targetstatus.qtpl:363 +//line lib/promscrape/targetstatus.qtpl:369 qw422016.N().D(num) -//line lib/promscrape/targetstatus.qtpl:363 +//line lib/promscrape/targetstatus.qtpl:369 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:367 +//line lib/promscrape/targetstatus.qtpl:373 qw422016.N().D(num) -//line lib/promscrape/targetstatus.qtpl:367 +//line lib/promscrape/targetstatus.qtpl:373 qw422016.N().S(`').style.display='block'">expand</button>`) -//line lib/promscrape/targetstatus.qtpl:370 +//line lib/promscrape/targetstatus.qtpl:376 } -//line lib/promscrape/targetstatus.qtpl:370 +//line lib/promscrape/targetstatus.qtpl:376 func writeshowHideScrapeJobButtons(qq422016 qtio422016.Writer, num int) { -//line lib/promscrape/targetstatus.qtpl:370 +//line lib/promscrape/targetstatus.qtpl:376 qw422016 := qt422016.AcquireWriter(qq422016) -//line lib/promscrape/targetstatus.qtpl:370 +//line lib/promscrape/targetstatus.qtpl:376 streamshowHideScrapeJobButtons(qw422016, num) -//line lib/promscrape/targetstatus.qtpl:370 +//line lib/promscrape/targetstatus.qtpl:376 qt422016.ReleaseWriter(qw422016) -//line lib/promscrape/targetstatus.qtpl:370 +//line lib/promscrape/targetstatus.qtpl:376 } -//line lib/promscrape/targetstatus.qtpl:370 +//line lib/promscrape/targetstatus.qtpl:376 func showHideScrapeJobButtons(num int) string { -//line lib/promscrape/targetstatus.qtpl:370 +//line lib/promscrape/targetstatus.qtpl:376 qb422016 := qt422016.AcquireByteBuffer() -//line lib/promscrape/targetstatus.qtpl:370 +//line lib/promscrape/targetstatus.qtpl:376 writeshowHideScrapeJobButtons(qb422016, num) -//line lib/promscrape/targetstatus.qtpl:370 +//line lib/promscrape/targetstatus.qtpl:376 qs422016 := string(qb422016.B) -//line lib/promscrape/targetstatus.qtpl:370 +//line lib/promscrape/targetstatus.qtpl:376 qt422016.ReleaseByteBuffer(qb422016) -//line lib/promscrape/targetstatus.qtpl:370 +//line lib/promscrape/targetstatus.qtpl:376 return qs422016 -//line lib/promscrape/targetstatus.qtpl:370 +//line lib/promscrape/targetstatus.qtpl:376 } -//line lib/promscrape/targetstatus.qtpl:372 +//line lib/promscrape/targetstatus.qtpl:378 func streamqueryArgs(qw422016 *qt422016.Writer, filter *requestFilter, override map[string]string) { -//line lib/promscrape/targetstatus.qtpl:374 +//line lib/promscrape/targetstatus.qtpl:380 showOnlyUnhealthy := "false" if filter.showOnlyUnhealthy { showOnlyUnhealthy = "true" @@ -1005,89 +1023,89 @@ func streamqueryArgs(qw422016 *qt422016.Writer, filter *requestFilter, override qa[k] = []string{v} } -//line lib/promscrape/targetstatus.qtpl:391 +//line lib/promscrape/targetstatus.qtpl:397 qw422016.E().S(qa.Encode()) -//line lib/promscrape/targetstatus.qtpl:392 +//line lib/promscrape/targetstatus.qtpl:398 } -//line lib/promscrape/targetstatus.qtpl:392 +//line lib/promscrape/targetstatus.qtpl:398 func writequeryArgs(qq422016 qtio422016.Writer, filter *requestFilter, override map[string]string) { -//line lib/promscrape/targetstatus.qtpl:392 +//line lib/promscrape/targetstatus.qtpl:398 qw422016 := qt422016.AcquireWriter(qq422016) -//line lib/promscrape/targetstatus.qtpl:392 +//line lib/promscrape/targetstatus.qtpl:398 streamqueryArgs(qw422016, filter, override) -//line lib/promscrape/targetstatus.qtpl:392 +//line lib/promscrape/targetstatus.qtpl:398 qt422016.ReleaseWriter(qw422016) -//line lib/promscrape/targetstatus.qtpl:392 +//line lib/promscrape/targetstatus.qtpl:398 } -//line lib/promscrape/targetstatus.qtpl:392 +//line lib/promscrape/targetstatus.qtpl:398 func queryArgs(filter *requestFilter, override map[string]string) string { -//line lib/promscrape/targetstatus.qtpl:392 +//line lib/promscrape/targetstatus.qtpl:398 qb422016 := qt422016.AcquireByteBuffer() -//line lib/promscrape/targetstatus.qtpl:392 +//line lib/promscrape/targetstatus.qtpl:398 writequeryArgs(qb422016, filter, override) -//line lib/promscrape/targetstatus.qtpl:392 +//line lib/promscrape/targetstatus.qtpl:398 qs422016 := string(qb422016.B) -//line lib/promscrape/targetstatus.qtpl:392 +//line lib/promscrape/targetstatus.qtpl:398 qt422016.ReleaseByteBuffer(qb422016) -//line lib/promscrape/targetstatus.qtpl:392 +//line lib/promscrape/targetstatus.qtpl:398 return qs422016 -//line lib/promscrape/targetstatus.qtpl:392 +//line lib/promscrape/targetstatus.qtpl:398 } -//line lib/promscrape/targetstatus.qtpl:394 +//line lib/promscrape/targetstatus.qtpl:400 func streamformatLabels(qw422016 *qt422016.Writer, labels *promutils.Labels) { -//line lib/promscrape/targetstatus.qtpl:395 +//line lib/promscrape/targetstatus.qtpl:401 labelsList := labels.GetLabels() -//line lib/promscrape/targetstatus.qtpl:395 +//line lib/promscrape/targetstatus.qtpl:401 qw422016.N().S(`{`) -//line lib/promscrape/targetstatus.qtpl:397 +//line lib/promscrape/targetstatus.qtpl:403 for i, label := range labelsList { -//line lib/promscrape/targetstatus.qtpl:398 +//line lib/promscrape/targetstatus.qtpl:404 qw422016.E().S(label.Name) -//line lib/promscrape/targetstatus.qtpl:398 +//line lib/promscrape/targetstatus.qtpl:404 qw422016.N().S(`=`) -//line lib/promscrape/targetstatus.qtpl:398 +//line lib/promscrape/targetstatus.qtpl:404 qw422016.E().Q(label.Value) -//line lib/promscrape/targetstatus.qtpl:399 +//line lib/promscrape/targetstatus.qtpl:405 if i+1 < len(labelsList) { -//line lib/promscrape/targetstatus.qtpl:399 +//line lib/promscrape/targetstatus.qtpl:405 qw422016.N().S(`,`) -//line lib/promscrape/targetstatus.qtpl:399 +//line lib/promscrape/targetstatus.qtpl:405 qw422016.N().S(` `) -//line lib/promscrape/targetstatus.qtpl:399 +//line lib/promscrape/targetstatus.qtpl:405 } -//line lib/promscrape/targetstatus.qtpl:400 +//line lib/promscrape/targetstatus.qtpl:406 } -//line lib/promscrape/targetstatus.qtpl:400 +//line lib/promscrape/targetstatus.qtpl:406 qw422016.N().S(`}`) -//line lib/promscrape/targetstatus.qtpl:402 +//line lib/promscrape/targetstatus.qtpl:408 } -//line lib/promscrape/targetstatus.qtpl:402 +//line lib/promscrape/targetstatus.qtpl:408 func writeformatLabels(qq422016 qtio422016.Writer, labels *promutils.Labels) { -//line lib/promscrape/targetstatus.qtpl:402 +//line lib/promscrape/targetstatus.qtpl:408 qw422016 := qt422016.AcquireWriter(qq422016) -//line lib/promscrape/targetstatus.qtpl:402 +//line lib/promscrape/targetstatus.qtpl:408 streamformatLabels(qw422016, labels) -//line lib/promscrape/targetstatus.qtpl:402 +//line lib/promscrape/targetstatus.qtpl:408 qt422016.ReleaseWriter(qw422016) -//line lib/promscrape/targetstatus.qtpl:402 +//line lib/promscrape/targetstatus.qtpl:408 } -//line lib/promscrape/targetstatus.qtpl:402 +//line lib/promscrape/targetstatus.qtpl:408 func formatLabels(labels *promutils.Labels) string { -//line lib/promscrape/targetstatus.qtpl:402 +//line lib/promscrape/targetstatus.qtpl:408 qb422016 := qt422016.AcquireByteBuffer() -//line lib/promscrape/targetstatus.qtpl:402 +//line lib/promscrape/targetstatus.qtpl:408 writeformatLabels(qb422016, labels) -//line lib/promscrape/targetstatus.qtpl:402 +//line lib/promscrape/targetstatus.qtpl:408 qs422016 := string(qb422016.B) -//line lib/promscrape/targetstatus.qtpl:402 +//line lib/promscrape/targetstatus.qtpl:408 qt422016.ReleaseByteBuffer(qb422016) -//line lib/promscrape/targetstatus.qtpl:402 +//line lib/promscrape/targetstatus.qtpl:408 return qs422016 -//line lib/promscrape/targetstatus.qtpl:402 +//line lib/promscrape/targetstatus.qtpl:408 }