Health Check

Govway espone un servizio built-in di health check al contesto:

/govway/check

Il servizio, invocabile con una semplice GET, restituisce una risposta vuota con codice HTTP 200 nel caso in cui GovWay sia correttamente in funzione.

> curl -v http://localhost:8080/govway/check
> GET /govway/check HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.66.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Connection: keep-alive
< Content-Length: 0
< Date: Mon, 10 Oct 2022 14:55:45 GMT

Nel caso in cui GovWay non si sia avviato correttamente viene restituito un codice HTTP 503:

> curl -v http://localhost:8080/govway/check
> GET /govway/check HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.66.0
> Accept: */*
>
< HTTP/1.1 503 Service Unavailable
< Connection: keep-alive
< Content-Type: text/plain
< Content-Length: 35
< Date: Mon, 10 Oct 2022 16:13:59 GMT
<
API Gateway GovWay non inzializzato

Se invece vengono rilevati errori dopo che GovWay si è avviato correttamente viene restituito un codice HTTP 500 e nel payload viene riportata la motivazione dell’errore rilevato:

> curl -v http://localhost:8080/govway/check
> GET /govway/check HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.66.0
> Accept: */*
>
< HTTP/1.1 500 Internal Server Error
< Connection: keep-alive
< Content-Type: text/plain
< Content-Length: 203
< Date: Mon, 10 Oct 2022 16:17:40 GMT
<
Risorse di sistema non disponibili: [Database] Connessione al database GovWay non disponibile: javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:/org.govway.datasource

Oltre ai controlli standard, previsti per default sul servizio, è possibile abilitarne uno ulteriore che si occupa di invocare una API di HealthCheck configurata su GovWay. Per attivare questo controllo è ncessario editare il file <directory-lavoro>/govway_local.properties e abilitare l’health check per API REST e/o per API SOAP, indicando il corretto endpoint di esposizione dell’API:

# ================================================
# Health check
# Se abilitato, il servizio /govway/check invocherà anche l'API REST e/o SOAP per verificare il corretto funzionamento di GovWay
# API REST
org.openspcoop2.pdd.check.healthCheck.apiRest.enabled=true
org.openspcoop2.pdd.check.healthCheck.apiRest.endpoint=http://localhost:8080/govway/ENTE/api-rest-status/v1/status
# API SOAP
org.openspcoop2.pdd.check.healthCheck.apiSoap.enabled=true
org.openspcoop2.pdd.check.healthCheck.apiSoap.endpoint=http://localhost:8080/govway/ENTE/api-soap-status/v1
...
# ================================================

Infine il servizio di “health check” può essere invocato con dei parametri ad hoc per richiedere una verifica che i dati statistici risultino aggiornati; di seguito i parametri utilizzabili:

  • executeHourlyHealthCheckStats=true : verifica l’aggiornamento dei dati campionati per ora;

  • executeDailyHealthCheckStats=true : verifica l’aggiornamento dei dati campionati per giorno;

  • executeHealthCheckStats=true : verifica l’aggiornamento dei dati per qualsiasi campionamento attivo.

La configurazione delle verifiche attive e i livelli di soglia di default possono essere configurati agendo nel file <directory-lavoro>/govway_local.properties, nella sezione “Health check - Report statistici”.

I livelli di soglia possono anche essere ridefiniti tramite i seguenti ulteriori parametri: hourlyHealthCheckStatsThreshold, dailyHealthCheckStatsThreshold e healthCheckStatsThreshold.

Di seguito un esempio di errore derivante da un aggiornamento dei dati statistici orari non correttamente aggiornati:

> curl -v http://localhost:8080/govway/check?executeHourlyHealthCheckStats=true&hourlyHealthCheckStatsThreshold=1
> GET /govway/check HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.66.0
> Accept: */*
>
< HTTP/1.1 500 Internal Server Error
< Connection: keep-alive
< Content-Type: text/plain
< Content-Length: 203
< Date: Mon, 10 Oct 2022 16:17:40 GMT
<
Statistics HealthCheck failed
Hourly statistical information found whose last update is older than the allowed threshold (1); last generation date: 2024-07-29_15:00:00.000