I cookies ci aiutano a fornire i nostri servizi.

Continuando la navigazione sul sito accetti l'utilizzo dei cookies da parte nostra. Per saperne di piu'

Approvo

Ing. Giuseppe Mazzucato

Consulenza Informatica ed Organizzativa

Logo
1 1 1 1 1 1 1 1 1 1 Rating 0.00 (0 Votes)

Monitoraggio Asterisk con Zabbix (AGGIORNATO)


Zabbix è una piattaforma di monitoraggio molto flessibile che può essere facilmente configurata per monitorare una rete di PBX asterisk. In questo articolo sono inclusi alcuni miglioramenti rilasciati a Giugno 2017.

 

 Zabbix

Zabbix è una piattaforma di monitoraggio molto popolare, che spicca tra le altre per la licenza completamente Open Source e che offre un insieme molto completo di funzionalità.

  • Raccolta dati su guasti e performances da ogni tipo di dispositivo attraverso diversi metodi (agent, SNMP, scenari web, servizi etc.) 
  • Definizione delle condizioni di allarme multilivello (trigger) molto flessibile tramite soglie, dipendenze, isteresi.
  • Visualizzazione risultati misure ed allarmi su cruscotti e mappe con grafici e dettagli.
  • Notifica degli allarmi tramite email, sms, IM o script con gestione escalation
  • Definizione degli scenari standard di monitoraggio tramite template
  • Architettura distribuita che permette di monitorare migliaia di dispositivi

 

 

Una funzione che si è dimostrata particolarmente utile nel nostro caso è la capacità di monitorare anche server che non siano accessibili da internet (dietro NAT), configurando l'agent in modalità attiva in modo da contattare il server zabbix che è l'unico che deve essere su rete pubblica.

Per ulteriori informazioni si rimanda al sito del progetto zabbix.

Monitoraggio di Asterisk

Per monitorare un server asterisk tramite zabbix utilizzando l'agent in modalità attiva prima di tutto installare l'agent seguendo le istruzioni nel sito e riportate qui sotto per CentOS.

# rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
# yum install zabbix-agent
# usermod -a -G asterisk zabbix // aggiunge l'utente zabbix al gruppo asterisk

Per il monitoraggio in modalità attiva modificare i seguenti due parametri nel file /etc/zabbix/zabbix_agentd.conf

ServerActive=<indirizzo IP del server Zabbix>
Hostname=<nome di questo host>

L'agent include nativamente una serie di misure utili per valutare lo stato di salute del sistema operativo (CPU, memoria, disco etc.) ma per valutare anche i parametri specifici di asterisk e necessario aggiungere alcune misure ulteriori (recuperate direttamente dalla CLI) sempre nello stesso file di configurazione.

UserParameter=asterisk.status,pidof asterisk | wc -l
UserParameter=asterisk.sip_peer[*],asterisk -rx "sip show peers" | grep $1 | grep OK | wc -l
UserParameter=asterisk.pjsip_peer[*],asterisk -rx "pjsip show contacts" | grep $1 | grep Avail | wc -l
UserParameter=asterisk.actcall,asterisk -rx "core show calls" | grep 'active call' | cut -d ' ' -f 1
UserParameter=asterisk.totcall,asterisk -rx "core show calls" | grep 'calls processed' | cut -d ' ' -f 1
UserParameter=asterisk.uptime,asterisk -rx "core show uptime seconds" | grep 'System uptime' | cut -d ' ' -f 3
UserParameter=asterisk.reload,asterisk -rx "core show uptime seconds" | grep 'Last reload' | cut -d ' ' -f 3
UserParameter=pjsiptrunk.discovery,l=$(cat /etc/zabbix/pjsiptrunks.lst);echo -n '{"data":[';for i in ${l};do echo -n "{\"{#TRUNK}\": \"$i\"},";done|sed -e 's:\},$:\}:';echo -n ']}';
UserParameter=siptrunk.discovery,l=$(cat /etc/zabbix/siptrunks.lst);echo -n '{"data":[';for i in ${l};do echo -n "{\"{#TRUNK}\": \"$i\"},";done|sed -e 's:\},$:\}:';echo -n ']}';

Come si può notare sono presenti due regole di auto-discovery per permettono di generare automaticamente i trunk che si vogliono monitorare e che devono essere elencati in due file di configurazione indicando semplicemente i nomi dei trunk uno per riga:

  • Il file /etc/zabbux/siptrunks.lsp con l'elenco dei trunk sip da monitorare
  • Il file /etc/zabbux/pjsiptrunks.lsp con l'elenco dei trunk pjsip da monitorare

Infine attivare il servizio con il comando:

service zabbix-agent start

Template di monitoraggio Zabbix

Il template standard di Zabbix per il monitoraggio del sistema operativo Linux che viene installato automaticamente dalla procedura di installazione permette di monitorare tutti i parametri vitali del server (CPU, Memoria, Disco etc).

Per il monitoraggio dei parametri di asterisk definiti nell'agent al paragrafo precedente potete scaricare il template dall'area di download che comprende i seguenti valori e trigger:

  • Stato processo asterisk, collegato ad trigger che genera un allarme in caso di blocco del processo
  • Uptime del processo asterisk, collegato ad un trigger che genera un evento in caso di restart del processo
  • Reload time di asterisk, collegato ad un trigger che genera un evento in caso di reload
  • Numero chiamate attive
  • Numero chiamate totali
  • Stato di un trunk, collegato ad un trigger che genera un allarme in caso di down superiore ai 2 minuti (replicabile per tutti i trunk configurati)

Update template 09/01/2017

Francesco Defilippo ha migliorato il template aggiungendo una macro relativa ai trunk. La nuova versione rimpiazza la vecchia nell'area download.

Update template 25/06/2017

In questo aggiornamento sono state aggiunte due funzioni

  • Possibilità di monitorare otre che i trunk SIP anche quelli PJSP
  • Regole di low level discovery (LLD) che permettono di semplificare notevolmente la configurazione dei trunk da monitorare

 

La nuova versione rimpiazza la vecchia nell'area download.

 

 

 

Commenti   

0 #1 ecsuae 2017-09-17 01:37
hi it is nice artical , need help in configuring , i have put all the config in /etc/zabbix/zabbix_agentd.conf at the end, but after that when i restart zabbix-agent it gives error

zabbix_agentd [3833]: ERROR: cannot add user parameter "asterisk.sip_peer [*], asterisk -rx "sip show peers" | grep $ 1 | grep OK | wc -l": syntax error

i try to run the command in terminal also gives error
asterisk -rx "sip show peers" | grep $ 1 | grep OK | wc -l
grep: 1: No such file or directory
0
Please guide how to fix it , also can you help to configure iax trunk instead of pjsip?
0 #2 admin 2017-09-19 19:01
Try from terminal the command:
asterisk -rx "sip show peers" | grep $1 | grep OK | wc -l

putting in place of $1 the name of the trunk you want to check

In the configuration you place there is a blank between $ and 1 that might be cause of the problem.

I never user iax trunks but I assume that the command "iax2 show peers" could replace "sip show peers" in detecting trunk status.

I commenti possono essere inseriti solo dagli utenti registrati

Cerca nel sito

Chiamaci

 

 

 

 

Powered by WebRTC

E' la capacità di innovare che distingue un leader da un discepolo

Steve Jobs