Asterisk PBX - Monitoring SIP Peers
Monitoring der SIP-Extensions an einer Asterisk PBX ist nützlich, denn
Fehler lassen sich so früh erkennen und Fehlerhäufungen aufzeichnen.
Hier zwei Beispielaufzeichnungen:
Beide Aufzeichnungen zeigen einen deutlichen Qualitätsunterschied.
Die SIP-Proxys von T-Online arbeiten unzuverlässig, dies äußert sich auch in häufigen Gesrpächsabbrüchen. Im Vergleich im selben Zeitraum liefert sipgate hier konstante und zuverlässige Leistung.
Zur Aufzeichnung wird collectd und rrdtool genutzt. Ein PHP-Script pollt über das Asterisk-AMI-Interface vorhandene SIP Qualifys (Sippeer-Latenzen).
Aufbau und Konfiguration
Asterisk vorbereiten:
Eine funktionierende Asterisk PBX-Konfiguration wird vorausgesetzt
Manager-User anlegen (.z.B. collectd)
Datei /etc/asterisk/manager.d/collectd.conf anlegen:
In der /etc/asterisk/sip.conf müssen alle zu überwachenden Peers qualify=yes gesetzt haben.
Collectd einrichten:
Eine funktionierende Collectd-Installation wird vorausgesetzt.
Script herunterladen, nach /etc/collectd kopieren und Rechte anpassen
Datei /etc/collecd/collectd.conf anpassen:
Kann Spuren von Unvollständigkeit enthalten, Installation und fremde Skripte vor dem ausführen bitte prüfen! Dann Collectd neustarten:
Daten abrufen:
Die obigen Graphen wurden mit rrdtool erstellt
Fehler lassen sich so früh erkennen und Fehlerhäufungen aufzeichnen.
Hier zwei Beispielaufzeichnungen:
Beide Aufzeichnungen zeigen einen deutlichen Qualitätsunterschied.
Die SIP-Proxys von T-Online arbeiten unzuverlässig, dies äußert sich auch in häufigen Gesrpächsabbrüchen. Im Vergleich im selben Zeitraum liefert sipgate hier konstante und zuverlässige Leistung.
Zur Aufzeichnung wird collectd und rrdtool genutzt. Ein PHP-Script pollt über das Asterisk-AMI-Interface vorhandene SIP Qualifys (Sippeer-Latenzen).
Aufbau und Konfiguration
Asterisk vorbereiten:
Eine funktionierende Asterisk PBX-Konfiguration wird vorausgesetzt
Manager-User anlegen (.z.B. collectd)
Datei /etc/asterisk/manager.d/collectd.conf anlegen:
[collectd] secret = your_password deny=0.0.0.0/0.0.0.0 permit=127.0.0.1/255.255.255.0 read = system,call,log,verbose,command,agent,user,originateDatei muss für Asterisk-User lesbar sein, dann asterisk Manager neustarten:
sudo rasterisk -rx 'manager reload'
In der /etc/asterisk/sip.conf müssen alle zu überwachenden Peers qualify=yes gesetzt haben.
Collectd einrichten:
Eine funktionierende Collectd-Installation wird vorausgesetzt.
Script herunterladen, nach /etc/collectd kopieren und Rechte anpassen
cd /etc/collectd wget http://www.saenet.de/dl/projects/asterisk/sippeerd chmod 750 /etc/collectd/sippeerd chown asterisk /etc/collectd/sippeerdsippeerd benötigt nun noch einige lokale Anpassungen. Bitte mit einem Editor öffnen und Variablen im Kopf entsprechend den gesetzten Einstellungen von Asterisk ergänzen.
Datei /etc/collecd/collectd.conf anpassen:
LoadPlugin exec <Plugin exec> Exec asterisk /etc/collectd/sippeerd </Plugin>Sicherstellen, dass "LoadPlugin exec" nicht auskommentiert ist.
Kann Spuren von Unvollständigkeit enthalten, Installation und fremde Skripte vor dem ausführen bitte prüfen! Dann Collectd neustarten:
service collectd restart
Daten abrufen:
Die obigen Graphen wurden mit rrdtool erstellt
RRD=/var/cache/rrd/saenet.de/ping/ping-t-online.de_sip.rrd /usr/bin/rrdtool graph monitoring_t-online.de_1d.png -aPNG \ -cARROW#000000 -t "Verzögerung (t-online.de:sip)" \ -v "Reaktionszeit (ms)" -s -1d -T64 -u 100 -h200 -w400 \ DEF:value=$RRD:value:AVERAGE \ CDEF:null=value,UN,0,0,IF \ CDEF:unkn=value,UN,UNKN,UNKN,IF \ DEF:value_min=$RRD:value:AVERAGE \ DEF:value_max=$RRD:value:AVERAGE \ CDEF:value_null=value,UN,UNKN,0,IF \ CDEF:lat=value,1,* \ CDEF:lat_min=value_min,1,* \ CDEF:lat_max=value_max,1,* \ CDEF:lat_null=value_null,1,* \ COMMENT:" \g" \ COMMENT:" Min \g" \ COMMENT:" Avg \g" \ COMMENT:" Max \g" \ COMMENT:" Curr \g" \ COMMENT:"\l" \ AREA:lat#FF3434:"Latenz \g": \ GPRINT:lat_min:MIN:"%6.2lf \g" \ GPRINT:lat:AVERAGE:"%6.2lf \g" \ GPRINT:lat_max:MAX:"%6.2lf \g" \ GPRINT:lat:LAST:"%6.2lf \g" \ COMMENT:"\l" \ CDEF:rrdgraph_unkn=value,UN,INF,UNKN,IF \ CDEF:rrdgraph_nunkn=0,rrdgraph_unkn,- \ AREA:rrdgraph_unkn#FF343477:: \ AREA:rrdgraph_nunkn#FF343477::