Grafana ima kratku seriju "Get started with Grafana Alerting" (po 5–10 min). Redom:
Širi pregled na jednom mestu: Grafana Alerting Explained: Stop Silent System Failures in 2026 — LearnITGuide. ▶ pogledaj na YouTube-u
| Izvor | Tema u ntfy | Šta prijavljuje | Kako proverava |
|---|---|---|---|
| Grafana | grafana-alerts | Problemi vidljivi u logovima | 5 pravila, svaki minut pita Loki |
| Uptime Kuma | uptime-alerts | Nešto ne odgovara (sajt, kontejner, mašina) | 80+ monitora, svakih 60 s, posle 2 neuspela pokušaja |
Kuma šalje poruku samo kad se stanje promeni (pao → i kad se vrati). Grafana šalje kad alarm okine, ponavlja na 4 sata dok traje, i šalje "Resolved" kad prođe.
Sva su u folderu Homelab (Alerting → Alert rules).
| Pravilo | Okida kad | Koliko dugo mora da traje | Ozbiljnost |
|---|---|---|---|
| Greske u logovima | Neki kontejner/unit ima više od 20 error linija za 5 min | 10 min | warning |
| Sakupljac logova ne radi | 0 Docker linija u Lokiju za 15 min | 5 min | critical |
| Servis iza nginx-a ne odgovara | nginx error log: upstream timed out / connect() failed, više od 10 za 10 min, po serveru | 5 min | — |
| Systemd jedinica pala | journal: "X: Failed with result" (osim fwupd-refresh i rocketchat-caddy) | odmah | — |
| Uptime Kuma monitor pada | Kuma upiše "Failing" više od 5 puta za 10 min za isti monitor (osim FTP fileshere) | 5 min | — |
"Koliko dugo mora da traje" (polje for) postoji da kratki naleti ne bude u 3 ujutru. Pragovi su izmereni na 14 dana tvojih logova: van pravih ispada nijedno pravilo nije okinulo.
pravilo (svaki 1 min pita Loki)
│ prag pređen → stanje Pending
│ traje duže od "for" → stanje Firing
▼
notification policy (grupiše po folderu + imenu pravila, čeka 30 s da skupi srodne alarme)
▼
contact point "ntfy" → https://ntfy.jovanovic.vip/grafana-alerts (token iz .env)
▼
telefon (ponavlja na 4 h dok traje, "Resolved" kad prođe)Stanja pravila koja vidiš u Grafani: Normal (sve ok), Pending (prag pređen, čeka se for), Firing / Alerting (poslato), Recovering (vraća se u normalu), No Data, Error (upit nije uspeo).
Greske u logovima: X — servis X piše mnogo grešaka već 10+ minuta. Drilldown → Logs → servis X → filter error. Ili Explore (upit je i u samoj poruci):
{container="X"} | detected_level="error"Najčešće: servis ne vidi bazu/disk/mrežu, ili je posle update-a image-a nešto puklo.
Sakupljac logova ne radi — u Loki ne stižu Docker logovi. Proveri:
ssh 192.168.2.88
sudo docker ps | grep -E "alloy|loki"
curl -s 127.0.0.1:3100/ready # treba da vrati "ready"
df -h / # Loki staje kad je disk >= 90%
cd ~/observability && sudo docker compose restart loki alloyServis iza nginx-a ne odgovara: server — nginx ne može da dobije odgovor od kontejnera. Otvori taj sajt, pa sudo docker ps -a — da li je kontejner Up ili se restartuje u krug (Restarting). Logovi kontejnera: Explore {container="ime"}.
Systemd jedinica pala: X — servis na samom Ubuntu-u (ne Docker) je pao.
ssh 192.168.2.88
systemctl status X
journalctl -u X -n 50Najčešće: mount (CIFS share), backup/cron skripta, snap servis.
Uptime Kuma monitor pada: X ili poruka iz teme uptime-alerts — status.jovanovic.vip → klikni monitor X, tamo piše tačna greška (timeout, sertifikat, HTTP 502...). Ako je mašina namerno ugašena — pauziraj monitor.
Radiš nešto na serveru i znaš da će servis biti dole sat vremena? Utišaj da ne dobiješ poruke:
2h.alertname = Greske u logovima (ili bilo koje drugo pravilo). Za sve: ostavi matcher grafana_folder = Homelab.U Uptime Kuma isto: monitor → Pause (ili Maintenance u meniju za planirano održavanje).
A) Klikom u UI (za učenje i probu):
sum(count_over_time({service_name="vaultwarden"} |= "Invalid password" [10m])).5. Folder: napravi novi, npr. Moja pravila. Evaluation group: 1m.for): 5m. Contact point: ntfy (ili ostavi da ide preko policy-ja).Vaultwarden: {{ $values.A.Value }} pogresnih lozinki za 10 min.B) Kroz fajl (ovako su napravljena postojeća): ~/observability/grafana/provisioning/alerting/rules.yml na serveru, pa sudo docker compose restart grafana. Pravila iz fajla su u UI zaključana (piše Provisioned) — zato ih ne možeš menjati klikom. Pravilo napravljeno klikom možeš izvesti u YAML (More → Export) i prebaciti u fajl kad ga istestiraš.
ssh 192.168.2.88 "sudo systemd-run --unit=alert-test-fail /bin/false"Za ~90 sekundi treba da stigne "Systemd jedinica pala: alert-test-fail.service". Posle: sudo systemctl reset-failed alert-test-fail.
Kad je 6–7. oktobra disk bio pun i Loki stajao 33 sata, pravilo "Sakupljac logova ne radi" je radilo ispravno. Grafana istorija pokazuje da je prešlo u Alerting (NoData) 6.10. u 00:48 UTC i ostalo tako do 7.10. u 08:54 (isto i 5.10. od 14:07 do 18:47). Poruka je otišla na temu grafana-alerts, ali telefon tada nije bio pretplaćen na tu temu. Pretplata je dodata tek 23. oktobra. Zato je korak 3 na stranici 1 najvažniji.
Istoriju bilo kog pravila vidiš sam: Alerting → Alert rules → pravilo → History.
Sledeće: 6. Seq