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.