@cryptotaxi247 / infra / commits / 97980558

prometheus: import hosts from Packet

Graham Christensen committed Sep 26, 2019 at 23:03 UTC 97980558c133bfed7a34d8ec82e23dff5bb3fce7
2 files changed +97
delft/eris.nix
+74
@@ -82,6 +82,38 @@ in {
82 }
83 ];
84 }
85 + {
86 + job_name = "packet_nodes";
87 + file_sd_configs = [
88 + {
89 + files = [ "/var/lib/packet-sd/packet-sd.json" ];
90 + refresh_interval = "30s";
91 + }
92 + ];
93 + relabel_configs = [
94 + {
95 + source_labels = [ "__meta_packet_public_ipv4" ];
96 + target_label = "__address__";
97 + replacement = "\${1}:9100";
98 + action = "replace";
99 + }
100 + {
101 + source_labels = [ "__meta_packet_facility" ];
102 + target_label = "facility";
103 + }
104 + {
105 + source_labels = [ "__meta_packet_public_ipv4" ];
106 + target_label = "instance";
107 + }
108 + {
109 + source_labels = [ "__meta_packet_tags" ];
110 + target_label = "role";
111 + regex = ".*hydra.*";
112 + replacement = "builder";
113 + action = "replace";
114 + }
115 + ];
116 + }
117
118 {
119 job_name = "hydra";
@@ -94,6 +126,18 @@ in {
126 }
127 ];
128 }
129 +
130 + {
131 + job_name = "prometheus-packet-sd";
132 + metrics_path = "/metrics";
133 + static_configs = [
134 + {
135 + targets = [
136 + "127.0.0.1:9465"
137 + ];
138 + }
139 + ];
140 + }
141 ];
142 };
143
@@ -123,4 +167,34 @@ in {
167 '';
168 };
169 };
170 +
171 + deployment.keys."packet-sd-env" = {
172 + keyFile = ../prometheus-packet-service-discovery;
173 + user = "packet-sd";
174 + };
175 +
176 + users.extraUsers.packet-sd = {
177 + description = "Prometheus Packet Service Discovery";
178 + };
179 +
180 + systemd.tmpfiles.rules = [
181 + "d /var/lib/packet-sd 0755 packet-sd - -"
182 + "f /var/lib/packet-sd/packet-sd.json 0644 packet-sd - -"
183 + ];
184 +
185 + systemd.services.prometheus-packet-sd = let
186 + sd = pkgs.callPackage ./prometheus/packet-sd.nix {};
187 + in {
188 + wantedBy = [ "multi-user.target" "prometheus.service" ];
189 + after = [ "network.target" ];
190 +
191 + serviceConfig = {
192 + User = "packet-sd";
193 + Group = "keys";
194 + ExecStart = "${sd}/bin/prometheus-packet-sd --output.file=/var/lib/packet-sd/packet-sd.json";
195 + EnvironmentFile = "/run/keys/packet-sd-env";
196 + Restart = "always";
197 + RestartSec = "60s";
198 + };
199 + };
200 }
delft/prometheus/packet-sd.nix new
+23
@@ -0,0 +1,23 @@
1 +{ buildGoModule, fetchFromGitHub, lib }:
2 +buildGoModule rec {
3 + pname = "prometheus-packet-sd";
4 + version = "0.0.2";
5 +
6 + src = fetchFromGitHub {
7 + owner = "packethost";
8 + repo = "prometheus-packet-sd";
9 + rev = "v${version}";
10 + sha256 = "0y2c73irk1xy3raha9yx1j5ja5h2phalnwjcbsgpr6jnfs0v6shh";
11 + };
12 +
13 + modSha256 = "1cgyfc77fdrmv7f2cy0qpwgmn9wpmaa66806brflkpkq1nc9dr5b";
14 +
15 + subPackages = [ "." ];
16 +
17 + meta = with lib; {
18 + description = "Prometheus service discovery for Packet.";
19 + homepage = https://github.com/packethost/prometheus-packet-sd;
20 + license = licenses.asl20;
21 + platforms = platforms.linux;
22 + };
23 +}
\ No newline at end of file