diff options
Diffstat (limited to 'bundles/prometheus/files/consoles/node-overview.html')
| -rw-r--r-- | bundles/prometheus/files/consoles/node-overview.html | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/bundles/prometheus/files/consoles/node-overview.html b/bundles/prometheus/files/consoles/node-overview.html new file mode 100644 index 0000000..edeca2e --- /dev/null +++ b/bundles/prometheus/files/consoles/node-overview.html @@ -0,0 +1,121 @@ +{{ template "head" . }} + +{{ template "prom_right_table_head" }} + <tr><th colspan="2">Overview</th></tr> + <tr> + <td>User CPU</td> + <td>{{ template "prom_query_drilldown" (args (printf "sum(irate(node_cpu_seconds_total{job='node-exporter',instance='%s',mode='user'}[5m])) * 100 / count(count by (cpu)(node_cpu_seconds_total{job='node-exporter',instance='%s'}))" .Params.instance .Params.instance) "%" "printf.1f") }}</td> + </tr> + <tr> + <td>System CPU</td> + <td>{{ template "prom_query_drilldown" (args (printf "sum(irate(node_cpu_seconds_total{job='node-exporter',instance='%s',mode='system'}[5m])) * 100 / count(count by (cpu)(node_cpu_seconds_total{job='node-exporter',instance='%s'}))" .Params.instance .Params.instance) "%" "printf.1f") }}</td> + </tr> + <tr> + <td>Memory Total</td> + <td>{{ template "prom_query_drilldown" (args (printf "node_memory_MemTotal_bytes{job='node-exporter',instance='%s'}" .Params.instance) "B" "humanize1024") }}</td> + </tr> + <tr> + <td>Memory Free</td> + <td>{{ template "prom_query_drilldown" (args (printf "node_memory_MemFree_bytes{job='node-exporter',instance='%s'}" .Params.instance) "B" "humanize1024") }}</td> + </tr> +<tr> + <th colspan="2">Network</th> +</tr> +{{ range printf "node_network_receive_bytes_total{job='node-exporter',instance='%s',device!='lo'}" .Params.instance | query | sortByLabel "device" }} + <tr> + <td>{{ .Labels.device }} Received</td> + <td>{{ template "prom_query_drilldown" (args (printf "irate(node_network_receive_bytes_total{job='node-exporter',instance='%s',device='%s'}[5m])" .Labels.instance .Labels.device) "B/s" "humanize") }}</td> + </tr> + <tr> + <td>{{ .Labels.device }} Transmitted</td> + <td>{{ template "prom_query_drilldown" (args (printf "irate(node_network_transmit_bytes_total{job='node-exporter',instance='%s',device='%s'}[5m])" .Labels.instance .Labels.device) "B/s" "humanize") }}</td> + </tr> +{{ end }} +<tr> + <th colspan="2">Disks</th> +</tr> +{{ range printf "node_disk_io_time_seconds_total{job='node-exporter',instance='%s',device!~'^(md\\\\d+$|dm-)'}" .Params.instance | query | sortByLabel "device" }} + <tr> + <td>{{ .Labels.device }} 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> +{{ end }} +{{ range printf "node_disk_io_time_seconds_total{job='node-exporter',instance='%s'}" .Params.instance | query | sortByLabel "device" }} + <tr> + <td>{{ .Labels.device }} 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> +{{ 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 }} + +{{ template "prom_right_table_tail" }} + +{{ template "prom_content_head" . }} + <h1>Node Overview - {{ reReplaceAll "(.*?://)([^:/]+?)(:\\d+)?/.*" "$2" .Params.instance }}</h1> + + <h3>CPU Usage</h3> + <div id="cpuGraph"></div> + <script> + new PromConsole.Graph({ + node: document.querySelector("#cpuGraph"), + expr: "sum by (mode)(irate(node_cpu_seconds_total{job='node-exporter',instance='{{ .Params.instance }}',mode!='idle',mode!='iowait',mode!='steal'}[5m]))", + renderer: 'area', + max: {{ with printf "count(count by (cpu)(node_cpu_seconds_total{job='node-exporter',instance='%s'}))" .Params.instance | query }}{{ . | first | value }}{{ else}}undefined{{end}}, + yAxisFormatter: PromConsole.NumberFormatter.humanizeNoSmallPrefix, + yHoverFormatter: PromConsole.NumberFormatter.humanizeNoSmallPrefix, + yTitle: 'Cores' + }) + </script> + + <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 ]]', + yAxisFormatter: PromConsole.NumberFormatter.humanizeNoSmallPrefix, + yHoverFormatter: PromConsole.NumberFormatter.humanizeNoSmallPrefix, + yUnits: "%", + yTitle: 'Disk I/O Utilization' + }) + </script> + + <h3>Memory</h3> + <div id="memoryGraph"></div> + <script> + new PromConsole.Graph({ + node: document.querySelector("#memoryGraph"), + renderer: 'area', + expr: [ + "node_memory_Cached_bytes{job='node-exporter',instance='{{ .Params.instance }}'}", + "node_memory_Buffers_bytes{job='node-exporter',instance='{{ .Params.instance }}'}", + "node_memory_MemTotal_bytes{job='node-exporter',instance='{{ .Params.instance }}'} - node_memory_MemFree_bytes{job='node-exporter',instance='{{.Params.instance}}'} - node_memory_Buffers_bytes{job='node-exporter',instance='{{.Params.instance}}'} - node_memory_Cached_bytes{job='node-exporter',instance='{{.Params.instance}}'}", + "node_memory_MemFree{job='node-exporter',instance='{{ .Params.instance }}'}", + ], + name: ["Cached", "Buffers", "Used", "Free"], + min: 0, + yUnits: "B", + yAxisFormatter: PromConsole.NumberFormatter.humanize1024, + yHoverFormatter: PromConsole.NumberFormatter.humanize1024, + yTitle: 'Memory' + }) + </script> + +{{ template "prom_content_tail" . }} + +{{ template "tail" }} |