====== Runbook: Pregled dnevnikov ====== **Trajanje:** ~10 minut \\ **Vloga:** Gateway-operater \\ **Pogostost:** Dnevno / Ob težavah Analiza Gateway-dnevnikov za diagnostiko napak in nadzor. ---- ===== Potek dela ===== flowchart TD A[Odpri dnevnike] --> B[Filtriraj ERROR] B --> C{Napake najdene?} C -->|Da| D[Analiziraj napake] C -->|Ne| E[Filtriraj WARN] D --> F[Ukrepi] E --> G{Opozorila?} G -->|Da| H[Dokumentiraj] G -->|Ne| I[V redu - Končano] F --> I H --> I style I fill:#e8f5e9 style D fill:#ffebee style H fill:#fff3e0 ---- ===== 1. Lokacije dnevnikov ===== | Platforma | Pot | |-----------|------| | Windows (konzola) | Izpis v konzoli | | Windows (storitev) | ''%GATEWAY_ROOT%\logs\'' ali Event Log | | Linux (systemd) | ''journalctl -u data-gateway'' | | Docker | ''docker logs gateway'' | ---- ===== 2. Prikaz zadnjih dnevnikov ===== **Windows (datoteka):** # Zadnjih 50 vrstic Get-Content -Path "%GATEWAY_ROOT%\logs\gateway.log" -Tail 50 # Živi prenos Get-Content -Path "%GATEWAY_ROOT%\logs\gateway.log" -Wait -Tail 10 **Linux (systemd):** # Zadnjih 100 vrstic journalctl -u data-gateway -n 100 --no-pager # Živi prenos journalctl -u data-gateway -f **Docker:** # Zadnjih 100 vrstic docker logs --tail 100 gateway # Živi prenos docker logs -f gateway ---- ===== 3. Filtriranje napak ===== **Windows:** # ERROR-vnosi Select-String -Path "%GATEWAY_ROOT%\logs\*.log" -Pattern "ERROR|Exception" # Danes Get-Content "%GATEWAY_ROOT%\logs\gateway.log" | Where-Object { $_ -match "ERROR" -and $_ -match (Get-Date -Format "yyyy-MM-dd") } **Linux:** # ERROR-vnosi journalctl -u data-gateway --since today | grep -E "ERROR|Exception" # Ali v datoteki grep -E "ERROR|Exception" /var/log/gateway/gateway.log ---- ===== 4. Pogosti vzorci dnevnikov ===== **Uspešna zahteva:** [INFO] GET /api/v1/dsn/demo/tables 200 45ms **Napaka:** [ERROR] GET /api/v1/dsn/invalid/tables 404 Database 'invalid' not found [ERROR] POST /api/v1/dsn/demo/query 500 SqlException: Invalid syntax **Opozorilo:** [WARN] Slow query detected: 2340ms for GET /api/v1/dsn/produkcija/tables/BigTable ---- ===== 5. Prilagoditev ravni dnevnikov ===== V ''appsettings.json'': { "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "WvdS.WebAPI.Data.Gateway": "Debug" } } } | Raven | Uporaba | |-------|------------| | ''Trace'' | Zelo podrobno (razvoj) | | ''Debug'' | Informacije za razhroščevanje | | ''Information'' | Normalne operacije (privzeto) | | ''Warning'' | Potencialne težave | | ''Error'' | Napake, ki so bile obravnavane | | ''Critical'' | Resne napake, sesutje | ---- ===== 6. Kontrolni seznam ===== | # | Točka preverjanja | V | |---|-----------|---| | 1 | ERROR-vnosi pregledani | | | 2 | WARN-vnosi pregledani | | | 3 | Počasne poizvedbe zabeležene | | | 4 | Napake dokumentirane/prijavljene | | | 5 | Rotacija dnevnikov aktivna | | ---- ===== Odpravljanje težav ===== | Sporočilo v dnevniku | Vzrok | Rešitev | |-------------|---------|--------| | ''Database not found'' | DSN ni konfiguriran | Preveri appsettings.json | | ''Connection refused'' | Baza ni dosegljiva | Preveri požarni zid/omrežje | | ''SqlException: Login failed'' | Napačne poverilnice | Preveri geslo | | ''OutOfMemoryException'' | Prevelika poizvedba | Nastavi omejitev ''$top'' | | ''Timeout expired'' | Baza počasna | Optimiziraj indekse | ---- ===== Nastavitev rotacije dnevnikov ===== **Serilog (appsettings.json):** { "Serilog": { "WriteTo": [ { "Name": "File", "Args": { "path": "logs/gateway-.log", "rollingInterval": "Day", "retainedFileCountLimit": 30 } } ] } } ---- ===== Povezani Runbooks ===== * [[.:health-check|Health Check]] - Preverjanje razpoložljivosti * [[.:server-starten|Zagon strežnika]] - Ob sesutju * [[..:monitoring:alerting|Opozarjanje]] - Samodejno obveščanje ---- << [[.:health-check|<- Health Check]] | [[..:start|-> Pregled operaterja]] >> ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Data Gateway Professional// {{tag>operator runbook logs troubleshooting}}