| 1 | { pkgs, ... }: |
| 2 | |
| 3 | { |
| 4 | imports = [ |
| 5 | ./alertmanager.nix |
| 6 | ./exporters/blackbox.nix |
| 7 | ./exporters/channel.nix |
| 8 | ./exporters/domain.nix |
| 9 | ./exporters/elasticsearch.nix |
| 10 | ./exporters/fastly.nix |
| 11 | ./exporters/github.nix |
| 12 | ./exporters/hydra.nix |
| 13 | ./exporters/iocaine.nix |
| 14 | ./exporters/json.nix |
| 15 | ./exporters/matrix-synapse.nix |
| 16 | ./exporters/nixos.nix |
| 17 | ./exporters/node.nix |
| 18 | ./exporters/owncast.nix |
| 19 | ./exporters/postgresql.nix |
| 20 | ./exporters/rasdaemon.nix |
| 21 | ./exporters/storagebox.nix |
| 22 | ./exporters/sql.nix |
| 23 | ./exporters/up.nix |
| 24 | ./exporters/zfs.nix |
| 25 | ./exporters/zrepl.nix |
| 26 | ]; |
| 27 | |
| 28 | services.backup.includesZfsDatasets = [ "/var/lib/prometheus2" ]; |
| 29 | |
| 30 | services.prometheus = { |
| 31 | enable = true; |
| 32 | extraFlags = [ |
| 33 | "--storage.tsdb.retention.time=${toString (720 * 24)}h" |
| 34 | "--web.external-url=https://prometheus.nixos.org/" |
| 35 | ]; |
| 36 | globalConfig.scrape_interval = "15s"; |
| 37 | |
| 38 | ruleFiles = [ |
| 39 | (pkgs.writeText "up.rules" ( |
| 40 | builtins.toJSON { |
| 41 | groups = [ |
| 42 | { |
| 43 | name = "up"; |
| 44 | rules = [ |
| 45 | { |
| 46 | alert = "NotUp"; |
| 47 | expr = '' |
| 48 | up == 0 |
| 49 | ''; |
| 50 | for = "10m"; |
| 51 | labels.severity = "warning"; |
| 52 | annotations.summary = "scrape job {{ $labels.job }} is failing on {{ $labels.instance }}"; |
| 53 | } |
| 54 | ]; |
| 55 | } |
| 56 | ]; |
| 57 | } |
| 58 | )) |
| 59 | ]; |
| 60 | }; |
| 61 | } |