| # Prometheus configuration for a BIRD-enabled router. |
| |
| { config, pkgs, lib, ... }: |
| |
| with lib; |
| |
| let |
| nodeExporterPort = 9100; |
| birdExporterPort = 9101; |
| |
| birdExporter = pkgs.buildGoModule rec { |
| pname = "bird-exporter"; |
| version = "1.2.5"; |
| src = pkgs.fetchFromGitHub { |
| owner = "czerwonk"; |
| repo = "bird_exporter"; |
| rev = version; |
| sha256 = "1qrhncy1f119f5rfgn2d1l6nvapaqkld4zb9bxzdqmmw6kicc7bs"; |
| }; |
| |
| vendorSha256 = null; |
| }; |
| |
| in { |
| systemd.services.bird_exporter = { |
| wantedBy = [ "multi-user.target" ]; |
| serviceConfig = { |
| Type = "simple"; |
| ExecStart = "${birdExporter}/bin/bird_exporter -format.new=true -bird.v2=true -web.listen-address=127.0.0.1:${toString birdExporterPort}"; |
| Restart = "always"; |
| RestartSec = "60"; |
| }; |
| }; |
| |
| services.prometheus.exporters.node = { |
| enable = true; |
| listenAddress = "127.0.0.1"; |
| port = nodeExporterPort; |
| }; |
| |
| services.nginx.enable = true; |
| services.nginx.virtualHosts."${config.networking.hostName}.${config.networking.domain}" = let |
| allowMonitoring = '' |
| allow 209.250.231.127; # monitoring.hackerspace.pl |
| deny all; |
| ''; |
| in { |
| locations."/metrics-node" = { |
| proxyPass = "http://127.0.0.1:${toString nodeExporterPort}/metrics"; |
| extraConfig = allowMonitoring; |
| }; |
| locations."/metrics-bird" = { |
| proxyPass = "http://127.0.0.1:${toString birdExporterPort}/metrics"; |
| extraConfig = allowMonitoring; |
| }; |
| }; |
| } |