9. Alloy i održavanje

↑ Nazad

Prvo pogledaj

Gde je šta na serveru

ŠtaGde
Ceo stack (compose, konfiguracije)~/observability/ na .88
Kopija za gitE:\Work\AI\observability
Alloy konfiguracijaalloy/config.alloy
Loki konfiguracija (retencija 14 dana)loki/config.yml
Alarmi i ntfy kontaktgrafana/provisioning/alerting/
Lozinke i ključevi.env (nije u gitu)
Uptime Kuma~/uptime-kuma/ · ntfy: ~/ntfy/

Alloy UI — vidi kako teku logovi

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.88

Dok je taj prozor otvoren, u browser-u: http://localhost:12345 → Graph. Zelene komponente su zdrave; klik na komponentu pokazuje njene argumente i greške.

Dodavanje novog log fajla (primer)

Recimo da novi servis piše u /home/kimi/mojservis/logs/app.log.

  1. U docker-compose.yml, pod alloy: → volumes: dodaj mount: - /home/kimi/mojservis/logs:/logs/mojservis:ro
  2. U alloy/config.alloy, u blok local.file_match "files" → path_targets dodaj red: { __path__ = "/logs/mojservis/app.log", service_name = "mojservis", container = "mojservis" },
  3. Primeni:
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"
  1. Za minut u Grafani: {service_name="mojservis"}.
  2. Iste izmene prebaci u 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.

Zdravstvena provera (jednom nedeljno, 2 minuta)

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

Česti kvarovi

SimptomUzrokRešenje
Nema novih logova ni za jedan servisLoki pao ili disk pundf -h /; oslobodi disk; sudo docker compose restart loki (posle punog diska Loki ostaje "not ready" dok ga ne restartuješ)
Nema logova samo za jedan servisPromenjena putanja fajla ili kontejner ne piše na stdoutAlloy UI → komponenta loki.source.file
Docker logovi prestanu posle par minutaPoznat problem sa Docker API-jemZato 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 istorijuBezopasno, jednokratno
Grafana ne šalje na ntfyToken ili DNSAlerting → Contact points → ntfy → Test
Seq ne prima ništaIstekao/obrisan API ključSEQ_KEY_ALLOY u .env, pa sudo docker compose up -d alloy

Disk — najvažnija stvar za održavanje

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-usage

Loki 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.

Ažuriranje (update) stack-a

Image-i su na latest. Update:

cd ~/observability
sudo docker compose pull
sudo docker compose up -d

Posle 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/

Dokumentacija

Sledeće: 10. Šta dalje + biblioteka linkova

Izvor: 09-alloy-i-odrzavanje.md