summaryrefslogtreecommitdiff
path: root/systems/atlas/victoria-metrics.nix
blob: 25f0e57b4d7b5d7e92fa5955bedac7bd467eff86 (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
{
  lib,
  inputs,
  ...
}:

let
  usesNodeExporter = system: system.config.services.prometheus.exporters.node.enable;

  nodeExporterFrom =
    system:
    "http://${system.config.networking.hostName}:${toString system.config.services.prometheus.exporters.node.port}";

  toNodeStaticConfig = system: {
    targets = [ (nodeExporterFrom system) ];
    labels.type = "node";
  };

  remoteNodes = lib.mapAttrsToList (lib.const toNodeStaticConfig) (
    lib.filterAttrs (lib.const usesNodeExporter) inputs.self.nixosConfigurations
  );
in

{
  borealis = {
    victorialogs = {
      enable = true;
    };
  };

  services = {
    journald.upload.enable = true;

    prometheus.exporters.node.enable = true;

    victoriametrics = {
      enable = true;

      retentionPeriod = "7d";

      prometheusConfig = {
        scrape_configs = [
          {
            job_name = "node-exporter";
            metrics_path = "/metrics";
            static_configs = remoteNodes;
          }
        ];
      };
    };
  };
}