Controllo di stato
La funzionalità di controllo di stato del Babel Licensing Service offre un meccanismo completo per monitorare l’integrità e lo stato operativo del servizio e dei suoi componenti. È essenziale per garantire l’affidabilità del sistema, facilitare la risoluzione dei problemi e permettere l’integrazione con gli strumenti di monitoraggio dell’infrastruttura.
Configurazione
Il comportamento del controllo di stato si configura nella sezione Application del file appsettings.json:
"Application": {
"HealthCheckEndPoint": "/health",
"HealthCheckResponseType": "JSON"
}HealthCheckEndPoint
Questa impostazione specifica il percorso URL a cui sarà raggiungibile l’endpoint del controllo di stato. Il valore predefinito è /health.
Esempio: se il tuo servizio è in esecuzione su https://licensing.example.com e HealthCheckEndPoint è impostato su /health, l’URL completo del controllo di stato sarà https://licensing.example.com/health.
HealthCheckResponseType
Questa impostazione determina il formato della risposta del controllo di stato. Sono supportati due formati:
- JSON: restituisce una risposta JSON strutturata (predefinito)
- TEXT: restituisce una risposta in testo semplice, leggibile da una persona
Formato di risposta JSON
Quando HealthCheckResponseType è impostato su "JSON", l’endpoint del controllo di stato produce una risposta JSON strutturata come questa:
{
"status": "Healthy",
"duration": "00:00:00.2514204",
"timestamp": "2025-03-20T07:26:07.1085160Z",
"checks": [
{
"name": "babel_service_health",
"status": "Healthy",
"duration": "00:00:00.0010617",
"data": {
"serverTimeUtc": "2025-03-20T07:26:06.8604190Z",
"activeTokens": 0
}
},
{
"name": "database_health",
"status": "Healthy",
"duration": "00:00:00.1003761"
},
{
"name": "webhook_processor_health",
"status": "Healthy",
"duration": "00:00:00.0605641",
"data": {
"hasFailedEvents": false
}
},
{
"name": "geo_location_health",
"status": "Healthy",
"duration": "00:00:00.2456515"
}
]
}Questo formato è ideale per:
- Sistemi di monitoraggio automatizzati
- Integrazione con piattaforme di orchestrazione come Kubernetes
- Valutazione programmatica dello stato
- Strumenti di monitoraggio di terze parti in grado di analizzare dati JSON
Formato di risposta TEXT
Quando HealthCheckResponseType è impostato su "TEXT", l’endpoint del controllo di stato produce un formato leggibile da una persona:
Babel Licensing Service v. 11.0.0.0
Status: Healthy
Duration: 00:00:00.2586788
Timestamp: 2025-03-20T07:23:14.0761680Z
Version: 11.0.0.0
Checks:
- Babel Licensing Service: Healthy (00:00:00.0024254)
* Server Time Utc: 2025-03-20T07:23:13.8180050Z
* Active Tokens: 0
- Database: Healthy (00:00:00.0901153)
- Webhook Processor: Healthy (00:00:00.0687397)
* Has Failed Events: False
- Geo Location: Healthy (00:00:00.2550240)Questo formato è più adatto a:
- Ispezione manuale da parte degli amministratori di sistema
- Strumenti da riga di comando e semplici verifiche dello stato
- Situazioni in cui la risposta deve essere facilmente leggibile senza ulteriore analisi
- Voci dei file di log e output della console
Componenti del controllo di stato
Il controllo di stato del Babel Licensing Service monitora diversi componenti critici:
- Stato del servizio: fornisce informazioni sul servizio principale, tra cui l’ora del server, l’edizione della licenza, i token attivi e il numero massimo di token consentiti.
- Stato del database: verifica la connettività e lo stato operativo del database.
- Elaborazione dei webhook: controlla che il sistema di elaborazione dei webhook funzioni correttamente.
- Servizio di geolocalizzazione: conferma che il servizio di geolocalizzazione configurato (per esempio IpApiIs) sia operativo.
Valori di stato
I controlli di stato riportano uno dei seguenti stati:
- Healthy: il componente funziona normalmente
- Degraded: il componente è operativo ma con funzionalità o prestazioni ridotte
- Unhealthy: il componente non funziona correttamente
Integrazione con i sistemi di monitoraggio
L’endpoint del controllo di stato può essere integrato con diversi sistemi di monitoraggio:
- Bilanciatori del carico: possono usare il controllo di stato per stabilire se il servizio deve ricevere traffico
- Orchestrazione dei container: piattaforme come Kubernetes possono usare l’endpoint per i probe di readiness e liveness
- Strumenti di monitoraggio: sistemi come Prometheus, Nagios o Zabbix possono interrogare periodicamente l’endpoint
- Dashboard personalizzate: il formato JSON può essere usato da dashboard di monitoraggio personalizzate
Procedure consigliate
- Monitoraggio regolare: configura il tuo sistema di monitoraggio perché controlli l’endpoint di stato a intervalli regolari.
- Allarmi: imposta degli allarmi per quando il servizio passa da Healthy a Degraded o Unhealthy.
- Scelta del formato di risposta: scegli JSON per i sistemi automatizzati e TEXT per gli operatori umani.
- Endpoint personalizzato: valuta di cambiare l’endpoint predefinito per motivi di sicurezza negli ambienti di produzione.
- Configurazione del firewall: assicurati che il firewall consenta ai tuoi sistemi di monitoraggio di accedere all’endpoint del controllo di stato.
Il controllo di stato è uno strumento essenziale per mantenere l’affidabilità e la stabilità della tua distribuzione del Babel Licensing Service, perché fornisce in tempo reale informazioni sullo stato operativo del sistema e dei suoi componenti.