From 0416ffe224b2f3206b09809d37d4a188028f19e5 Mon Sep 17 00:00:00 2001 From: Phonkd Date: Mon, 13 Jul 2026 16:57:57 +0200 Subject: [PATCH 1/2] add smartctl --- modules/observability.nix | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/modules/observability.nix b/modules/observability.nix index 247d2e5..ecb6e47 100644 --- a/modules/observability.nix +++ b/modules/observability.nix @@ -478,12 +478,14 @@ services.alloy.enable = true; systemd.services.alloy.serviceConfig.SupplementaryGroups = [ "systemd-journal" ]; services.prometheus.exporters.node = { - # enabledCollectors = [ - # "node" - # "postgres" - # ]; + enabledCollectors = [ + "node" + "postgres" + "smartctl" + ]; enable = true; }; + services.prometheus.exporters.smartctl.enable = true; # Process exporter for per-service CPU/memory metrics. # Runs as root so it can read /proc for all processes. From e3ffde96d20516016cc43d05d0469ca883495850 Mon Sep 17 00:00:00 2001 From: Phonkd Date: Mon, 13 Jul 2026 23:40:35 +0200 Subject: [PATCH 2/2] idk slop scrape smart --- modules/observability.nix | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/modules/observability.nix b/modules/observability.nix index ecb6e47..22e4086 100644 --- a/modules/observability.nix +++ b/modules/observability.nix @@ -477,14 +477,13 @@ services.alloy.enable = true; systemd.services.alloy.serviceConfig.SupplementaryGroups = [ "systemd-journal" ]; - services.prometheus.exporters.node = { - enabledCollectors = [ - "node" - "postgres" - "smartctl" - ]; - enable = true; - }; + services.prometheus.exporters.node.enable = true; + + # SMART disk metrics. smartctl is its own exporter (:9633), NOT a + # node_exporter collector — passing it via enabledCollectors makes + # node_exporter fail on an unknown --collector.smartctl flag. It only + # yields data on hosts whose disks actually expose SMART; plain virtio + # disks in VMs don't, so expect empty results there. services.prometheus.exporters.smartctl.enable = true; # Process exporter for per-service CPU/memory metrics. @@ -519,6 +518,15 @@ forward_to = [prometheus.remote_write.nixvms.receiver] } + // Scrape the standalone smartctl exporter (port 9633). Without a + // scrape job its metrics never reach Mimir — the exporter just + // sits there answering /metrics to nobody. + prometheus.scrape "smartctl" { + targets = [{"__address__" = "127.0.0.1:9633"}] + job_name = "integrations/smartctl" + forward_to = [prometheus.remote_write.nixvms.receiver] + } + // Scrape the NixOS-native process exporter (runs as root, port 9256). // Produces namedprocess_namegroup_cpu_seconds_total{groupname=""}. prometheus.scrape "process" {