| Šta | Gde |
|---|---|
| Ceo stack (compose, konfiguracije) | ~/observability/ na .88 |
| Kopija za git | E:\Work\AI\observability |
| Alloy konfiguracija | alloy/config.alloy |
| Loki konfiguracija (retencija 14 dana) | loki/config.yml |
| Alarmi i ntfy kontakt | grafana/provisioning/alerting/ |
| Lozinke i ključevi | .env (nije u gitu) |
| Uptime Kuma | ~/uptime-kuma/ · ntfy: ~/ntfy/ |
Alloy ima UI koji crta ceo pipeline (koji izvor → koja obrada → kuda šalje) i pokazuje greške. Dostupan je samo lokalno na serveru, pa otvaraš SSH tunel:
ssh -L 12345:127.0.0.1:12345 192.168.2.88Dok je taj prozor otvoren, u browser-u: http://localhost:12345 → Graph. Zelene komponente su zdrave; klik na komponentu pokazuje njene argumente i greške.
Recimo da novi servis piše u /home/kimi/mojservis/logs/app.log.
docker-compose.yml, pod alloy: → volumes: dodaj mount: - /home/kimi/mojservis/logs:/logs/mojservis:roalloy/config.alloy, u blok local.file_match "files" → path_targets dodaj red: { __path__ = "/logs/mojservis/app.log", service_name = "mojservis", container = "mojservis" },cd ~/observability
sudo docker compose up -d alloy # ponovo kreira alloy sa novim mount-om i konfiguracijom
sudo docker logs --since 2m alloy # ne sme biti "error"{service_name="mojservis"}.E:\Work\AI\observability i komituj.Servisi koji pišu na stdout (većina Docker kontejnera) se hvataju sami — za njih ne radiš ništa.
ssh 192.168.2.88
cd ~/observability
sudo docker compose ps # svi "Up"
curl -s 127.0.0.1:3100/ready # Loki: "ready"
df -h / # disk ispod 85%
sudo docker logs --since 1h alloy 2>&1 | grep -c "status=500" # treba 0
sudo docker system df # koliko zauzimaju image-i i volume-i| Simptom | Uzrok | Rešenje |
|---|---|---|
| Nema novih logova ni za jedan servis | Loki pao ili disk pun | df -h /; oslobodi disk; sudo docker compose restart loki (posle punog diska Loki ostaje "not ready" dok ga ne restartuješ) |
| Nema logova samo za jedan servis | Promenjena putanja fajla ili kontejner ne piše na stdout | Alloy UI → komponenta loki.source.file |
| Docker logovi prestanu posle par minuta | Poznat problem sa Docker API-jem | Zato Alloy čita json fajlove umesto API-ja — ne vraćati na loki.source.docker |
| Loki 400 "timestamp too old" posle restarta Alloy-a | Čita staru istoriju | Bezopasno, jednokratno |
| Grafana ne šalje na ntfy | Token ili DNS | Alerting → Contact points → ntfy → Test |
| Seq ne prima ništa | Istekao/obrisan API ključ | SEQ_KEY_ALLOY u .env, pa sudo docker compose up -d alloy |
Loki prestaje da upisuje kad je disk 90% pun, a kontejner i dalje izgleda "Up". To se već desilo (33 sata bez logova, oktobar 2026). Sada je disk 51%. Šta zauzima prostor:
sudo du -sh /var/snap/docker/common/var-lib-docker/volumes/* | sort -h | tail
sudo journalctl --disk-usageLoki sam briše logove starije od 14 dana (retention_period: 336h u loki/config.yml). Ako ti treba duže, povećaj vrednost i sudo docker compose restart loki — ali pazi na disk.
Image-i su na latest. Update:
cd ~/observability
sudo docker compose pull
sudo docker compose up -dPosle update-a: otvori Grafanu, dashboard, i proveri da paneli imaju podatke. Ako nešto pukne, Grafana release notes: https://grafana.com/docs/grafana/latest/whatsnew/
loki.source.file: https://grafana.com/docs/alloy/latest/reference/components/loki/loki.source.file/Sledeće: 10. Šta dalje + biblioteka linkova