mirror of https://github.com/prometheus/prometheus
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
3.4 KiB
76 lines
3.4 KiB
{{ 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.1f") }}</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 "%.1f" . }}{{ end }} |
|
{{ end }} |
|
{{ range printf "node_filesystem_size{job='node',instance='%s'}" .Params.instance | query | sortByLabel "mountpoint" }} |
|
<tr> |
|
<td>{{ .Labels.mountpoint }}</td> |
|
<td>{{ template "prom_query_drilldown" (args (printf "100 - node_filesystem_free{job='node',instance='%s',mountpoint='%s'} / node_filesystem_size{job='node'} * 100" .Labels.instance .Labels.mountpoint) "%" "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" }}
|
|
|