87 lines
1.8 KiB
Nix
87 lines
1.8 KiB
Nix
{pkgs, ...}: let
|
|
# Port configurations
|
|
ports = {
|
|
# System exporters
|
|
node = 9100;
|
|
systemd = 9558;
|
|
process = 9256;
|
|
nvidiagpu = 9835;
|
|
|
|
# Infrastructure exporters
|
|
cadvisor = 8080;
|
|
caddy = 2019;
|
|
};
|
|
in {
|
|
services = {
|
|
prometheus = {
|
|
exporters = {
|
|
systemd = {
|
|
enable = true;
|
|
port = ports.systemd;
|
|
};
|
|
nvidia-gpu = {
|
|
enable = true;
|
|
port = ports.nvidiagpu;
|
|
};
|
|
node = {
|
|
enable = true;
|
|
enabledCollectors = [
|
|
"systemd"
|
|
"textfile"
|
|
"filesystem"
|
|
"loadavg"
|
|
"meminfo"
|
|
"netdev"
|
|
"stat"
|
|
"time"
|
|
"uname"
|
|
"vmstat"
|
|
"diskstats"
|
|
"cpu"
|
|
];
|
|
port = ports.node;
|
|
};
|
|
process = {
|
|
enable = true;
|
|
settings.process_names = [
|
|
{
|
|
name = "{{.Comm}}";
|
|
cmdline = [".*"];
|
|
}
|
|
];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
# Docker cAdvisor for container metrics
|
|
virtualisation.oci-containers.containers.cadvisor = {
|
|
image = "gcr.io/cadvisor/cadvisor:v0.49.1";
|
|
ports = ["${toString ports.cadvisor}:8080"];
|
|
volumes = [
|
|
"/:/rootfs:ro"
|
|
"/var/run:/var/run:ro"
|
|
"/sys:/sys:ro"
|
|
"/var/lib/docker/:/var/lib/docker:ro"
|
|
"/dev/disk/:/dev/disk:ro"
|
|
];
|
|
extraOptions = [
|
|
"--privileged"
|
|
"--device=/dev/kmsg"
|
|
];
|
|
};
|
|
|
|
# Open firewall ports for Prometheus exporters
|
|
networking.firewall = {
|
|
# Allow from Tailscale network
|
|
interfaces."tailscale0".allowedTCPPorts = [
|
|
ports.node
|
|
ports.systemd
|
|
ports.process
|
|
ports.nvidiagpu
|
|
ports.cadvisor
|
|
ports.caddy
|
|
];
|
|
};
|
|
}
|