Metriche di Osservabilità
GovWay è in grado di esporre metriche operative (numero di richieste, latenze, dimensioni dei messaggi, stato interno del gateway, risorse JVM, ecc.) verso i più diffusi sistemi di monitoraggio infrastrutturale, adottando il modello dati e le convenzioni di Micrometer. Sono supportate due modalità di raccolta, attivabili contemporaneamente:
pull (Prometheus): GovWay espone le metriche sull’endpoint HTTP
/govway/metricsnel formato testuale Prometheus; è il sistema di monitoraggio a interrogare periodicamente il gateway (scrape);push (OTLP): GovWay invia periodicamente le metriche a un collector compatibile OpenTelemetry (protocollo OTLP su HTTP/protobuf).
Per default le metriche sono disabilitate: nessun collettore è attivo e l’endpoint
/govway/metrics risponde con codice HTTP 404. In questa sezione viene descritto come
abilitarle; l’endpoint, il catalogo delle metriche esposte, la configurazione avanzata e gli esempi
di integrazione con i sistemi di monitoraggio sono descritti nella sezione
Metriche di Osservabilità.
File di configurazione
La configurazione dei collettori si effettua nel file <directory-lavoro>/govway_local.observability.properties, prodotto dall’installer, che ridefinisce le proprietà di default presenti nel file govway.observability.properties interno all’archivio. Le proprietà vengono validate all’avvio del gateway: una configurazione non valida ne impedisce l’avvio (fail-fast). Una modifica richiede il riavvio del gateway.
L’elenco dei collettori attivi (nomi separati da virgola) è indicato nella proprietà
observability.collectors, vuota per default:
# Elenco dei collettori attivi (nomi separati da virgola)
observability.collectors=
Un collettore rappresenta una destinazione delle metriche: per ciascun collettore <name>
elencato si definiscono il tipo (prometheus oppure otel) e la configurazione del segnale
metrics:
observability.collector.<name>.type=(prometheus|otel)
observability.collector.<name>.metrics.enabled=(true|false)
Vincoli:
è ammesso al massimo un collettore di tipo
prometheus(l’endpoint di scrape è unico);per i collettori di tipo
otel(push) sono obbligatorie le proprietàendpoint(URL del collector) estepS(intervallo di invio in secondi).
Tutti i collettori attivi ricevono le stesse misure: la medesima metrica viene pubblicata su tutte le destinazioni configurate.
I valori delle proprietà possono riferire variabili di sistema o java tramite la sintassi ${NOME}
(ad esempio ${HOSTNAME}), comprese le variabili definite nella Secrets Map
(GovWay Secrets).
Collettore Prometheus (pull)
Il file prodotto dall’installer contiene già la definizione del collettore prometheus; per
abilitarlo è sufficiente indicarlo tra i collettori attivi:
observability.collectors=prometheus
observability.collector.prometheus.type=prometheus
Le metriche vengono esposte sull’endpoint /govway/metrics del gateway (sezione
Endpoint /metrics).
Avvertimento
L’endpoint è esposto sulla stessa porta HTTP su cui GovWay riceve il traffico delle API e non prevede autenticazione. Le metriche contengono informazioni operative sul gateway (esiti, latenze, stato dei pool e della JVM): è necessario regolarne l’accesso a livello di rete o di reverse proxy, esponendolo solamente verso il sistema di monitoraggio.
Collettore OTLP (push)
observability.collectors=otel
observability.collector.otel.type=otel
# endpoint = URL completo del receiver OTLP/HTTP, comprensivo del path (es. '/v1/metrics')
observability.collector.otel.metrics.endpoint=http://collector:4318/v1/metrics
observability.collector.otel.metrics.stepS=30
Le metriche vengono inviate in push ogni stepS secondi, con encoding OTLP su HTTP/protobuf e
temporalità cumulative (compatibile con la semantica dei contatori Prometheus).
Autenticazione. Se il collector richiede autenticazione Basic, è possibile indicare le
credenziali; in tal caso GovWay invia ad ogni richiesta l’header
Authorization: Basic <base64(username:password)>:
observability.collector.otel.metrics.credential.username=user
observability.collector.otel.metrics.credential.password=secret
Nota
Le credenziali possono essere valorizzate tramite le variabili cifrate della Secrets Map
(GovWay Secrets), riferite con la sintassi ${NOME}, per evitare di indicare la
password in chiaro nel file.
Identificazione del gateway. Ogni invio riporta gli attributi di risorsa con cui GovWay si presenta al collector, ridefinibili per ciascun collettore:
# default: govway
observability.collector.otel.resource.service.name=govway
# default: versione di GovWay (es. 3.4.4)
observability.collector.otel.resource.service.version=3.4.4
# default: identificativo del nodo (org.openspcoop2.pdd.cluster_id) o, se non definito, nome host
observability.collector.otel.resource.service.instance.id=${HOSTNAME}
Per default l’attributo service.instance.id assume il valore dell’identificativo univoco
assegnato al nodo in un’installazione in load balancing (proprietà org.openspcoop2.pdd.cluster_id
del file <directory-lavoro>/govway_local.properties, sezione Configurazione in Load Balancing) o, se non definito, il
nome host della macchina. L’attributo consente al collector di distinguere le metriche dei diversi
nodi di un cluster e deve quindi essere univoco per nodo: nelle installazioni in cui più istanze
condividono la stessa configurazione (es. più pod in Kubernetes) può essere valorizzato tramite una
variabile, come ${HOSTNAME} nell’esempio.