====== Runbook: Health Check ====== **Trajanje:** ~2 minuti \\ **Vloga:** Gateway-operater \\ **Pogostost:** Dnevno / Avtomatizirano Preverjanje razpoložljivosti in funkcionalnosti Gateway. ---- ===== Potek dela ===== flowchart TD A[Začni Health Check] --> B[/health končna točka] B --> C{Zdrav?} C -->|Da| D[API-test] C -->|Ne| E[Preveri dnevnike] D --> F{Podatki vrnjeni?} F -->|Da| G[V redu - Končano] F -->|Ne| H[Preveri DSN] E --> I[Ponovno zaženi strežnik] H --> I style G fill:#e8f5e9 style E fill:#ffebee style H fill:#fff3e0 ---- ===== 1. Osnovni Health Check ===== # Preprost Health Check curl -s -o /dev/null -w "%{http_code}" http://localhost:5000/health # Pričakovan odgovor: 200 # Z vsebino odgovora curl -s http://localhost:5000/health # Pričakovan odgovor: "Healthy" ---- ===== 2. Razširjen Health Check ===== # Je Swagger dosegljiv? curl -s -o /dev/null -w "%{http_code}" http://localhost:5000/swagger # Preveri API-verzijo curl -s http://localhost:5000/api/v1/info | jq ---- ===== 3. DSN-povezljivost ===== # Preveri vse DSN for dsn in demo produkcija porocanje; do echo "Testiram $dsn..." curl -s -o /dev/null -w "$dsn: %{http_code}\n" \ "http://localhost:5000/api/v1/dsn/$dsn/tables" done **PowerShell-verzija:** $dsns = @("demo", "produkcija", "porocanje") foreach ($dsn in $dsns) { $result = Invoke-WebRequest -Uri "http://localhost:5000/api/v1/dsn/$dsn/tables" -UseBasicParsing Write-Host "$dsn : $($result.StatusCode)" } ---- ===== 4. Merjenje odzivnega časa ===== # Posamezna poizvedba curl -s -o /dev/null -w "Čas: %{time_total}s\n" \ "http://localhost:5000/api/v1/dsn/demo/tables/Products?\$top=10" # Več ponovitev for i in {1..5}; do curl -s -o /dev/null -w "%{time_total}\n" \ "http://localhost:5000/api/v1/dsn/demo/tables/Products?\$top=10" done | awk '{sum+=$1} END {print "Povprečje: " sum/NR "s"}' ---- ===== 5. Kontrolni seznam ===== | # | Točka preverjanja | Pričakovano | V | |---|-----------|-----------|---| | 1 | /health | 200 + "Healthy" | | | 2 | /swagger | 200 | | | 3 | DSN "demo" dosegljiv | 200 | | | 4 | Odzivni čas | < 1s | | | 5 | Brez napak v dnevnikih | Ni ERROR | | ---- ===== Avtomatiziran Health Check ===== **Cron (Linux):** # /etc/cron.d/gateway-health */5 * * * * root curl -sf http://localhost:5000/health || systemctl restart data-gateway **Scheduled Task (Windows):** # health-check.ps1 $response = Invoke-WebRequest -Uri "http://localhost:5000/health" -UseBasicParsing -TimeoutSec 5 if ($response.StatusCode -ne 200) { Restart-Service -Name "DataGateway" -Force Send-MailMessage -To "admin@example.com" -Subject "Gateway Restart" -Body "Gateway je bil samodejno ponovno zagnan" } ---- ===== Odpravljanje težav ===== | Težava | Vzrok | Rešitev | |---------|---------|--------| | ''Connection refused'' | Gateway ni zagnan | Zaženi strežnik | | ''503 Service Unavailable'' | Zagon še ni končan | Počakaj 30s, poskusi znova | | ''500 Internal Server Error'' | Napaka v konfiguraciji | Preveri dnevnike | | Časovna omejitev | Gateway preobremenjen | Zmanjšaj obremenitev, povečaj vire | ---- ===== Mejne vrednosti ===== | Metrika | Zelena | Rumena | Rdeča | |--------|------|------|-----| | Odzivni čas | < 500ms | 500ms-2s | > 2s | | Stopnja napak | < 1% | 1-5% | > 5% | | Procesor | < 50% | 50-80% | > 80% | | Pomnilnik | < 70% | 70-90% | > 90% | ---- ===== Povezani Runbooks ===== * [[.:server-starten|Zagon strežnika]] - Ob izpadu * [[.:logs-pruefen|Pregled dnevnikov]] - Analiza napak * [[..:monitoring:prometheus|Prometheus]] - Samodejni nadzor ---- << [[.:dsn-verwalten|<- Upravljanje DSN]] | [[.:logs-pruefen|-> Pregled dnevnikov]] >> ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Data Gateway Professional// {{tag>operator runbook health check monitoring}}