configuration.nix/hosts/shared/prometheus-exporters.nix
2024-10-27 23:56:51 +05:30

57 lines
1.9 KiB
Nix

{ lib, config, ... }:
let
inherit (import ./caddy-helpers.nix) logFormat tlsAcmeDnsChallenge;
in
{
services = {
caddy =
let
vHost = "${config.networking.hostName}.labs.adtya.xyz";
in
{
virtualHosts."${vHost}" = {
inherit logFormat;
extraConfig = ''
${tlsAcmeDnsChallenge}
metrics /caddy-metrics
handle /metrics {
reverse_proxy ${config.services.prometheus.exporters.node.listenAddress}:${toString config.services.prometheus.exporters.node.port}
}
handle /smartctl-metrics {
uri replace /smartctl-metrics /metrics
reverse_proxy ${config.services.prometheus.exporters.smartctl.listenAddress}:${toString config.services.prometheus.exporters.smartctl.port}
}
handle /systemd-metrics {
uri replace /systemd-metrics /metrics
reverse_proxy ${config.services.prometheus.exporters.systemd.listenAddress}:${toString config.services.prometheus.exporters.systemd.port}
}
${lib.optionalString config.services.prometheus.exporters.postgres.enable ''
handle /postgres-metrics {
uri replace /postgres-metrics /metrics
reverse_proxy ${config.services.prometheus.exporters.postgres.listenAddress}:${toString config.services.prometheus.exporters.postgres.port}
}
''}
'';
};
};
prometheus.exporters = {
node = {
enable = true;
listenAddress = "127.0.0.1";
port = 9100;
enabledCollectors = [ "systemd" "processes" ];
};
smartctl = {
enable = true;
listenAddress = "127.0.0.1";
port = 9633;
};
systemd = {
enable = true;
listenAddress = "127.0.0.1";
port = 9558;
};
};
};
}