This repository has no description
2.3 kB
78 lines
1# Gatus endpoints, the same on every monitoring server. Gatus itself doesn't
2# alert: its results are scraped into VictoriaMetrics (with a vantage label
3# naming the server) and vmalert alerts on them (GatusEndpointDown).
4let
5 inherit (import ./default.nix) alwaysOn;
6
7 certValid = "[CERTIFICATE_EXPIRATION] > 336h"; # 14 days
8
9 https = name: url: {
10 inherit name url;
11 group = "https";
12 conditions = [
13 "[STATUS] == 200"
14 certValid
15 ];
16 };
17
18 # The primary and the three Hetzner secondaries (configs/dns/knot.nix).
19 soa = name: server: {
20 inherit name;
21 group = "dns";
22 url = server;
23 dns = {
24 query-name = "lassul.us";
25 query-type = "SOA";
26 };
27 conditions = [ "[DNS_RCODE] == NOERROR" ];
28 };
29
30 tls = name: url: {
31 inherit name url;
32 group = "mail";
33 conditions = [
34 "[CONNECTED] == true"
35 certValid
36 ];
37 };
38
39 ping = host: {
40 name = host;
41 group = "retiolum";
42 url = "icmp://${host}.r";
43 conditions = [ "[CONNECTED] == true" ];
44 };
45in
46{
47 endpoints = map (e: { interval = "2m"; } // e) (
48 [
49 (https "lassul.us" "https://lassul.us/")
50 (https "matrix" "https://matrix.lassul.us/_matrix/client/versions")
51 (https "pad" "https://pad.lassul.us/")
52 (https "id" "https://id.lassul.us/debug/healthz")
53 (https "byoidc" "https://byoidc.lassul.us/healthz")
54 (https "paint" "https://paint.lassul.us/")
55 (https "ntfy" "https://ntfy.lassul.us/v1/health")
56 (https "paperless" "https://paperless.lassul.us/accounts/login/")
57 (https "cache" "https://cache.lassul.us/nix-cache-info")
58 (https "niks3" "https://niks3.lassul.us/health")
59 (soa "ns1" "95.217.192.59")
60 (soa "ns1.first-ns.de" "213.239.242.238")
61 (soa "robotns2.second-ns.de" "213.133.100.103")
62 (soa "robotns3.second-ns.com" "193.47.99.3")
63 (tls "smtps" "tls://mail.lassul.us:465")
64 (tls "imaps" "tls://mail.lassul.us:993")
65 {
66 name = "federation";
67 group = "matrix";
68 url = "https://federationtester.matrix.org/api/report?server_name=lassul.us";
69 interval = "30m";
70 conditions = [
71 "[STATUS] == 200"
72 "[BODY].FederationOK == true"
73 ];
74 }
75 ]
76 ++ map ping alwaysOn
77 );
78}