From cab6a8f7a141ad41cb1fab2f1a037442f4caf6b0 Mon Sep 17 00:00:00 2001 From: "Simon R. - fantomitechno" Date: Wed, 1 Jul 2026 10:31:13 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20grafana?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IPAM.md | 4 +++ hosts/conseil/default.nix | 1 + hosts/fant0mib0t/default.nix | 2 ++ modules/caddy/fant0mib0t | 5 ++++ modules/metrics/grafana.nix | 53 ++++++++++++++++++++++++++++++++++ modules/metrics/prometheus.nix | 40 +++++++++++++++++++++++++ 6 files changed, 105 insertions(+) create mode 100644 modules/metrics/grafana.nix create mode 100644 modules/metrics/prometheus.nix diff --git a/IPAM.md b/IPAM.md index a47004e..9be2f9a 100644 --- a/IPAM.md +++ b/IPAM.md @@ -33,6 +33,7 @@ All public DNS entries are also registered on Cloudflare with a CNAME entry to ` | :----- | :------------- | | 10XX | Websites | | 20XX | Communications | +| 30XX | Metrics | | 40XX | Storages | ### OpnSense-DeLoreane @@ -56,6 +57,7 @@ Global DNS: `conseil.renoux.dev` | :--------------- | :--------------- | :------------------------ | | 22 | OpenSSH | | | 80, 443 | Caddy | | +| 3001 | Prometheus | | | 4000, 4001, 4002 | NFS | | | 4010 | Garage S3 API | `s3.fantom.internal` | | 4011 | Garage S3 Web UI | `s3.fantom.home` | @@ -73,6 +75,8 @@ Global DNS: `fant0mib0t.renoux.dev` | 2000 | Matrix | `matrix.fantomitechno.dev` | | 2010 | Tranquill PDS | `pds.fantomitechno.dev` | | 2020,2021 | Mastodon | `mastodon.fantomitechno.dev` | +| 3000 | Graphana | `graph.fantom.home` | +| 3001 | Prometheus | | | 4000 | Tangled Knot | `knot.fantomitechno.dev` | | 4005 | Gitea | `git.fantomitechno.dev` | | 4010 | Tangled Spindle | `spindle.fantomitechno.dev` | diff --git a/hosts/conseil/default.nix b/hosts/conseil/default.nix index ef00237..7c8c56c 100644 --- a/hosts/conseil/default.nix +++ b/hosts/conseil/default.nix @@ -10,6 +10,7 @@ ] ++ builtins.map (i: ../../modules/${i}) ([ "caddy" + "metrix/prometheus.nix" "nas" ]); diff --git a/hosts/fant0mib0t/default.nix b/hosts/fant0mib0t/default.nix index a7566fb..604bb44 100644 --- a/hosts/fant0mib0t/default.nix +++ b/hosts/fant0mib0t/default.nix @@ -12,6 +12,8 @@ ] ++ builtins.map (i: ../../modules/${i}) ([ "caddy" + "metrix/grafana.nix" + "metrix/prometheus.nix" "radius" "tangled" "docker.nix" diff --git a/modules/caddy/fant0mib0t b/modules/caddy/fant0mib0t index eb4aad7..c167e2b 100644 --- a/modules/caddy/fant0mib0t +++ b/modules/caddy/fant0mib0t @@ -87,6 +87,11 @@ notes.fantomitechno.dev { reverse_proxy 127.0.0.1:4070 } +http://graph.fantom.home { + import logging grafana + reverse_proxy 127.0.0.1:3000 +} + mastodon.fantomitechno.dev { import logging mastodon diff --git a/modules/metrics/grafana.nix b/modules/metrics/grafana.nix new file mode 100644 index 0000000..7b78ef0 --- /dev/null +++ b/modules/metrics/grafana.nix @@ -0,0 +1,53 @@ +{ ... }: +{ + services = { + grafana = { + enable = true; + settings = { + server = { + http_addr = "127.0.0.1"; + http_port = "3000"; + domain = "graph.fantom.home"; + + enforce_domain = true; + enable_gzip = true; + }; + }; + + provision = { + datasources.settings.datasources = [ + { + name = "Conseil"; + type = "prometheus"; + url = "http://172.16.20.10:3001"; + editable = false; + } + { + name = "fant0mib0t"; + type = "prometheus"; + url = "http://172.16.20.20:3001"; + editable = false; + } + ]; + }; + }; + + prometheus = { + exporters.opnsense = { + enable = true; + opnsenseServerAddress = "https://routeur.fantom.home"; + port = 9001; + }; + scrapeConfigs = [ + { + job_name = "opnsense"; + static_configs = [ + { + targets = [ "127.0.0.1:9001" ]; + } + ]; + } + ]; + }; + }; +} diff --git a/modules/metrics/prometheus.nix b/modules/metrics/prometheus.nix new file mode 100644 index 0000000..327a889 --- /dev/null +++ b/modules/metrics/prometheus.nix @@ -0,0 +1,40 @@ +{ + hostname, + ... +}: +{ + services.prometheus = { + exporters.node = { + enable = true; + port = 9000; + enabledCollectors = [ + "cpu" + "diskstats" + "ethtool" + "filesystem" + "softirqs" + "systemd" + "tcpstat" + ]; + extraFlags = [ + "--collector.ntp.protocol-version=4" + "--no-collector.mdadm" + ]; + }; + + enable = true; + port = 3001; + listenAddress = "0.0.0.0"; + + scrapeConfigs = [ + { + job_name = hostname; + static_configs = [ + { + targets = [ "127.0.0.1:9000" ]; + } + ]; + } + ]; + }; +} -- 2.54.0