summary refs log tree commit diff
path: root/modules/monitoring/system.nix
blob: cc1ec66ab03e49d0fb4b8d7e712d54bc934d5a0c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
{ lib, config, ... }:
let
  cfg = config.monitoring;
in
{
  config = lib.mkIf (cfg.monitorAll) {
    services.prometheus.exporters.node = {
      enable = true;
      port = 9100;
      enabledCollectors = [
        #"logind" #too slow
        "systemd"
        "processes"
        "interrupts"
        # Testing:
        "buddyinfo"
        "cgroups"
        "ksmd"
        "lnstat"
        "mountstats"
        "network_route"
        #"perf" # requires sysctl change
        "qdisc"
        "sysctl"
        "softirqs"
        "tcpstat"
      ];
      disabledCollectors = [
        "textfile"
        "xfs"
        "zfs"
        "selinux"
        "cpufreq"
        "btrfs"
        "powersupplyclass"
        "mdadm"
        "tapestats"
        "fibrechannel"
        "cpu_vulnerabilities"
        "watchdog"
        "thermal_zone"
        "logind"
        "nfs"
        "nfsd"
        "infiniband"
      ];
    };

    services.prometheus.scrapeConfigs = (
        lib.map (interval: {
            job_name = "node-${toString interval}s";
            scrape_interval = "${toString interval}s";
            static_configs = [ { targets = [ "localhost:${toString config.services.prometheus.exporters.node.port}" ]; } ];
        }) cfg.prometheusScrapeIntervals
    );

    services.grafana.provision.dashboards.settings = {
      apiVersion = 1;
      providers = [
        {
          name = "default";
          orgId = 1;
          type = "file";
          options = {
            path = builtins.fetchurl {
              url = "https://grafana.com/api/dashboards/1860/revisions/37/download";
              sha256 = "0qza4j8lywrj08bqbww52dgh2p2b9rkhq5p313g72i57lrlkacfl";
            };
          };
        }
      ];
    };

  };
}