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.

Proxima OnSite e Proxima Carrier 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_PROXIMA/api/service/monitor/nginx/metrics
  • Metriche “node” (sistema): https://FQDN_PROXIMA/api/service/monitor/node/metrics
  • Metriche “PostgreSQL” (database): https://FQDN_PROXIMA/api/service/monitor/psql/metrics
  • Metriche “switch” (VoIP): https://FQDN_PROXIMA/api/service/monitor/switch/metrics
  • Metriche “xmpp” (chat): https://FQDN_PROXIMA/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: 'proximanginx'
    metrics_path: /api/service/monitor/nginx/metrics
    scheme: https
    scrape_interval: 30s
    file_sd_configs:
      - files:
          - scrape_configs/proxima.json

  - job_name: 'proximanode'
    metrics_path: /api/service/monitor/node/metrics
    scheme: https
    scrape_interval: 15s
    file_sd_configs:
      - files:
          - scrape_configs/proxima.json

  - job_name: 'proximapsql'
    metrics_path: /api/service/monitor/psql/metrics
    scheme: https
    scrape_interval: 30s
    file_sd_configs:
      - files:
          - scrape_configs/proxima.json

  - job_name: 'proximaswitch'
    metrics_path: /api/service/monitor/switch/metrics
    scheme: https
    scrape_interval: 30s
    file_sd_configs:
      - files:
          - scrape_configs/proxima.json

  - job_name: 'proximaxmpp'
    metrics_path: /api/service/monitor/xmpp/metrics
    scheme: https
    scrape_interval: 30s
    file_sd_configs:
      - files:
          - scrape_configs/proxima.json

Di seguito riportiamo un esempio della configurazione nel file scrape_configs/proxima.json menzionato nella precedente configurazione:

[
    {
      "targets": [
        "FQDN_PROXIMA:443"
      ],
      "labels": {
        "job": "node",
        "instance": "FQDN_PROXIMA"
      }
    }
]

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.