====== 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}}