Inhaltsverzeichnis
Runbook: Health Check
Durata: ~2 minuti
Ruolo: Operatore Gateway
Frequenza: Giornaliera / Automatizzata
Verifica della disponibilita e funzionalita del Gateway.
Workflow
flowchart TD
A[Avviare Health Check] --> B[/health Endpoint]
B --> C{Healthy?}
C -->|Si| D[Test API]
C -->|No| E[Controllare log]
D --> F{Dati restituiti?}
F -->|Si| G[OK - Finito]
F -->|No| H[Verificare DSN]
E --> I[Riavviare server]
H --> I
style G fill:#e8f5e9
style E fill:#ffebee
style H fill:#fff3e0
1. Health Check Base
# Health Check semplice curl -s -o /dev/null -w "%{http_code}" http://localhost:5000/health # Risposta attesa: 200
# Con Response-Body curl -s http://localhost:5000/health # Risposta attesa: "Healthy"
2. Health Check Esteso
# Swagger raggiungibile? curl -s -o /dev/null -w "%{http_code}" http://localhost:5000/swagger # Verificare versione API curl -s http://localhost:5000/api/v1/info | jq
3. Connettivita DSN
# Testare tutti i DSN for dsn in demo produzione reporting; do echo "Testing $dsn..." curl -s -o /dev/null -w "$dsn: %{http_code}\n" \ "http://localhost:5000/api/v1/dsn/$dsn/tables" done
Versione PowerShell:
$dsns = @("demo", "produzione", "reporting") foreach ($dsn in $dsns) { $result = Invoke-WebRequest -Uri "http://localhost:5000/api/v1/dsn/$dsn/tables" -UseBasicParsing Write-Host "$dsn : $($result.StatusCode)" }
4. Misurare tempo di risposta
# Singola query curl -s -o /dev/null -w "Tempo: %{time_total}s\n" \ "http://localhost:5000/api/v1/dsn/demo/tables/Products?\$top=10" # Piu esecuzioni 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 "Media: " sum/NR "s"}'
5. Checklist
| # | Punto di verifica | Atteso | v |
| — | ———– | ———– | — |
| 1 | /health | 200 + „Healthy“ | ☐ |
| 2 | /swagger | 200 | ☐ |
| 3 | DSN „demo“ raggiungibile | 200 | ☐ |
| 4 | Tempo di risposta | < 1s | ☐ |
| 5 | Nessun errore nei log | Nessun ERROR | ☐ |
Health Check Automatizzato
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 "Il Gateway e stato riavviato automaticamente" }
Troubleshooting
| Problema | Causa | Soluzione |
| ——— | ——— | ——– |
Connection refused | Gateway non avviato | Avviare server |
503 Service Unavailable | Avvio non completato | Attendere 30s, riprovare |
500 Internal Server Error | Errore configurazione | Controllare log |
| Timeout | Gateway sovraccarico | Ridurre carico, aumentare risorse |
Soglie
| Metrica | Verde | Giallo | Rosso |
| ——– | —— | —— | —– |
| Tempo di risposta | < 500ms | 500ms-2s | > 2s |
| Error-Rate | < 1% | 1-5% | > 5% |
| CPU | < 50% | 50-80% | > 80% |
| Memoria | < 70% | 70-90% | > 90% |
Runbook Correlati
- Avviare server - In caso di guasto
- Controllare log - Analisi errori
- Prometheus - Monitoraggio automatico
« <- Gestire DSN | -> Controllare log »
Wolfgang van der Stille @ EMSR DATA d.o.o. - Data Gateway Professional
Zuletzt geändert: il 29/01/2026 alle 23:40