ops/nixos: add totoro as prometheus box; enable node-exporter everywhere

This commit is contained in:
Luke Granger-Brown 2020-11-06 04:52:54 +00:00
parent 4d81a500bd
commit 17ac1212dd
3 changed files with 50 additions and 0 deletions

View file

@ -22,7 +22,19 @@ let
evaledSystems = mapAttrs systemFor systemCfgs; evaledSystems = mapAttrs systemFor systemCfgs;
systemDrvs = mapAttrs (_: sys: sys.config.system.build.toplevel) evaledSystems; systemDrvs = mapAttrs (_: sys: sys.config.system.build.toplevel) evaledSystems;
systemTailscaleIPs = lib.mapAttrs' (n: v: lib.nameValuePair v [n]) (lib.filterAttrs (n: v: v != null) (mapAttrs (_: sys: sys.config.my.ip.tailscale) evaledSystems)); systemTailscaleIPs = lib.mapAttrs' (n: v: lib.nameValuePair v [n]) (lib.filterAttrs (n: v: v != null) (mapAttrs (_: sys: sys.config.my.ip.tailscale) evaledSystems));
systemExporters = builtins.listToAttrs (builtins.concatLists (lib.mapAttrsToList (sysName: sys: lib.mapAttrsToList (exporterName: exporter: let jobName = "${sysName}/exporters/${exporterName}"; in lib.nameValuePair jobName {
job_name = jobName;
static_configs = [{
targets = ["${sysName}:${toString exporter.port}"];
labels = {
system = sysName;
exporter = exporterName;
};
}];
}) (lib.filterAttrs (_: exporter: exporter.enable) sys.config.services.prometheus.exporters)) evaledSystems));
in systemDrvs // { in systemDrvs // {
systems = systemDrvs; systems = systemDrvs;
systemExporters = systemExporters;
tailscaleIPs = systemTailscaleIPs; tailscaleIPs = systemTailscaleIPs;
} }

View file

@ -140,5 +140,7 @@ in
lib.optional (config.my.home-manager.system != null) config.my.home-manager.system lib.optional (config.my.home-manager.system != null) config.my.home-manager.system
); );
}); });
services.prometheus.exporters.node.enable = true;
}; };
} }

View file

@ -84,5 +84,41 @@ in {
networking.firewall.allowedTCPPorts = [ 80 443 ]; networking.firewall.allowedTCPPorts = [ 80 443 ];
systemd.tmpfiles.rules = [
"L /var/lib/export - - - - /export"
];
services.prometheus = {
enable = true;
stateDir = "export/monitoring/prometheus";
alertmanagers = [{
scheme = "http";
static_configs = [{
targets = ["localhost:${toString config.services.prometheus.alertmanager.port}"];
}];
}];
scrapeConfigs = builtins.attrValues depot.ops.nixos.systemExporters;
pushgateway.enable = true;
alertmanager = {
enable = true;
configuration = {
global = {};
route = {
receiver = "default-receiver";
};
receivers = [{
name = "default-receiver";
slack_configs = [{
send_resolved = true;
api_url = secrets.monitoring.alertmanager.discord.api_url;
channel = "#alerts";
}];
}];
};
};
};
system.stateVersion = "20.03"; system.stateVersion = "20.03";
} }