From 1eca478a7b780507adc1b8e6718b76de74c9a474 Mon Sep 17 00:00:00 2001 From: mjallen18 Date: Wed, 22 Jan 2025 11:55:46 -0600 Subject: [PATCH] grafana init --- flake.lock | 30 +++++++-------- flake.nix | 1 + hosts/nas/apps/traefik/default.nix | 13 +++++++ hosts/nas/configuration.nix | 3 +- hosts/nas/grafana.nix | 62 ++++++++++++++++++++++++++++++ hosts/nas/services.nix | 55 +------------------------- 6 files changed, 94 insertions(+), 70 deletions(-) create mode 100644 hosts/nas/grafana.nix diff --git a/flake.lock b/flake.lock index 2cc5f76..0d9280f 100644 --- a/flake.lock +++ b/flake.lock @@ -237,11 +237,11 @@ ] }, "locked": { - "lastModified": 1737478403, - "narHash": "sha256-e6PJI4Bd+QdpukHyd5F/fQY8fRUiNfCwvCRU8WXMSk8=", + "lastModified": 1737299337, + "narHash": "sha256-0NBrY2A7buujKmeCbieopOMSbLxTu8TFcTLqAbTnQDw=", "owner": "nix-community", "repo": "home-manager", - "rev": "96dee79b178d295b716052feca3ee46abc085abe", + "rev": "f8ef4541bb8a54a8b52f19b52912119e689529b3", "type": "github" }, "original": { @@ -363,11 +363,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1737423230, - "narHash": "sha256-WEOiNmkcmlaeXy2HGW1PYxYmCPiHdsI7a7SpjhBYxRg=", + "lastModified": 1737162735, + "narHash": "sha256-5T+HkouTMGaRm0rh3kgD4Z1O7ONKfgjyoPQH5rSyreU=", "owner": "LnL7", "repo": "nix-darwin", - "rev": "46d0fa4ded0a7532f19870f9bbedaf62269fe3f7", + "rev": "87131f51f8256952d1a306b5521cedc2dc61aa08", "type": "github" }, "original": { @@ -420,11 +420,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1737359802, - "narHash": "sha256-utplyRM6pqnN940gfaLFBb9oUCSzkan86IvmkhsVlN8=", + "lastModified": 1736978406, + "narHash": "sha256-oMr3PVIQ8XPDI8/x6BHxsWEPBRU98Pam6KGVwUh8MPk=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "61c79181e77ef774ab0468b28a24bc2647d498d6", + "rev": "b678606690027913f3434dea3864e712b862dde5", "type": "github" }, "original": { @@ -480,11 +480,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1737299813, - "narHash": "sha256-Qw2PwmkXDK8sPQ5YQ/y/icbQ+TYgbxfjhgnkNJyT1X8=", + "lastModified": 1737165118, + "narHash": "sha256-s40Kk/OulP3J/1JvC3VT16U4r/Xw6Qdi7SRw3LYkPWs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "107d5ef05c0b1119749e381451389eded30fb0d5", + "rev": "6a3ae7a5a12fb8cac2d59d7df7cbd95f9b2f0566", "type": "github" }, "original": { @@ -664,11 +664,11 @@ ] }, "locked": { - "lastModified": 1737411508, - "narHash": "sha256-j9IdflJwRtqo9WpM0OfAZml47eBblUHGNQTe62OUqTw=", + "lastModified": 1737107480, + "narHash": "sha256-GXUE9+FgxoZU8v0p6ilBJ8NH7k8nKmZjp/7dmMrCv3o=", "owner": "Mic92", "repo": "sops-nix", - "rev": "015d461c16678fc02a2f405eb453abb509d4e1d4", + "rev": "4c4fb93f18b9072c6fa1986221f9a3d7bf1fe4b6", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 922b9d5..497579d 100644 --- a/flake.nix +++ b/flake.nix @@ -14,6 +14,7 @@ # Authentik authentik-nix = { url = "github:nix-community/authentik-nix"; + # url = "github:fpletz/authentik-nix/24.11"; # for some reason this is broken in stable and unstable inputs.nixpkgs.follows = "nixpkgs-stable"; }; diff --git a/hosts/nas/apps/traefik/default.nix b/hosts/nas/apps/traefik/default.nix index 0bb785c..a3ddbcc 100644 --- a/hosts/nas/apps/traefik/default.nix +++ b/hosts/nas/apps/traefik/default.nix @@ -48,12 +48,25 @@ in asDefault = true; http.tls.certResolver = "letsencrypt"; }; + + metrics = { + address = ":8082"; # Port for metrics + }; }; log = { level = "INFO"; }; + metrics = { + prometheus = { + entryPoint = "metrics"; + addEntryPointsLabels = true; + addServicesLabels = true; + buckets = [0.1 0.3 1.2 5.0]; # Response time buckets + }; + }; + certificatesResolvers.letsencrypt.acme = { email = "jalle008@proton.me"; storage = "${config.services.traefik.dataDir}/acme.json"; diff --git a/hosts/nas/configuration.nix b/hosts/nas/configuration.nix index f4a8d12..d704bfe 100755 --- a/hosts/nas/configuration.nix +++ b/hosts/nas/configuration.nix @@ -19,6 +19,7 @@ in ./filesystems.nix ./boot.nix ./apps.nix + ./grafana.nix ./networking.nix ./ups.nix ./samba.nix @@ -34,7 +35,7 @@ in # Cockpit services.cockpit = { - enable = true; + enable = false; port = 9090; settings = { WebService = { diff --git a/hosts/nas/grafana.nix b/hosts/nas/grafana.nix new file mode 100644 index 0000000..347ed78 --- /dev/null +++ b/hosts/nas/grafana.nix @@ -0,0 +1,62 @@ +{ config, ... }: +{ + services = { + prometheus = { + enable = true; + exporters = { + node = { + enable = true; + enabledCollectors = [ + "filesystem" + "diskstats" + "meminfo" + "cpu" + "systemd" # Ensures systemd collector is enabled + "processes" + ]; + extraFlags = [ + "--collector.filesystem.mount-points-exclude=^/(dev|proc|sys|run)($|/)" + ]; + }; + }; + scrapeConfigs = [ + { + job_name = "node"; + static_configs = [{ + targets = [ "localhost:${toString config.services.prometheus.exporters.node.port}" ]; + }]; + } + { + job_name = "traefik"; + static_configs = [{ + targets = [ "localhost:8082" ]; + }]; + } + ]; + }; + + grafana = { + enable = true; + settings = { + server = { + http_port = 9999; + http_addr = "0.0.0.0"; + }; + }; + + dataDir = "/media/nas/ssd/nix-app-data/grafana"; + + provision = { + enable = true; + datasources.settings.datasources = [{ + name = "Prometheus"; + type = "prometheus"; + access = "proxy"; + url = "http://localhost:${toString config.services.prometheus.port}"; + }]; + }; + }; + }; + # Open firewall ports for Grafana + networking.firewall.allowedTCPPorts = [ 9999 ]; +} \ No newline at end of file diff --git a/hosts/nas/services.nix b/hosts/nas/services.nix index fd6dec8..70fa4b4 100644 --- a/hosts/nas/services.nix +++ b/hosts/nas/services.nix @@ -200,65 +200,12 @@ in }; }; - grafana = { - enable = false; - settings.server = { - http_port = 2342; - domain = "10.0.1.18"; - serve_from_sub_path = true; - http_addr = ""; - }; - dataDir = "/media/nas/ssd/nix-app-data/grafana"; - }; - nix-serve = { enable = false; secretKeyFile = "/var/cache-priv-key.pem"; }; - - prometheus = { - enable = false; - port = 8000; - exporters = { - node = { - enable = true; - enabledCollectors = [ - "diskstats" - "systemd" - ]; - port = 8001; - }; - smartctl = { - enable = true; - group = "disk"; - devices = [ - "/dev/mapper/ssd1" - "/dev/mapper/ssd2" - "/dev/mapper/hdd1" - "/dev/mapper/hdd2" - "/dev/mapper/hdd3" - "/dev/mapper/hdd4" - "/dev/mapper/hdd5" - ]; - }; - }; - - scrapeConfigs = [ - { - job_name = "jallen-nas"; - static_configs = [ - { - targets = [ - "127.0.0.1:${toString config.services.prometheus.exporters.node.port}" - "127.0.0.1:${toString config.services.prometheus.exporters.smartctl.port}" - ]; - } - ]; - } - ]; - }; }; - + systemd.user.services = { protonmail-bridge = { description = "Protonmail Bridge";