main
nix 58 lines 1.72 KB
Raw
1 {
2 config,
3 pkgs,
4 ...
5 }:
6
7 let
8 prometheus-nixos-exporter = pkgs.callPackage ./nixos-exporter { };
9 in
10 {
11 services.prometheus.exporters.node = {
12 enable = true;
13 enabledCollectors = [ "systemd" ];
14 extraFlags = [ "--collector.textfile.directory=/var/lib/prometheus-node-exporter-text-files" ];
15 openFirewall = true;
16 firewallRules = ''
17 ip6 saddr $prometheus_inet6 tcp dport ${toString config.services.prometheus.exporters.node.port} accept
18 ip saddr $prometheus_inet4 tcp dport ${toString config.services.prometheus.exporters.node.port} accept
19 '';
20 };
21
22 system.activationScripts.node-exporter-system-version = ''
23 mkdir -pm 0775 /var/lib/prometheus-node-exporter-text-files
24
25 cd /var/lib/prometheus-node-exporter-text-files
26 ${./system-version-exporter.sh} | ${pkgs.moreutils}/bin/sponge system-version.prom
27 '';
28
29 systemd.services.prometheus-nixos-exporter = {
30 wantedBy = [ "multi-user.target" ];
31 after = [ "network.target" ];
32 path = [
33 pkgs.nix
34 pkgs.bash
35 ];
36 serviceConfig = {
37 Restart = "always";
38 RestartSec = "60s";
39 ExecStart = "${prometheus-nixos-exporter}/bin/prometheus-nixos-exporter";
40 };
41 };
42
43 networking.firewall.extraInputRules = ''
44 # prometheus-nixos-exporter
45 ip6 saddr $prometheus_inet6 tcp dport 9300 accept
46 ip saddr $prometheus_inet4 tcp dport 9300 accept
47 '';
48
49 services.prometheus.exporters.zfs = {
50 enable = true;
51 listenAddress = "[::]";
52 openFirewall = true;
53 firewallRules = ''
54 ip6 saddr $prometheus_inet6 tcp dport ${toString config.services.prometheus.exporters.zfs.port} accept
55 ip saddr $prometheus_inet4 tcp dport ${toString config.services.prometheus.exporters.zfs.port} accept
56 '';
57 };
58 }