{% import ( "net/url" "time" "github.com/VictoriaMetrics/VictoriaMetrics/lib/prompbmarshal" "github.com/VictoriaMetrics/VictoriaMetrics/lib/promrelabel" ) %} {% stripspace %} {% func TargetsResponsePlain(jts []jobTargetsStatuses, emptyJobs []string, showOriginLabels, showOnlyUnhealthy bool, err error) %} {% if err != nil %} {%s= err.Error() %} {% return %} {% endif %} {% for _, js := range jts %} {% if showOnlyUnhealthy && js.upCount == js.targetsTotal %}{% continue %}{% endif %} job={%q= js.job %} ({%d js.upCount %}/{%d js.targetsTotal %}{% space %}up) {% newline %} {% for _, ts := range js.targetsStatus %} {% if showOnlyUnhealthy && ts.up %}{% continue %}{% endif %} {%s= "\t" %} state={% if ts.up %}up{% else %}down{% endif %},{% space %} endpoint={%s= ts.sw.Config.ScrapeURL %},{% space %} labels={%s= promLabelsString(promrelabel.FinalizeLabels(nil, ts.sw.Config.Labels)) %},{% space %} {% if showOriginLabels %}originalLabels={%s= promLabelsString(ts.sw.Config.OriginalLabels) %},{% space %}{% endif %} scrapes_total={%d ts.scrapesTotal %},{% space %} scrapes_failed={%d ts.scrapesFailed %},{% space %} last_scrape={%f.3 ts.getDurationFromLastScrape().Seconds() %}s ago,{% space %} scrape_duration={%d int(ts.scrapeDuration) %}ms,{% space %} samples_scraped={%d ts.samplesScraped %},{% space %} error={% if ts.err != nil %}{%s= ts.err.Error() %}{% endif %} {% newline %} {% endfor %} {% endfor %} {% for _, jobName := range emptyJobs %} job={%q= jobName %} (0/0 up) {% newline %} {% endfor %} {% endfunc %} {% func TargetsResponseHTML(jts []jobTargetsStatuses, emptyJobs []string, showOnlyUnhealthy bool, endpointSearch, labelSearch string, err error) %} Scrape targets
{% if err != nil %} {%= errorNotification(err) %} {% endif %}

Scrape targets


{% if endpointSearch == "" && labelSearch == "" %} {% else %} {% endif %}

{% for i, js := range jts %} {% if showOnlyUnhealthy && js.upCount == js.targetsTotal %}{% continue %}{% endif %}

{%s js.job %}{% space %}({%d js.upCount %}/{%d js.targetsTotal %}{% space %}up)

{% for _, ts := range js.targetsStatus %} {% code endpoint := ts.sw.Config.ScrapeURL targetID := getTargetID(ts.sw) lastScrapeTime := ts.getDurationFromLastScrape() %} {% if showOnlyUnhealthy && ts.up %}{% continue %}{% endif %} {% endfor %}
Endpoint State Labels Scrapes Errors Last Scrape Duration Samples Last error
{%s endpoint %} ( response ) {% if ts.up %}UP{% else %}DOWN{% endif %}
{%= formatLabel(promrelabel.FinalizeLabels(nil, ts.sw.Config.Labels)) %}
{%d ts.scrapesTotal %} {%d ts.scrapesFailed %} {% if lastScrapeTime < 365*24*time.Hour %} {%f.3 lastScrapeTime.Seconds() %}s ago {% else %} none {% endif %} {%d int(ts.scrapeDuration) %}ms {%d ts.samplesScraped %} {% if ts.err != nil %}{%s ts.err.Error() %}{% endif %}
{% endfor %}
{% for _, jobName := range emptyJobs %}

{%s jobName %} (0/0 up)

Endpoint State Labels Last Scrape Scrape Duration Samples Scraped Error
{% endfor %}
{% endfunc %} {% func queryArgs(m map[string]string) %} {% code qa := make(url.Values, len(m)) for k, v := range m { qa[k] = []string{v} } %} {%s qa.Encode() %} {% endfunc %} {% func formatLabel(labels []prompbmarshal.Label) %} { {% for i, label := range labels %} {%s label.Name %}={%q label.Value %} {% if i+1 < len(labels) %},{% space %}{% endif %} {% endfor %} } {% endfunc %} {% func errorNotification(err error) %} {% endfunc %} {% endstripspace %}