ildkule: replace stateful (😤) baka uptime-kuma with stateless (🤤) gatus #145

Open
oysteikt wants to merge 3 commits from ildkule-gatus into main
Owner

Note to self to remove uptime-kuma from the principal backup script too 😳

image.png

<small>Note to self to remove uptime-kuma from the principal backup script too 😳</small> ![image.png](/attachments/cfd67729-55b5-4d9e-9218-95dfa894491c)
954 KiB
oysteikt added 1 commit 2026-07-05 23:29:33 +02:00
oysteikt requested review from felixalb 2026-07-05 23:29:33 +02:00
oysteikt force-pushed ildkule-gatus from 1205228017 to 830e0a842a 2026-07-05 23:32:26 +02:00 Compare
felixalb requested changes 2026-07-06 13:59:41 +02:00
felixalb left a comment
Owner

Mye kult her, looks stort sett good to me.
Slightly skeptisk på Gatus (business-model og slop-vennlighet), men det ser helt OK ut.
RIP Uptime-Kuma, you will be missed.

Regner med vi snakker om og legger til matrix alerts i en annen PR i nær-ish fremtid?

Mye kult her, looks stort sett good to me. Slightly skeptisk på Gatus (business-model og slop-vennlighet), men det ser helt OK ut. RIP Uptime-Kuma, you will be missed. Regner med vi snakker om og legger til matrix alerts i en annen PR i nær-ish fremtid?
@@ -0,0 +10,4 @@
services.gatus = {
enable = true;
settings = {
Owner

Kommer vi til å måtte overskrive veldig mye av denne modulen her for å bruke secrets? Hvis vi f.eks. vil ha matrix-notifs må den få auth tokenen sin fra noe sted.

Dokumentasjonen sier

If GATUS_CONFIG_PATH points to a directory, all *.yaml and *.yml files inside said directory and its subdirectories are merged

så vi kan kanskje wrappe den så den får både den vanlige configen og hemmelig config fra sops kopiert/linket inn i samme mappe før oppstart?

Kommer vi til å måtte overskrive veldig mye av denne modulen her for å bruke secrets? Hvis vi f.eks. vil ha matrix-notifs må den få auth tokenen sin fra noe sted. Dokumentasjonen sier > If GATUS_CONFIG_PATH points to a directory, all *.yaml and *.yml files inside said directory and its subdirectories are merged så vi kan kanskje wrappe den så den får både den vanlige configen og hemmelig config fra sops kopiert/linket inn i samme mappe før oppstart?
Owner

Nvm, modulen har services.gatus.environmentFile, så vi kan sikkert bare bruke den

Nvm, modulen har [services.gatus.environmentFile](https://search.nixos.org/options?channel=26.05&query=gatus#show=option%253Aservices.gatus.environmentFile), så vi kan sikkert bare bruke den
felixalb marked this conversation as resolved
@@ -0,0 +16,4 @@
port = 19283;
};
storage = {
Owner

Får vi historikk lenger tilbake i tid om vi øker storage.maximum-number-of-results og storage.maximum-number-of-events en hel del? Defaultsa høres lave ut.

Får vi historikk lenger tilbake i tid om vi øker `storage.maximum-number-of-results` og `storage.maximum-number-of-events` en hel del? Defaultsa høres lave ut.
Author
Owner

Tror ikke det? Det er litt uklart for meg om dette er max retention som kun gjelder under cleanup eller om det er noe max limits på endpoints med flere kombinerte resultater

https://github.com/TwiN/gatus/blob/4566e746f35cb02145bbf191bf6b4afad5800c1c/storage/store/sql/sql.go#L27-L66

Tror ikke det? Det er litt uklart for meg om dette er max retention som kun gjelder under cleanup eller om det er noe max limits på endpoints med flere kombinerte resultater https://github.com/TwiN/gatus/blob/4566e746f35cb02145bbf191bf6b4afad5800c1c/storage/store/sql/sql.go#L27-L66
@@ -0,0 +123,4 @@
(mkWebsite "Vaultwarden" "https://pw.pvv.ntnu.no/alive")
(mkWebsite "Wiki" "https://wiki.pvv.ntnu.no/w/api.php?action=query&format=json")
(mkService "Gitea SSH" "ssh://git.pvv.ntnu.no:2222")
Owner

Databasene er ganske kritisk, mer enn det meste annet, så postgres og mysql på bicep bør inn her

Databasene er ganske kritisk, mer enn det meste annet, så postgres og mysql på bicep bør inn her
Author
Owner

Skal sette opp litt mer gjennomført monitoring av databasene senere, som ikke bare sjekker at de hører på en port men også at resten er i stand. Enn så lenge så vil nettsiden og sikkert wiki gi 5xx når mariadb er nede, mens alt dauer når postgres er nede.

Skal sette opp litt mer gjennomført monitoring av databasene senere, som ikke bare sjekker at de hører på en port men også at resten er i stand. Enn så lenge så vil nettsiden og sikkert wiki gi 5xx når mariadb er nede, mens alt dauer når postgres er nede.
Owner

Mener du at de gode databasesjekkene også skal være i Gatus, eller helt separat? Hvis de skal inn i Gatus; OK, resolved.

Hvis ikke er jeg skeptisk, til og med en tls/tcp-checkin er bedre enn ingenting, siden databasefeil står for en relativt stor andel av feilrapportene våre, og de kommer ofte fra nye folk eller ikke-driftere, og peker derfor på et symptom heller enn årsaken. Folk (kanskje mest nye folk i fremtiden) vil nok like å ha ett samlet dashboard å sjekke helt først i feilsøkingen, og en kjemperask "postgres er helt død" er en ganske nyttig speedup.

Mener du at de gode databasesjekkene også skal være i Gatus, eller helt separat? Hvis de skal inn i Gatus; OK, resolved. Hvis ikke er jeg skeptisk, til og med en tls/tcp-checkin er bedre enn ingenting, siden databasefeil står for en relativt stor andel av feilrapportene våre, og de kommer ofte fra nye folk eller ikke-driftere, og peker derfor på et symptom heller enn årsaken. Folk (kanskje mest nye folk i fremtiden) vil nok like å ha ett samlet dashboard å sjekke helt først i feilsøkingen, og en kjemperask "postgres er helt død" er en ganske nyttig speedup.
Author
Owner

tls/tcp checking sjekker bare at noe listener på porten, men det er nesten aldri det som feiler. Og når det feiler, så slår det ut på resten av tjenestene, så det er egt dekka.

Ønsker meg en handler a la minecraft sjekkeren som faktisk logger inn med en bruker og kjører noen raske sql statements for begge databasene.

tls/tcp checking sjekker bare at noe listener på porten, men det er nesten aldri det som feiler. Og når det feiler, så slår det ut på resten av tjenestene, så det er egt dekka. Ønsker meg en handler a la minecraft sjekkeren som faktisk logger inn med en bruker og kjører noen raske sql statements for begge databasene.
Owner

Jodjoda, skjønner det, jeg ville bare være sikker på at du mente at den databasejsekkene også skal ende opp i gatus-dashboardet (som minecraft-greia) og ikke være helt utenfor.

Jodjoda, skjønner det, jeg ville bare være sikker på at du mente at den databasejsekkene også skal ende opp i gatus-dashboardet (som minecraft-greia) og ikke være helt utenfor.
felixalb marked this conversation as resolved
@@ -0,0 +131,4 @@
"[BODY].ok == true"
];
})
(mkService "Email (SMTP)" "tcp://mail.pvv.ntnu.no:587")
Owner

De relevante her burde være tls:// i stedet for tcp:// (og de har også starttls://)

De relevante her burde være `tls://` i stedet for `tcp://` (og de har også `starttls://`)
oysteikt marked this conversation as resolved
@@ -0,0 +144,4 @@
};
};
services.nginx.virtualHosts."status.pvv.ntnu.no" = lib.mkIf cfg.enable {
Owner

Vi har noen sånne mkIfs noen random steder rundt om, men er de nyttige utenfor /base og /modules? Vil vi ikke bare slutte å include hele denne fila hvis vi skal disable tjenesten?

Vi har noen sånne `mkIf`s noen random steder rundt om, men er de nyttige utenfor `/base` og `/modules`? Vil vi ikke bare slutte å include hele denne fila hvis vi skal disable tjenesten?
Author
Owner

Tror det er smak og behag. Du kan slutte å include fila, eller du kan sette enable = false. Tror ikke mkIfsa koster noe særlig, om ikke annet blir de dokumentasjon for implisitte antagelser, stemmer for å bare ha dem.

Tror det er smak og behag. Du kan slutte å include fila, eller du kan sette `enable = false`. Tror ikke `mkIf`sa koster noe særlig, om ikke annet blir de dokumentasjon for implisitte antagelser, stemmer for å bare ha dem.
felixalb marked this conversation as resolved
@@ -0,0 +2,4 @@
{
systemd.sockets."gatus-minecraft-checker" = {
wantedBy = [ "sockets.target" ];
listenStreams = [ "25565" ];
Owner

Kan vi bruke en annen port enn dette? Og hvis det ikke brukes av noen andre, kan vi lytte lokalt og ikke på 0.0.0.0? F.eks. 127.0.1.2:25566?

Kan vi bruke en annen port enn dette? Og hvis det ikke brukes av noen andre, kan vi lytte lokalt og ikke på 0.0.0.0? F.eks. 127.0.1.2:25566?
Author
Owner

Flytta til 127.0.0.1:1337

Flytta til 127.0.0.1:1337
oysteikt marked this conversation as resolved
@@ -2,4 +0,0 @@
let
cfg = config.services.uptime-kuma;
domain = "status.pvv.ntnu.no";
stateDir = "/data/monitoring/uptime-kuma";
Owner

Husk å eventuelt slette denne etterpå

Husk å eventuelt slette denne etterpå
felixalb reviewed 2026-07-06 14:06:39 +02:00
felixalb requested changes 2026-07-06 14:09:16 +02:00
felixalb left a comment
Owner

tihi

tihi
@@ -0,0 +72,4 @@
(mkMachine "temmie")
(mkMachine "wenche")
(mkMachine "balduzius")
Owner
+ (mkMachine "ambidextrous")
```diff + (mkMachine "ambidextrous") ```
oysteikt marked this conversation as resolved
@@ -0,0 +81,4 @@
(mkMachine "drolsum")
(mkMachine "hildring")
(mkMachine "innovation")
(mkMachine "isvegg")
Owner
+ (mkMachine "kana")
```diff + (mkMachine "kana") ```
oysteikt marked this conversation as resolved
oysteikt force-pushed ildkule-gatus from 830e0a842a to 81ca68c844 2026-07-07 09:17:49 +02:00 Compare
oysteikt requested review from felixalb 2026-07-07 09:20:46 +02:00
oysteikt added 2 commits 2026-07-07 09:26:38 +02:00
ildkule/gatus/minecraft-checker: init
Eval nix flake / evals (pull_request) Successful in 6m53s
Eval nix flake / evals (push) Successful in 7m52s
b0e3d90c20
oysteikt force-pushed ildkule-gatus from 81ca68c844 to b0e3d90c20 2026-07-07 09:26:38 +02:00 Compare
felixalb approved these changes 2026-07-07 09:51:26 +02:00
felixalb left a comment
Owner

🚀

🚀
@@ -0,0 +8,4 @@
};
};
systemd.services."gatus-minecraft-checker" = {
Owner
[root@ildkule:~]# systemd-analyze security gatus-minecraft-checker.service | tail -n1
→ Overall exposure level for gatus-minecraft-checker.service: 9.0 UNSAFE 😨

/s

``` [root@ildkule:~]# systemd-analyze security gatus-minecraft-checker.service | tail -n1 → Overall exposure level for gatus-minecraft-checker.service: 9.0 UNSAFE 😨 ``` /s
Author
Owner

なぬっ!😨

なぬっ!😨
oysteikt marked this conversation as resolved
Some checks are pending
Eval nix flake / evals (pull_request) Successful in 6m53s
Eval nix flake / evals (push) Successful in 7m52s
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin ildkule-gatus:ildkule-gatus
git checkout ildkule-gatus
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Drift/pvv-nixos-config#145