Salta al contenuto

Menu

← Blog

Monitorare Asterisk con Prometheus

Da Asterisk 17 le metriche escono già nel formato di Prometheus: quali sono e come raccoglierle, con un piccolo progetto Docker da provare.

VoIP4 min di lettura
In questo articolo
  1. Setup: Asterisk e Prometheus in Docker
  2. Docker Compose
  3. Configurazione di Asterisk
  4. Configurazione di Prometheus
  5. Verifica del risultato

Asterisk esporta le metriche nel formato di Prometheus dalla versione 17.0.0. In questo articolo vediamo brevemente quali metriche esporta e come configurare un job di Prometheus per raccoglierle.

Setup: Asterisk e Prometheus in Docker

Impostiamo un progetto minimale:

asterisk-prometheus/
asterisk-prometheus/├── compose.yaml├── asterisk/│ ├── http.conf│ └── prometheus.conf└── prometheus/ └── prometheus.yml

Docker Compose

Asterisk non ha un'immagine Docker ufficiale. Per la nostra demo usiamo l'ottima andrius/asterisk, che pubblica le build di Asterisk su varie distribuzioni. Non tutti i tag includono res_prometheus: noi usiamo il tag 22.11.0_debian-trixie (Asterisk 22 LTS su Debian 13).

compose.yamlYAML
services:  asterisk:    image: andrius/asterisk:22.11.0_debian-trixie    volumes:      - ./asterisk/http.conf:/etc/asterisk/http.conf:ro      - ./asterisk/prometheus.conf:/etc/asterisk/prometheus.conf:ro    ports:      - "8088:8088"  prometheus:    image: prom/prometheus:v3.13.4    volumes:      - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro    ports:      - "9090:9090"    depends_on:      - asterisk

Configurazione di Asterisk

Asterisk espone le metriche attraverso il suo server HTTP integrato, che di default è disabilitato. Per abilitarlo bisogna cambiare alcune righe in http.conf:

asterisk/http.confCONF
[general]enabled = yesbindaddr = 0.0.0.0bindport = 8088

Per abilitare l'exporter di Asterisk si modifica invece prometheus.conf:

asterisk/prometheus.confCONF
[general]enabled = yesuri = metrics; core_metrics_enabled = yes

uri è il percorso da cui vengono esposte le metriche, nel nostro caso http://<host>:8088/metrics. Con core_metrics_enabled si aggiungono alcune metriche sul processo stesso: uptime, tempo trascorso dall'ultimo reload…

Configurazione di Prometheus

Nella configurazione di Prometheus serve un job che punti al container:

prometheus/prometheus.ymlYAML
global:  scrape_interval: 15sscrape_configs:  - job_name: asterisk    static_configs:      - targets: ["asterisk:8088"]

Verifica del risultato

Per avviare lo stack:

asterisk-prometheus
$ docker compose up -d

Per leggere le metriche in tempo reale:

asterisk-prometheus
$ curl -s localhost:8088/metricsasterisk_channels_count{eid="82:57:d5:8c:07:a7"} 0asterisk_calls_sum{eid="82:57:d5:8c:07:a7"} 0asterisk_calls_count{eid="82:57:d5:8c:07:a7"} 0asterisk_endpoints_count{eid="82:57:d5:8c:07:a7"} 0asterisk_bridges_count{eid="82:57:d5:8c:07:a7"} 0asterisk_core_properties{eid="82:57:d5:8c:07:a7",version="22.11.0",...} 1asterisk_core_uptime_seconds{eid="82:57:d5:8c:07:a7"} 2asterisk_core_last_reload_seconds{eid="82:57:d5:8c:07:a7"} 2asterisk_core_scrape_time_ms{eid="82:57:d5:8c:07:a7"} 0...

All'indirizzo http://localhost:9090/targets il job asterisk dovrebbe risultare UP.

VoIP

Volete saperne di più?

Scriveteci o chiamateci: vi raccontiamo come lavoriamo e come potrebbe funzionare per la vostra azienda.

Il servizio VoIPContattaci

Altri articoli

  • VoIP

    RFC 8599 in pratica: notifiche push SIP con OpenSIPS e Gorush

    Come facciamo squillare un'app chiusa: OpenSIPS trattiene l'INVITE, Gorush manda la notifica push e la chiamata parte quando il telefono si registra di nuovo.

    · 6 min
  • Sviluppo

    Un ufficio più smart, a portata di mano

    Con Home Assistant gestiamo luci, climatizzatori, telecamere e altri dispositivi dell'ufficio da un unico punto, anche dal telefono.

    · 3 min
  • Helpdesk

    Un gestionale per gli interventi hardware in tutta Italia

    Il gestionale che abbiamo costruito per l'assistenza hardware: tecnici sul territorio, apparati, contatti e ticket.

    · 3 min

Tutti gli articoli