summaryrefslogtreecommitdiff
path: root/machines/xnet/monitoring/grafana.nix
blob: 6a37ce1a0e5e049406db6160babaad1e08438861 (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
{ config, pkgs, ... }: {
  services.grafana.provision = {
    enable = true;
    datasources.settings.datasources = [{
      name = "Prometheus";
      type = "prometheus";
      url = "http://localhost:9090";
      access = "proxy";
      editable = false;
    }];

    dashboards.settings.providers = [{
      name = "Fetched Dashboards";
      options.path = "/etc/grafana/dashboards";
    }];
  };

  environment.etc = {
    "grafana/dashboards/node-exporter.json" = {
      user = "grafana";
      group = "grafana";
      source = pkgs.fetchurl {
        url = "https://grafana.com/api/dashboards/1860/revisions/37/download";
        hash = "sha256-1DE1aaanRHHeCOMWDGdOS1wBXxOF84UXAjJzT5Ek6mM=";
      };
    };
  };

  services.grafana = {
    enable = true;
    settings.server = {
      domain = "grafana.web.4kb.net";
      protocol = "socket";
    };
    settings."auth.anonymous" = {
      enabled = true;
      org_role = "Admin";
    };
  };

  users.groups.grafana.members = [ "nginx" ];
  systemd.services.nginx.serviceConfig.ProtectHome = false;

  services.nginx.virtualHosts."${config.services.grafana.settings.server.domain}" = {
    useACMEHost = "4kb.net";
    addSSL = true;
    locations."/" = {
      proxyPass = "http://unix:/${toString config.services.grafana.settings.server.socket}";
    };
  };
}