Add prometheus and grafana to Eris
graham christensen committed
Oct 30, 2018 at 12:25 UTC
ca8b05be77eeda671672448a13318e7baff65adc
1 file changed
+66
-2
delft/eris.nix
+66
-2
@@ -1,4 +1,68 @@
1
-{ config, lib, pkgs, ... }:
2
-{ deployment.targetEnv = "hetzner";
1
+{ nodes, config, lib, pkgs, ... }:
2
+let
3
+
4
+in { deployment.targetEnv = "hetzner";
5
deployment.hetzner.mainIPv4 = "138.201.32.77";
6
+
7
+ networking.extraHosts = ''
8
+ 46.4.67.10 chef
9
+ 147.75.198.47 packet-epyc-1
10
+ 147.75.98.145 packet-t2-4
11
+ 147.75.65.54 packet-t2a-1
12
+ 147.75.79.198 packet-t2a-2
13
+ '' + (let
14
+ nums = lib.lists.range 1 9;
15
+ name = num: ''
16
+ 37.153.215.191 mac${toString num}-host
17
+ 37.153.215.191 mac${toString num}-guest
18
+ '';
19
+ in lib.strings.concatMapStrings name nums);
20
+
21
+ networking.firewall.allowedTCPPorts = [
22
+ 443 80 # nginx
23
+ 9090 # prometheus's web UI
24
+ ];
25
+
26
+ services.nginx = {
27
+ enable = true;
28
+ virtualHosts."status.nixos.org" = {
29
+ enableACME = true;
30
+ forceSSL = true;
31
+ root = pkgs.writeTextDir "index.html" "check out /grafana and /prometheus";
32
+ locations."/grafana/".proxyPass = "http://${config.services.grafana.addr}:${toString config.services.grafana.port}/";
33
+ locations."/prometheus".proxyPass = "http://${config.services.prometheus.listenAddress}";
34
+ };
35
+ };
36
+
37
+ services.prometheus = {
38
+ enable = true;
39
+ extraFlags = [
40
+ "-storage.local.retention=${toString (120 * 24)}h"
41
+ "--web.external-url=https://status.nixos.org/prometheus/"
42
+ ];
43
+
44
+ globalConfig.scrape_interval = "15s";
45
+ scrapeConfigs = [
46
+ { job_name = "node";
47
+ static_configs = [
48
+ {
49
+ targets = [
50
+ "packet-epyc-1:9100" "packet-t2-4:9100" "packet-t2a-1:9100"
51
+ "packet-t2a-2:9100" "chef:9100"
52
+ ]
53
+ ++ (builtins.map (n: "mac${toString n}-host:6010") (lib.lists.range 1 9))
54
+ ++ (builtins.map (n: "mac${toString n}-guest:6010") (lib.lists.range 1 9));
55
+ }
56
+ ];
57
+ }
58
+ ];
59
+ };
60
+
61
+ services.grafana = {
62
+ enable = true;
63
+ auth.anonymous.enable = true;
64
+ addr = "0.0.0.0";
65
+ domain = "status.nixos.org";
66
+ rootUrl = "https://status.nixos.org/grafana/";
67
+ };
68
}