mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-12-20 15:36:31 +01:00
8edb390e21
* lib/promscrape: updated template * lib/promscrape: fixed click on unhealthy and all btns * app/vmselect: jquery scripts into static folder Co-authored-by: f41gh7 <nik@victoriametrics.com>
108 lines
5.3 KiB
Plaintext
108 lines
5.3 KiB
Plaintext
{% import (
|
|
"time"
|
|
"github.com/VictoriaMetrics/VictoriaMetrics/lib/promrelabel"
|
|
) %}
|
|
|
|
{% func Targets(jts []jobTargetsStatuses, emptyJobs []string, showOnlyUnhealthy bool) %}
|
|
<div class="row mt-4">
|
|
<div class="col-12">
|
|
{% for i, js := range jts %}
|
|
{% if showOnlyUnhealthy && js.upCount == js.targetsTotal %}{% continue %}{% endif %}
|
|
<div class="row mb-4">
|
|
<div class="col-12">
|
|
<h4>
|
|
<span class="me-2">{%s js.job %}{% space %}({%d js.upCount %}/{%d js.targetsTotal %}{% space %}up)</span>
|
|
<button type="button" class="btn btn-primary btn-sm me-1"
|
|
onclick="document.getElementById('table-{%d i %}').style.display='none'">collapse
|
|
</button>
|
|
<button type="button" class="btn btn-secondary btn-sm me-1"
|
|
onclick="document.getElementById('table-{%d i %}').style.display='block'">expand
|
|
</button>
|
|
</h4>
|
|
<div id="table-{%d i %}" class="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="scrape target labels">Labels</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 class="list-{%d i %}">
|
|
{% for _, ts := range js.targetsStatus %}
|
|
{% code
|
|
endpoint := ts.sw.Config.ScrapeURL
|
|
targetID := getTargetID(ts.sw)
|
|
lastScrapeTime := ts.getDurationFromLastScrape()
|
|
%}
|
|
{% if showOnlyUnhealthy && ts.up %}{% continue %}{% endif %}
|
|
<tr {% if !ts.up %}{%space%}class="alert alert-danger" role="alert" {% endif %}>
|
|
<td class="endpoint"><a href="{%s endpoint %}" target="_blank">{%s endpoint %}</a> (
|
|
<a href="target_response?id={%s targetID %}" target="_blank"
|
|
title="click to fetch target response on behalf of the scraper">response</a>
|
|
)
|
|
</td>
|
|
<td>
|
|
{% if ts.up %}
|
|
<span class="badge bg-success">UP</span>
|
|
{% else %}
|
|
<span class="badge bg-danger">DOWN</span>
|
|
{% endif %}
|
|
</td>
|
|
<td class="labels">
|
|
<div title="click to show original labels"
|
|
onclick="document.getElementById('original_labels_{%s targetID %}').style.display='block'">
|
|
{%= formatLabel(promrelabel.FinalizeLabels(nil, ts.sw.Config.Labels)) %}
|
|
</div>
|
|
<div style="display:none" id="original_labels_{%s targetID %}">
|
|
{%= formatLabel(ts.sw.Config.OriginalLabels) %}
|
|
</div>
|
|
</td>
|
|
<td>{%d ts.scrapesTotal %}</td>
|
|
<td>{%d ts.scrapesFailed %}</td>
|
|
<td>
|
|
{% if lastScrapeTime < 365*24*time.Hour %}
|
|
{%f.3 lastScrapeTime.Seconds() %}s ago
|
|
{% else %}
|
|
none
|
|
{% endif %}
|
|
<td>{%d int(ts.scrapeDuration) %}ms</td>
|
|
<td>{%d ts.samplesScraped %}</td>
|
|
<td>{% if ts.err != nil %}{%s ts.err.Error() %}{% endif %}</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
</div>
|
|
|
|
{% for _, jobName := range emptyJobs %}
|
|
<div>
|
|
<h4><a>{%s jobName %} (0/0 up)</a></h4>
|
|
<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">Labels</th>
|
|
<th scope="col">Last Scrape</th>
|
|
<th scope="col">Scrape Duration</th>
|
|
<th scope="col">Samples Scraped</th>
|
|
<th scope="col">Error</th>
|
|
</tr>
|
|
</thead>
|
|
</table>
|
|
</div>
|
|
{% endfor %}
|
|
{% endfunc %}
|