Monitoring
Logy
Správa a sledování logů
Zobrazení logů
Přes deploy skript
# API logy (výchozí)
pnpm deploy:logs
# Logy konkrétní služby
./scripts/deploy.sh --logs web
./scripts/deploy.sh --logs postgres
./scripts/deploy.sh --logs redisPřes SSH
# Sledování všech služeb v reálném čase
ssh deploy@<VPS_IP> "cd /opt/apps/turtor && docker compose logs -f"
# Konkrétní služba
ssh deploy@<VPS_IP> "cd /opt/apps/turtor && docker compose logs -f api"
# Posledních 100 řádků
ssh deploy@<VPS_IP> "cd /opt/apps/turtor && docker compose logs --tail=100 api"
# Logy s časovým filtrem
ssh deploy@<VPS_IP> "cd /opt/apps/turtor && docker compose logs --since=1h api"Lokální vývoj
# Logy Docker služeb (PostgreSQL, Redis, MinIO, MailHog)
pnpm docker:logs
# Logy konkrétní služby
docker compose -f docker/docker-compose.yml logs -f postgresAPI a frontend aplikace při lokálním vývoji vypisují logy přímo do terminálu přes pnpm dev.
Služby a jejich logy
| Služba | Co loguje | Typické chyby |
|---|---|---|
| api | HTTP requesty, business logika, chyby | Databázové chyby, chybějící migrace, auth selhání |
| web | Nginx access/error logy | 404 pro chybějící assets |
| admin | Nginx access/error logy | 404 pro chybějící assets |
| postgres | Spojení, query chyby, startup | Nedostatek místa, chybějící sloupce |
| redis | Spojení, paměť, persistence | OOM, AOF rewrite chyby |
| nginx | Reverse proxy access/error | Upstream timeout, SSL chyby |
Docker logging driver
Docker ve výchozím nastavení používá json-file logging driver. Logy se ukládají do:
/var/lib/docker/containers/<container-id>/<container-id>-json.logKonfigurace rotace logů
Pro prevenci zaplnění disku nastavte rotaci v /etc/docker/daemon.json na VPS:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "50m",
"max-file": "3"
}
}Po změně daemon.json je nutné restartovat Docker: sudo systemctl restart docker. Existující kontejnery si ponechají původní nastavení -- je třeba je znovu vytvořit.
MailHog -- potlačení logů
V lokálním vývoji má MailHog vypnuté logování pro snížení šumu:
mailhog:
logging:
driver: 'none'Časté scénáře
Chybějící migrace po deployi
# Symptom v logu API:
# QueryFailedError: column "newColumn" of relation "table" does not exist
# Řešení: spusťte migrace
./scripts/deploy.sh --migrateProblémy s připojením k databázi
# Kontrola stavu PostgreSQL
ssh deploy@<VPS_IP> "cd /opt/apps/turtor && docker compose ps postgres"
# Kontrola logů PostgreSQL
ssh deploy@<VPS_IP> "cd /opt/apps/turtor && docker compose logs --tail=50 postgres"Redis nedostupný
# Kontrola Redis
ssh deploy@<VPS_IP> "cd /opt/apps/turtor && docker compose exec redis redis-cli ping"
# Očekávaná odpověď: PONGBullMQ joby (emaily, notifikace, generování kurzů) tiše selhávají, pokud je Redis nedostupný. Při výpadcích Redis vždy zkontrolujte fronty po obnovení.
Užitečné příkazy
# Počet řádků logu za poslední hodinu
ssh deploy@<VPS_IP> "cd /opt/apps/turtor && docker compose logs --since=1h api 2>&1 | wc -l"
# Filtrování chyb
ssh deploy@<VPS_IP> "cd /opt/apps/turtor && docker compose logs api 2>&1 | grep -i error | tail -20"
# Velikost log souborů
ssh deploy@<VPS_IP> "docker system df -v | grep turtor"