diff options
-rw-r--r-- | flake.lock | 167 | ||||
-rw-r--r-- | flake.nix | 9 | ||||
-rw-r--r-- | hosts/vidhar/borg/default.nix | 20 | ||||
-rw-r--r-- | hosts/vidhar/prometheus/default.nix | 12 |
4 files changed, 208 insertions, 0 deletions
@@ -122,6 +122,22 @@ | |||
122 | "type": "github" | 122 | "type": "github" |
123 | } | 123 | } |
124 | }, | 124 | }, |
125 | "flake-compat_4": { | ||
126 | "flake": false, | ||
127 | "locked": { | ||
128 | "lastModified": 1673956053, | ||
129 | "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", | ||
130 | "owner": "edolstra", | ||
131 | "repo": "flake-compat", | ||
132 | "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", | ||
133 | "type": "github" | ||
134 | }, | ||
135 | "original": { | ||
136 | "owner": "edolstra", | ||
137 | "repo": "flake-compat", | ||
138 | "type": "github" | ||
139 | } | ||
140 | }, | ||
125 | "flake-parts": { | 141 | "flake-parts": { |
126 | "inputs": { | 142 | "inputs": { |
127 | "nixpkgs-lib": "nixpkgs-lib" | 143 | "nixpkgs-lib": "nixpkgs-lib" |
@@ -158,6 +174,24 @@ | |||
158 | "type": "github" | 174 | "type": "github" |
159 | } | 175 | } |
160 | }, | 176 | }, |
177 | "flake-parts_3": { | ||
178 | "inputs": { | ||
179 | "nixpkgs-lib": "nixpkgs-lib_3" | ||
180 | }, | ||
181 | "locked": { | ||
182 | "lastModified": 1683560683, | ||
183 | "narHash": "sha256-XAygPMN5Xnk/W2c1aW0jyEa6lfMDZWlQgiNtmHXytPc=", | ||
184 | "owner": "hercules-ci", | ||
185 | "repo": "flake-parts", | ||
186 | "rev": "006c75898cf814ef9497252b022e91c946ba8e17", | ||
187 | "type": "github" | ||
188 | }, | ||
189 | "original": { | ||
190 | "owner": "hercules-ci", | ||
191 | "repo": "flake-parts", | ||
192 | "type": "github" | ||
193 | } | ||
194 | }, | ||
161 | "flake-registry": { | 195 | "flake-registry": { |
162 | "flake": false, | 196 | "flake": false, |
163 | "locked": { | 197 | "locked": { |
@@ -223,6 +257,21 @@ | |||
223 | "type": "github" | 257 | "type": "github" |
224 | } | 258 | } |
225 | }, | 259 | }, |
260 | "flake-utils_4": { | ||
261 | "locked": { | ||
262 | "lastModified": 1667395993, | ||
263 | "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", | ||
264 | "owner": "numtide", | ||
265 | "repo": "flake-utils", | ||
266 | "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", | ||
267 | "type": "github" | ||
268 | }, | ||
269 | "original": { | ||
270 | "owner": "numtide", | ||
271 | "repo": "flake-utils", | ||
272 | "type": "github" | ||
273 | } | ||
274 | }, | ||
226 | "gitignore": { | 275 | "gitignore": { |
227 | "inputs": { | 276 | "inputs": { |
228 | "nixpkgs": [ | 277 | "nixpkgs": [ |
@@ -267,6 +316,28 @@ | |||
267 | "type": "github" | 316 | "type": "github" |
268 | } | 317 | } |
269 | }, | 318 | }, |
319 | "gitignore_3": { | ||
320 | "inputs": { | ||
321 | "nixpkgs": [ | ||
322 | "prometheus-borg-exporter", | ||
323 | "pre-commit-hooks-nix", | ||
324 | "nixpkgs" | ||
325 | ] | ||
326 | }, | ||
327 | "locked": { | ||
328 | "lastModified": 1660459072, | ||
329 | "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", | ||
330 | "owner": "hercules-ci", | ||
331 | "repo": "gitignore.nix", | ||
332 | "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", | ||
333 | "type": "github" | ||
334 | }, | ||
335 | "original": { | ||
336 | "owner": "hercules-ci", | ||
337 | "repo": "gitignore.nix", | ||
338 | "type": "github" | ||
339 | } | ||
340 | }, | ||
270 | "home-manager": { | 341 | "home-manager": { |
271 | "inputs": { | 342 | "inputs": { |
272 | "nixpkgs": [ | 343 | "nixpkgs": [ |
@@ -364,6 +435,24 @@ | |||
364 | "type": "github" | 435 | "type": "github" |
365 | } | 436 | } |
366 | }, | 437 | }, |
438 | "nixpkgs-lib_3": { | ||
439 | "locked": { | ||
440 | "dir": "lib", | ||
441 | "lastModified": 1682879489, | ||
442 | "narHash": "sha256-sASwo8gBt7JDnOOstnps90K1wxmVfyhsTPPNTGBPjjg=", | ||
443 | "owner": "NixOS", | ||
444 | "repo": "nixpkgs", | ||
445 | "rev": "da45bf6ec7bbcc5d1e14d3795c025199f28e0de0", | ||
446 | "type": "github" | ||
447 | }, | ||
448 | "original": { | ||
449 | "dir": "lib", | ||
450 | "owner": "NixOS", | ||
451 | "ref": "nixos-unstable", | ||
452 | "repo": "nixpkgs", | ||
453 | "type": "github" | ||
454 | } | ||
455 | }, | ||
367 | "nixpkgs-stable": { | 456 | "nixpkgs-stable": { |
368 | "locked": { | 457 | "locked": { |
369 | "lastModified": 1678614274, | 458 | "lastModified": 1678614274, |
@@ -412,6 +501,22 @@ | |||
412 | "type": "github" | 501 | "type": "github" |
413 | } | 502 | } |
414 | }, | 503 | }, |
504 | "nixpkgs-stable_4": { | ||
505 | "locked": { | ||
506 | "lastModified": 1678872516, | ||
507 | "narHash": "sha256-/E1YwtMtFAu2KUQKV/1+KFuReYPANM2Rzehk84VxVoc=", | ||
508 | "owner": "NixOS", | ||
509 | "repo": "nixpkgs", | ||
510 | "rev": "9b8e5abb18324c7fe9f07cb100c3cd4a29cda8b8", | ||
511 | "type": "github" | ||
512 | }, | ||
513 | "original": { | ||
514 | "owner": "NixOS", | ||
515 | "ref": "nixos-22.11", | ||
516 | "repo": "nixpkgs", | ||
517 | "type": "github" | ||
518 | } | ||
519 | }, | ||
415 | "nixpkgs_2": { | 520 | "nixpkgs_2": { |
416 | "locked": { | 521 | "locked": { |
417 | "lastModified": 1678898370, | 522 | "lastModified": 1678898370, |
@@ -444,6 +549,22 @@ | |||
444 | "type": "github" | 549 | "type": "github" |
445 | } | 550 | } |
446 | }, | 551 | }, |
552 | "nixpkgs_4": { | ||
553 | "locked": { | ||
554 | "lastModified": 1681303793, | ||
555 | "narHash": "sha256-JEdQHsYuCfRL2PICHlOiH/2ue3DwoxUX7DJ6zZxZXFk=", | ||
556 | "owner": "NixOS", | ||
557 | "repo": "nixpkgs", | ||
558 | "rev": "fe2ecaf706a5907b5e54d979fbde4924d84b65fc", | ||
559 | "type": "github" | ||
560 | }, | ||
561 | "original": { | ||
562 | "owner": "NixOS", | ||
563 | "ref": "nixos-unstable", | ||
564 | "repo": "nixpkgs", | ||
565 | "type": "github" | ||
566 | } | ||
567 | }, | ||
447 | "nvfetcher": { | 568 | "nvfetcher": { |
448 | "inputs": { | 569 | "inputs": { |
449 | "flake-compat": [ | 570 | "flake-compat": [ |
@@ -515,6 +636,51 @@ | |||
515 | "type": "github" | 636 | "type": "github" |
516 | } | 637 | } |
517 | }, | 638 | }, |
639 | "pre-commit-hooks-nix_3": { | ||
640 | "inputs": { | ||
641 | "flake-compat": "flake-compat_4", | ||
642 | "flake-utils": "flake-utils_4", | ||
643 | "gitignore": "gitignore_3", | ||
644 | "nixpkgs": "nixpkgs_4", | ||
645 | "nixpkgs-stable": "nixpkgs-stable_4" | ||
646 | }, | ||
647 | "locked": { | ||
648 | "lastModified": 1685361114, | ||
649 | "narHash": "sha256-4RjrlSb+OO+e1nzTExKW58o3WRwVGpXwj97iCta8aj4=", | ||
650 | "owner": "cachix", | ||
651 | "repo": "pre-commit-hooks.nix", | ||
652 | "rev": "ca2fdbf3edda2a38140184da6381d49f8206eaf4", | ||
653 | "type": "github" | ||
654 | }, | ||
655 | "original": { | ||
656 | "owner": "cachix", | ||
657 | "repo": "pre-commit-hooks.nix", | ||
658 | "type": "github" | ||
659 | } | ||
660 | }, | ||
661 | "prometheus-borg-exporter": { | ||
662 | "inputs": { | ||
663 | "flake-parts": "flake-parts_3", | ||
664 | "nixpkgs": [ | ||
665 | "nixpkgs" | ||
666 | ], | ||
667 | "pre-commit-hooks-nix": "pre-commit-hooks-nix_3" | ||
668 | }, | ||
669 | "locked": { | ||
670 | "lastModified": 1685389961, | ||
671 | "narHash": "sha256-D01xvx8trgelAM5D/1rZ9/s2Wqm3LDBfH29VWGeYu5o=", | ||
672 | "owner": "gkleen", | ||
673 | "repo": "prometheus-borg-exporter", | ||
674 | "rev": "153c3864761d4741dc72e360f96de8c169834b81", | ||
675 | "type": "gitlab" | ||
676 | }, | ||
677 | "original": { | ||
678 | "owner": "gkleen", | ||
679 | "ref": "main", | ||
680 | "repo": "prometheus-borg-exporter", | ||
681 | "type": "gitlab" | ||
682 | } | ||
683 | }, | ||
518 | "root": { | 684 | "root": { |
519 | "inputs": { | 685 | "inputs": { |
520 | "backup-utils": "backup-utils", | 686 | "backup-utils": "backup-utils", |
@@ -528,6 +694,7 @@ | |||
528 | "nixpkgs": "nixpkgs_3", | 694 | "nixpkgs": "nixpkgs_3", |
529 | "nixpkgs-stable": "nixpkgs-stable_3", | 695 | "nixpkgs-stable": "nixpkgs-stable_3", |
530 | "nvfetcher": "nvfetcher", | 696 | "nvfetcher": "nvfetcher", |
697 | "prometheus-borg-exporter": "prometheus-borg-exporter", | ||
531 | "sops-nix": "sops-nix" | 698 | "sops-nix": "sops-nix" |
532 | } | 699 | } |
533 | }, | 700 | }, |
@@ -106,6 +106,15 @@ | |||
106 | nixpkgs.follows = "nixpkgs"; | 106 | nixpkgs.follows = "nixpkgs"; |
107 | }; | 107 | }; |
108 | }; | 108 | }; |
109 | prometheus-borg-exporter = { | ||
110 | type = "gitlab"; | ||
111 | owner = "gkleen"; | ||
112 | repo = "prometheus-borg-exporter"; | ||
113 | ref = "main"; | ||
114 | inputs = { | ||
115 | nixpkgs.follows = "nixpkgs"; | ||
116 | }; | ||
117 | }; | ||
109 | }; | 118 | }; |
110 | 119 | ||
111 | outputs = { self, nixpkgs, home-manager, sops-nix, deploy-rs, nvfetcher, ... }@inputs: | 120 | outputs = { self, nixpkgs, home-manager, sops-nix, deploy-rs, nvfetcher, ... }@inputs: |
diff --git a/hosts/vidhar/borg/default.nix b/hosts/vidhar/borg/default.nix index 922cbf02..c97c4216 100644 --- a/hosts/vidhar/borg/default.nix +++ b/hosts/vidhar/borg/default.nix | |||
@@ -48,6 +48,10 @@ let | |||
48 | 48 | ||
49 | baseDir = "/srv/backup/borg"; | 49 | baseDir = "/srv/backup/borg"; |
50 | in { | 50 | in { |
51 | imports = with flakeInputs; [ | ||
52 | prometheus-borg-exporter.nixosModules.default | ||
53 | ]; | ||
54 | |||
51 | config = { | 55 | config = { |
52 | services.borgsnap = { | 56 | services.borgsnap = { |
53 | enable = true; | 57 | enable = true; |
@@ -86,6 +90,22 @@ in { | |||
86 | }; | 90 | }; |
87 | }; | 91 | }; |
88 | 92 | ||
93 | services.prometheus-borg-exporter = { | ||
94 | enable = true; | ||
95 | gateway = "localhost:9091"; | ||
96 | target = "yggdrasil.borgbase:repo"; | ||
97 | inherit sshConfig; | ||
98 | keyfile = config.sops.secrets."yggdrasil.borgkey".path; | ||
99 | |||
100 | config = { | ||
101 | job = "yggdrasil.borgbase"; | ||
102 | groups = [ | ||
103 | { regex = "(?P<prefix>yggdrasil\.(surtr|vidhar|niflheim\.ymir))\.(?P<target>.+)-[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}"; } | ||
104 | ]; | ||
105 | }; | ||
106 | }; | ||
107 | |||
108 | |||
89 | # systemd.services."check-borg@${utils.escapeSystemdPath "${baseDir}/jotnar"}" = checkBorgUnit; | 109 | # systemd.services."check-borg@${utils.escapeSystemdPath "${baseDir}/jotnar"}" = checkBorgUnit; |
90 | # systemd.services."check-borg@${utils.escapeSystemdPath "yggdrasil.borgbase:repo"}" = recursiveUpdate checkBorgUnit { | 110 | # systemd.services."check-borg@${utils.escapeSystemdPath "yggdrasil.borgbase:repo"}" = recursiveUpdate checkBorgUnit { |
91 | # serviceConfig = { | 111 | # serviceConfig = { |
diff --git a/hosts/vidhar/prometheus/default.nix b/hosts/vidhar/prometheus/default.nix index 133ddbbc..d6d29c17 100644 --- a/hosts/vidhar/prometheus/default.nix +++ b/hosts/vidhar/prometheus/default.nix | |||
@@ -241,6 +241,13 @@ in { | |||
241 | ]; | 241 | ]; |
242 | scrape_interval = "5s"; | 242 | scrape_interval = "5s"; |
243 | } | 243 | } |
244 | { job_name = "pushgateway"; | ||
245 | honor_labels = true; | ||
246 | static_configs = [ | ||
247 | { targets = ["localhost:9091"];} | ||
248 | ]; | ||
249 | scrape_interval = "5s"; | ||
250 | } | ||
244 | ]; | 251 | ]; |
245 | 252 | ||
246 | rules = [ | 253 | rules = [ |
@@ -288,7 +295,12 @@ in { | |||
288 | ]; | 295 | ]; |
289 | }) | 296 | }) |
290 | ]; | 297 | ]; |
298 | |||
299 | pushgateway = { | ||
300 | enable = true; | ||
301 | }; | ||
291 | }; | 302 | }; |
303 | |||
292 | users.users.${config.services.prometheus.exporters.unbound.user} = { | 304 | users.users.${config.services.prometheus.exporters.unbound.user} = { |
293 | description = "Prometheus unbound exporter service user"; | 305 | description = "Prometheus unbound exporter service user"; |
294 | isSystemUser = true; | 306 | isSystemUser = true; |