mirror of
https://github.com/prometheus/prometheus
synced 2024-12-23 23:13:11 +00:00
e3c375b9b0
Only display jobs in the LHS if they're present.
77 lines
3.4 KiB
HTML
77 lines
3.4 KiB
HTML
{{ template "head" . }}
|
|
|
|
{{ template "prom_right_table_head" }}
|
|
<th colspan="2">Disks</th>
|
|
</tr>
|
|
{{ range printf "node_disk_io_time_ms{job='node',instance='%s'}" .Params.instance | query | sortByLabel "device" }}
|
|
<th colspan="2">{{ .Labels.device }}</th>
|
|
<tr>
|
|
<td>Utilization</td>
|
|
<td>{{ template "prom_query_drilldown" (args (printf "rate(node_disk_io_time_ms{job='node',instance='%s',device='%s'}[5m]) / 1000 * 100" .Labels.instance .Labels.device) "%" "printf.3g") }}</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Throughput</td>
|
|
<td>{{ template "prom_query_drilldown" (args (printf "rate(node_disk_sectors_read{job='node',instance='%s',device='%s'}[5m]) * 512 + rate(node_disk_sectors_written{job='node',instance='%s',device='%s'}[5m]) * 512" .Labels.instance .Labels.device .Labels.instance .Labels.device) "B/s" "humanize") }}</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Avg Read Time</td>
|
|
<td>{{ template "prom_query_drilldown" (args (printf "rate(node_disk_read_time_ms{job='node',instance='%s',device='%s'}[5m]) / 1000 / rate(node_disk_reads_completed{job='node',instance='%s',device='%s'}[5m])" .Labels.instance .Labels.device .Labels.instance .Labels.device) "s" "humanize") }}</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Avg Write Time</td>
|
|
<td>{{ template "prom_query_drilldown" (args (printf "rate(node_disk_write_time_ms{job='node',instance='%s',device='%s'}[5m]) / 1000 / rate(node_disk_writes_completed{job='node',instance='%s',device='%s'}[5m])" .Labels.instance .Labels.device .Labels.instance .Labels.device) "s" "humanize") }}</td>
|
|
</tr>
|
|
{{ end }}
|
|
<th colspan="2">Filesystem Fullness</th>
|
|
</tr>
|
|
{{ define "roughlyNearZero" }}
|
|
{{ if gt .1 . }}~0{{ else }}{{ printf "%.3g" . }}{{ end }}
|
|
{{ end }}
|
|
{{ range printf "node_filesystem_size{job='node',instance='%s'}" .Params.instance | query | sortByLabel "filesystem" }}
|
|
<tr>
|
|
<td>{{ .Labels.filesystem }}</td>
|
|
<td>{{ template "prom_query_drilldown" (args (printf "100 - node_filesystem_free{job='node',instance='%s',filesystem='%s'} / node_filesystem_size{job='node'} * 100" .Labels.instance .Labels.filesystem) "%" "roughlyNearZero") }}</td>
|
|
</tr>
|
|
{{ end }}
|
|
<tr>
|
|
</tr>
|
|
{{ template "prom_right_table_tail" }}
|
|
|
|
{{ template "prom_content_head" . }}
|
|
<h1>Node Disk - {{ reReplaceAll "(.*?://)([^:/]+?)(:\\d+)?/.*" "$2" .Params.instance }}</h1>
|
|
|
|
<h3>Disk I/O Utilization</h3>
|
|
<div id="diskioGraph"></div>
|
|
<script>
|
|
new PromConsole.Graph({
|
|
node: document.querySelector("#diskioGraph"),
|
|
expr: [
|
|
"rate(node_disk_io_time_ms{job='node',instance='{{ .Params.instance }}',device!~'^(md\\d+$|dm-)'}[5m]) / 1000 * 100",
|
|
],
|
|
min: 0,
|
|
name: '[[ device ]]',
|
|
yUnits: "%",
|
|
yAxisFormatter: PromConsole.NumberFormatter.humanizeNoSmallPrefix,
|
|
yHoverFormatter: PromConsole.NumberFormatter.humanizeNoSmallPrefix,
|
|
yTitle: 'Disk I/O Utilization'
|
|
})
|
|
</script>
|
|
<h3>Filesystem Usage</h3>
|
|
<div id="fsGraph"></div>
|
|
<script>
|
|
new PromConsole.Graph({
|
|
node: document.querySelector("#fsGraph"),
|
|
expr: "100 - node_filesystem_free{job='node',instance='{{ .Params.instance }}'} / node_filesystem_size{job='node'} * 100",
|
|
min: 0,
|
|
max: 100,
|
|
name: '[[ filesystem ]]',
|
|
yUnits: "%",
|
|
yAxisFormatter: PromConsole.NumberFormatter.humanizeNoSmallPrefix,
|
|
yHoverFormatter: PromConsole.NumberFormatter.humanizeNoSmallPrefix,
|
|
yTitle: 'Filesystem Fullness'
|
|
})
|
|
</script>
|
|
{{ template "prom_content_tail" . }}
|
|
|
|
{{ template "tail" }}
|