@cryptotaxi247 / infra / commits / ca8b05be

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 }