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