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