summary refs log tree commit diff
path: root/modules/foundation/monitoring/client.nix
blob: 6c91639ff5fc379938e168135137940811d6fe2e (plain)
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
76
77
78
79
80
81
82
83
84
85
86
{
  lib,
  config,

  services,
  listenAddress,
  nodeExporterPort,
  nginxExporterPort,
  nginxLogExporterPort,
  cadvisorExporterPort,
  dnsmasqExporterPort,
  ...
}:

{
  foundation.tailnetServices =
    let
      exporter = name: "promethes-${name}-exporter";
    in
    [
      (exporter "node")
      (exporter "nginx")
      (exporter "nginxlog")
      # note: it doesn't matter if the service is only enabled conditionally.
      (exporter "dnsmasq")

      "cadvisor"
    ];

  services = {
    prometheus.exporters = {
      node = {
        enable = true;
        openFirewall = false;
        port = nodeExporterPort;
        inherit listenAddress;
      };

      nginx = {
        enable = true;
        openFirewall = false;
        port = nginxExporterPort;
        inherit listenAddress;
      };

      nginxlog = {
        enable = true;
        openFirewall = false;
        port = nginxLogExporterPort;
        inherit listenAddress;

        user = "nginx";
        group = "nginx";

        settings.namespaces =
          let
            namespace = name: log: {
              inherit name;
              source_files = [ log ];
              parser = "json";
              metrics_override.prefix = "nginx";
              namespace_label = "vhost";
            };

            vhost = name: (namespace name "/var/log/nginx/${name}.access.log");
          in
          [
            (namespace "default" "/var/log/nginx/access.log")
          ]
          ++ (map vhost services);
      };

      dnsmasq = lib.mkIf config.services.dnsmasq.enable {
        enable = true;
        port = dnsmasqExporterPort;
        inherit listenAddress;
      };
    };

    cadvisor = {
      enable = true;
      port = cadvisorExporterPort;
      inherit listenAddress;
    };
  };
}