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" ]; + } + ]; + } + ]; + }; +}