From 1515ce28e4fb6fc7a207eb0cc66974c3503e8630 Mon Sep 17 00:00:00 2001 From: SebastianStork Date: Mon, 22 Sep 2025 00:28:47 +0200 Subject: [PATCH] alloy: Add caddy metrics scraping --- hosts/srv-monitor/default.nix | 1 + hosts/srv-private/default.nix | 5 ++++- hosts/srv-public/default.nix | 5 ++++- modules/system/services/alloy.nix | 19 ++++++++++++++++++- 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/hosts/srv-monitor/default.nix b/hosts/srv-monitor/default.nix index f99f913..3ef3e6e 100644 --- a/hosts/srv-monitor/default.nix +++ b/hosts/srv-monitor/default.nix @@ -82,6 +82,7 @@ collect.metrics = { system = true; victorialogs = true; + caddy = true; }; }; diff --git a/hosts/srv-private/default.nix b/hosts/srv-private/default.nix index 130ebe7..951fac3 100644 --- a/hosts/srv-private/default.nix +++ b/hosts/srv-private/default.nix @@ -56,7 +56,10 @@ alloy = { enable = true; domain = "alloy-${config.networking.hostName}.${tailscaleDomain}"; - collect.metrics.system = true; + collect.metrics = { + system = true; + caddy = true; + }; }; caddy.virtualHosts = diff --git a/hosts/srv-public/default.nix b/hosts/srv-public/default.nix index 6c5132e..b54effa 100644 --- a/hosts/srv-public/default.nix +++ b/hosts/srv-public/default.nix @@ -78,7 +78,10 @@ enable = true; domain = "alloy-${config.networking.hostName}.${config.custom.services.tailscale.domain}"; collect = { - metrics.system = true; + metrics = { + system = true; + caddy = true; + }; logs.sshd = true; }; }; diff --git a/modules/system/services/alloy.nix b/modules/system/services/alloy.nix index c8e5173..b7c73fa 100644 --- a/modules/system/services/alloy.nix +++ b/modules/system/services/alloy.nix @@ -25,6 +25,7 @@ in metrics = { system = lib.mkEnableOption ""; victorialogs = lib.mkEnableOption ""; + caddy = lib.mkEnableOption ""; }; logs.sshd = lib.mkEnableOption ""; }; @@ -36,6 +37,10 @@ in assertion = cfg.collect.metrics.victorialogs -> config.services.victorialogs.enable; message = "Collecting VictoriaLogs metrics requires the VictoriaLogs service to be enabled."; } + { + assertion = cfg.collect.metrics.caddy -> config.services.caddy.enable; + message = "Collecting Caddy metrics requires the Caddy service to be enabled."; + } { assertion = cfg.collect.logs.sshd -> config.services.openssh.enable; message = "Collecting OpenSSH logs requires the OpenSSH service to be enabled."; @@ -101,7 +106,19 @@ in prometheus.scrape "victorialogs" { targets = [{ __address__ = "localhost:${builtins.toString config.custom.services.victorialogs.port}", - job = "victorialogs", + instance = constants.hostname, + }] + forward_to = [prometheus.remote_write.default.receiver] + scrape_interval = "15s" + } + ''; + }; + "alloy/caddy-metrics.alloy" = { + enable = cfg.collect.metrics.caddy; + text = '' + prometheus.scrape "caddy" { + targets = [{ + __address__ = "localhost:2019", instance = constants.hostname, }] forward_to = [prometheus.remote_write.default.receiver]