initial commit
flake-check / flake-check (push) Canceled after 0s
lint / lint (push) Canceled after 0s
diff-tag / dix (push) Canceled after 0s

This commit is contained in:
Floweynt
2026-08-31 08:41:45 -05:00
commit 76fa38e34c
54 changed files with 6747 additions and 0 deletions
@@ -0,0 +1,167 @@
{ pkgs, lib }:
let
inherit (import ./helpers.nix { inherit pkgs lib; })
T
mkRow
mkStat
mkGauge
mkTs
mkDashboard
;
in
mkDashboard {
name = "host.json";
title = "Host";
uid = "host";
panels = [
(mkRow "Overview")
(mkGauge {
title = "CPU";
expr = ''100 * (1 - avg(rate(node_cpu_seconds_total{mode="idle"}[5m])))'';
})
(mkGauge {
title = "Memory used";
expr = "100 * (1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)";
})
(mkStat {
title = "Load (1m)";
unit = "short";
decimals = 2;
expr = "node_load1";
})
(mkStat {
title = "Load (5m)";
unit = "short";
decimals = 2;
expr = "node_load5";
})
(mkStat {
title = "Uptime";
unit = "dtdurations";
decimals = 0;
expr = "node_time_seconds - node_boot_time_seconds";
})
(mkRow "CPU")
(mkTs {
title = "CPU usage (%)";
unit = "percent";
targets = [
(T ''avg(rate(node_cpu_seconds_total{mode="user"}[5m])) * 100'' "user")
(T ''avg(rate(node_cpu_seconds_total{mode="system"}[5m])) * 100'' "system")
(T ''avg(rate(node_cpu_seconds_total{mode="iowait"}[5m])) * 100'' "iowait")
(T ''avg(rate(node_cpu_seconds_total{mode="steal"}[5m])) * 100'' "steal")
(T ''avg(rate(node_cpu_seconds_total{mode="softirq"}[5m])) * 100'' "softirq")
];
})
(mkTs {
title = "Per-core usage (%)";
unit = "percent";
targets = [
(T ''(1 - rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100'' "cpu{{cpu}}")
];
})
(mkTs {
title = "CPU temperatures";
unit = "celsius";
targets = [
(T "node_hwmon_temp_celsius" "{{chip}} {{sensor}}")
];
})
(mkTs {
title = "Load average";
targets = [
(T "node_load1" "1m")
(T "node_load5" "5m")
(T "node_load15" "15m")
];
})
(mkRow "Memory")
(mkTs {
title = "Memory";
unit = "bytes";
targets = [
(T "node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes" "used")
(T "node_memory_Cached_bytes + node_memory_Buffers_bytes" "cache + buffers")
(T "node_memory_MemAvailable_bytes" "available")
(T "node_memory_MemTotal_bytes" "total")
];
})
(mkTs {
title = "Swap";
unit = "bytes";
targets = [
(T "node_memory_SwapTotal_bytes - node_memory_SwapFree_bytes" "used")
(T "node_memory_SwapTotal_bytes" "total")
];
})
(mkRow "Disk")
(mkTs {
title = "Filesystem usage (%)";
unit = "percent";
targets = [
(T ''100 * (1 - node_filesystem_avail_bytes{fstype=~"btrfs|ext4|xfs|vfat|f2fs"} / node_filesystem_size_bytes{fstype=~"btrfs|ext4|xfs|vfat|f2fs"})'' "{{mountpoint}}")
];
})
(mkTs {
title = "Disk IO (bytes/s)";
unit = "Bps";
targets = [
(T ''rate(node_disk_read_bytes_total{device!~"loop.*"}[5m])'' "{{device}} read")
(T ''rate(node_disk_written_bytes_total{device!~"loop.*"}[5m])'' "{{device}} write")
];
})
(mkTs {
title = "Disk IO utilisation (%)";
unit = "percent";
targets = [
(T ''rate(node_disk_io_time_seconds_total{device!~"loop.*"}[5m]) * 100'' "{{device}}")
];
})
(mkRow "Network")
(mkTs {
title = "Network (bytes/s)";
unit = "Bps";
targets = [
(T ''rate(node_network_receive_bytes_total{device!~"lo|br-.*|vh-.*|vc-.*"}[5m])'' "{{device}} rx")
(T ''rate(node_network_transmit_bytes_total{device!~"lo|br-.*|vh-.*|vc-.*"}[5m])'' "{{device}} tx")
];
})
(mkTs {
title = "Network errors + drops (pps)";
targets = [
(T ''rate(node_network_receive_errs_total{device!~"lo|br-.*|vh-.*|vc-.*"}[5m])'' "{{device}} rx err")
(T ''rate(node_network_transmit_errs_total{device!~"lo|br-.*|vh-.*|vc-.*"}[5m])'' "{{device}} tx err")
(T ''rate(node_network_receive_drop_total{device!~"lo|br-.*|vh-.*|vc-.*"}[5m])'' "{{device}} rx drop")
(T ''rate(node_network_transmit_drop_total{device!~"lo|br-.*|vh-.*|vc-.*"}[5m])'' "{{device}} tx drop")
];
})
(mkRow "System")
(mkTs {
title = "Context switches + forks (ops/s)";
targets = [
(T "rate(node_context_switches_total[5m])" "context switches")
(T "rate(node_forks_total[5m])" "forks")
];
})
(mkTs {
title = "File descriptors";
targets = [
(T "node_filefd_allocated" "allocated")
(T "node_filefd_maximum" "limit")
];
})
(mkTs {
title = "Processes";
targets = [
(T "node_procs_running" "running")
(T "node_procs_blocked" "blocked on IO")
];
})
];
}