{ config, pkgs, ... }: { # grafana configuration services.grafana = { enable = true; domain = "stats.mossnet.lan"; port = 2342; addr = "127.0.0.1"; }; # nginx reverse proxy services.nginx.virtualHosts.${config.services.grafana.domain} = { locations."/" = { proxyPass = "http://127.0.0.1:${toString config.services.grafana.port}"; proxyWebsockets = true; }; }; services.prometheus = { enable = true; port = 9001; exporters = { node = { enable = true; enabledCollectors = [ "systemd" ]; port = 9002; }; dnsmasq = { enable = true; port = 9153; }; }; scrapeConfigs = [ { job_name = "box"; static_configs = [{ targets = [ "127.0.0.1:${toString config.services.prometheus.exporters.node.port}" ]; }]; } { job_name = "dns"; static_configs = [{ targets = [ "127.0.0.1:${toString config.services.prometheus.exporters.dnsmasq.port}" ]; }]; } ]; }; services.loki = { enable = true; configFile = /var/loki-config.yaml; }; systemd.services.promtail = { description = "Promtail service for Loki"; wantedBy = [ "multi-user.target" ]; serviceConfig = { ExecStart = '' ${pkgs.grafana-loki}/bin/promtail --config.file ${/var/promtail.yaml} ''; }; }; }