Monitoring con Prometheus
Prometheus è un sistema di monitoring open source. Viene spesso usato in combinazione ad Alertmanager per la gestione alert o Grafana per la gestione delle dashboard e alert.
nexiop e nexioperator dalla versione 2.4.0 espongono delle metriche di sistema per Prometheus.
Per attivare questa funzionalità bisogna andare in Avanzate -> Configurazione Sistema -> Monitor e definire i Profili SIP che si vuole andare a monitorare. Inoltre è possibile attivare delle metriche opzionali.
Dopo aver definito i Profili SIP è necessario andare in Avanzate -> Firewall -> Regole e nella sezione “Proteggi le metriche Prometheus” aggiungere gli IP e/o le subnet che si vuole abilitare alla consultazione delle metriche e salvare.
Le metriche sono accessibili alle seguenti URL:
- Metriche “nginx” (web): https://FQDN_NEXIOP/api/service/monitor/nginx/metrics
- Metriche “node” (sistema): https://FQDN_NEXIOP/api/service/monitor/node/metrics
- Metriche “PostgreSQL” (database): https://FQDN_NEXIOP/api/service/monitor/psql/metrics
- Metriche “switch” (VoIP): https://FQDN_NEXIOP/api/service/monitor/switch/metrics
- Metriche “xmpp” (chat): https://FQDN_NEXIOP/api/service/monitor/xmpp/metrics
La frequenza consigliata di aggiornamento delle metriche è di 30 secondi.
Di seguito riportiamo un esempio parziale della configurazione usata in Prometheus (sezione scrape_configs):
scrape_configs:
- job_name: 'nexiopnginx'
metrics_path: /api/service/monitor/nginx/metrics
scheme: https
scrape_interval: 30s
file_sd_configs:
- files:
- scrape_configs/nexiop.json
- job_name: 'nexiopnode'
metrics_path: /api/service/monitor/node/metrics
scheme: https
scrape_interval: 15s
file_sd_configs:
- files:
- scrape_configs/nexiop.json
- job_name: 'nexioppsql'
metrics_path: /api/service/monitor/psql/metrics
scheme: https
scrape_interval: 30s
file_sd_configs:
- files:
- scrape_configs/nexiop.json
- job_name: 'nexiopswitch'
metrics_path: /api/service/monitor/switch/metrics
scheme: https
scrape_interval: 30s
file_sd_configs:
- files:
- scrape_configs/nexiop.json
- job_name: 'nexiopxmpp'
metrics_path: /api/service/monitor/xmpp/metrics
scheme: https
scrape_interval: 30s
file_sd_configs:
- files:
- scrape_configs/nexiop.json
Di seguito riportiamo un esempio della configurazione nel file scrape_configs/nexiop.json menzionato nella precedente configurazione:
[
{
"targets": [
"FQDN_NEXIOP:443"
],
"labels": {
"job": "node",
"instance": "FQDN_NEXIOP"
}
}
]
Interrogando le URL delle metriche tramite un browser è possibile reperire i dati e le relative descrizioni. Es:
# HELP fs_status FreeSWITCH status. (1 = yes, 0 = no).
# TYPE fs_status gauge
fs_status 1
“# HELP” riporta la descrizione della metrica.
“# TYPE” riporta la tipologia di metrica.
Quindi fs_status uguale a 1 segnala che FreeSWITCH (VoIP) è online.