diff options
Diffstat (limited to 'bundles/prometheus/files/consoles/disk.html')
| -rw-r--r-- | bundles/prometheus/files/consoles/disk.html | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/bundles/prometheus/files/consoles/disk.html b/bundles/prometheus/files/consoles/disk.html new file mode 100644 index 0000000..52afac7 --- /dev/null +++ b/bundles/prometheus/files/consoles/disk.html @@ -0,0 +1,78 @@ +{{ template "head" . }} + +{{ template "prom_right_table_head" }} +<tr> + <th colspan="2">Disks</th> +</tr> +{{ range printf "node_disk_io_time_seconds_total{job='node-exporter',instance='%s'}" .Params.instance | query | sortByLabel "device" }} + <th colspan="2">{{ .Labels.device }}</th> + <tr> + <td>Utilization</td> + <td>{{ template "prom_query_drilldown" (args (printf "irate(node_disk_io_time_seconds_total{job='node-exporter',instance='%s',device='%s'}[5m]) * 100" .Labels.instance .Labels.device) "%" "printf.1f") }}</td> + </tr> + <tr> + <td>Throughput</td> + <td>{{ template "prom_query_drilldown" (args (printf "irate(node_disk_read_bytes_total{job='node-exporter',instance='%s',device='%s'}[5m]) + irate(node_disk_written_bytes_total{job='node-exporter',instance='%s',device='%s'}[5m])" .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 "irate(node_disk_read_time_seconds_total{job='node-exporter',instance='%s',device='%s'}[5m]) / irate(node_disk_reads_completed_total{job='node-exporter',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 "irate(node_disk_write_time_seconds_total{job='node-exporter',instance='%s',device='%s'}[5m]) / irate(node_disk_writes_completed_total{job='node-exporter',instance='%s',device='%s'}[5m])" .Labels.instance .Labels.device .Labels.instance .Labels.device) "s" "humanize") }}</td> + </tr> +{{ end }} +<tr> + <th colspan="2">Filesystem Fullness</th> +</tr> +{{ define "roughlyNearZero" }} +{{ if gt .1 . }}~0{{ else }}{{ printf "%.1f" . }}{{ end }} +{{ end }} +{{ range printf "node_filesystem_size_bytes{job='node-exporter',instance='%s'}" .Params.instance | query | sortByLabel "mountpoint" }} + <tr> + <td>{{ .Labels.mountpoint }}</td> + <td>{{ template "prom_query_drilldown" (args (printf "100 - node_filesystem_avail_bytes{job='node-exporter',instance='%s',mountpoint='%s'} / node_filesystem_size_bytes{job='node-exporter'} * 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: [ + "irate(node_disk_io_time_seconds_total{job='node-exporter',instance='{{ .Params.instance }}',device!~'^(md\\\\d+$|dm-)'}[5m]) * 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_avail_bytes{job='node-exporter',instance='{{ .Params.instance }}'} / node_filesystem_size_bytes{job='node-exporter'} * 100", + min: 0, + max: 100, + name: '[[ mountpoint ]]', + yUnits: "%", + yAxisFormatter: PromConsole.NumberFormatter.humanizeNoSmallPrefix, + yHoverFormatter: PromConsole.NumberFormatter.humanizeNoSmallPrefix, + yTitle: 'Filesystem Fullness' + }) + </script> +{{ template "prom_content_tail" . }} + +{{ template "tail" }} |