====== Runbook: Provjera logova ====== **Trajanje:** ~10 minuta \\ **Uloga:** Gateway-Operator \\ **Ucestalost:** Dnevno / Kod problema Analiza Gateway logova za dijagnozu gresaka i monitoring. ---- ===== Tijek rada ===== flowchart TD A[Logove otvoriti] --> B[Filtrirati po ERROR] B --> C{Greska pronadena?} C -->|Da| D[Gresku analizirati] C -->|Ne| E[Filtrirati po WARN] D --> F[Poduzeti mjere] E --> G{Upozorenja?} G -->|Da| H[Dokumentirati] G -->|Ne| I[OK - Gotovo] F --> I H --> I style I fill:#e8f5e9 style D fill:#ffebee style H fill:#fff3e0 ---- ===== 1. Lokacije logova ===== | Platforma | Put | |-----------|------| | Windows (Konzola) | Konzolni izlaz | | Windows (Service) | ''%GATEWAY_ROOT%\logs\'' ili Event Log | | Linux (systemd) | ''journalctl -u data-gateway'' | | Docker | ''docker logs gateway'' | ---- ===== 2. Posljednje logove prikazati ===== **Windows (Datoteka):** # Zadnjih 50 linija Get-Content -Path "%GATEWAY_ROOT%\logs\gateway.log" -Tail 50 # Live-Tail Get-Content -Path "%GATEWAY_ROOT%\logs\gateway.log" -Wait -Tail 10 **Linux (systemd):** # Zadnjih 100 linija journalctl -u data-gateway -n 100 --no-pager # Live-Tail journalctl -u data-gateway -f **Docker:** # Zadnjih 100 linija docker logs --tail 100 gateway # Live-Tail docker logs -f gateway ---- ===== 3. Filtrirati po greskama ===== **Windows:** # ERROR unosi Select-String -Path "%GATEWAY_ROOT%\logs\*.log" -Pattern "ERROR|Exception" # Danas Get-Content "%GATEWAY_ROOT%\logs\gateway.log" | Where-Object { $_ -match "ERROR" -and $_ -match (Get-Date -Format "yyyy-MM-dd") } **Linux:** # ERROR unosi journalctl -u data-gateway --since today | grep -E "ERROR|Exception" # Ili u datoteci grep -E "ERROR|Exception" /var/log/gateway/gateway.log ---- ===== 4. Cesti log uzorci ===== **Uspjesan zahtjev:** [INFO] GET /api/v1/dsn/demo/tables 200 45ms **Greska:** [ERROR] GET /api/v1/dsn/invalid/tables 404 Database 'invalid' not found [ERROR] POST /api/v1/dsn/demo/query 500 SqlException: Invalid syntax **Upozorenje:** [WARN] Slow query detected: 2340ms for GET /api/v1/dsn/produktion/tables/BigTable ---- ===== 5. Log-Level prilagoditi ===== U ''appsettings.json'': { "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "WvdS.WebAPI.Data.Gateway": "Debug" } } } | Level | Upotreba | |-------|------------| | ''Trace'' | Vrlo detaljno (Razvoj) | | ''Debug'' | Debugging informacije | | ''Information'' | Normalne operacije (Standard) | | ''Warning'' | Potencijalni problemi | | ''Error'' | Greske koje su obradene | | ''Critical'' | Teske greske, pad | ---- ===== 6. Kontrolna lista ===== | # | Provjera | Da/Ne | |---|-----------|---| | 1 | ERROR unosi pregledani | - | | 2 | WARN unosi pregledani | - | | 3 | Slow Queries zabilježeni | - | | 4 | Greske dokumentirane/prijavljene | - | | 5 | Log-Rotation aktivna | - | ---- ===== Rjesavanje problema ===== | Log poruka | Uzrok | Rjesenje | |-------------|---------|--------| | ''Database not found'' | DSN nije konfigurirana | appsettings.json provjeriti | | ''Connection refused'' | DB nije dostupna | Firewall/Mrezu provjeriti | | ''SqlException: Login failed'' | Pogresni Credentiali | Lozinku provjeriti | | ''OutOfMemoryException'' | Preveliki upit | ''$top'' Limit postaviti | | ''Timeout expired'' | DB prespora | Index optimizirati | ---- ===== Log-Rotation postaviti ===== **Serilog (appsettings.json):** { "Serilog": { "WriteTo": [ { "Name": "File", "Args": { "path": "logs/gateway-.log", "rollingInterval": "Day", "retainedFileCountLimit": 30 } } ] } } ---- ===== Povezani runbookovi ===== * [[.:health-check|Health Check]] - Provjera dostupnosti * [[.:server-starten|Server pokrenuti]] - Kod pada * [[..:monitoring:alerting|Alerting]] - Automatske obavijesti ---- << [[.:health-check|<- Health Check]] | [[..:start|-> Operator pregled]] >> ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Data Gateway Professional// {{tag>operator runbook logs troubleshooting}}