Turtor Docs
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 redis

Př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 postgres

API 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žbaCo logujeTypické chyby
apiHTTP requesty, business logika, chybyDatabázové chyby, chybějící migrace, auth selhání
webNginx access/error logy404 pro chybějící assets
adminNginx access/error logy404 pro chybějící assets
postgresSpojení, query chyby, startupNedostatek místa, chybějící sloupce
redisSpojení, paměť, persistenceOOM, AOF rewrite chyby
nginxReverse proxy access/errorUpstream 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.log

Konfigurace 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 --migrate

Problé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ěď: PONG

BullMQ 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"