Asterisk Registry
Dieser Nagios-Check prüft, ob Asterisk noch bei einer bestimmten Gegenstelle registriert ist. Die Codebeispiele beziehen sich auf Sipgate, können aber leicht
an andere Anbieter angepasst werden.
Der erste Schritt besteht darin, den Registrierungsstatus abzufragen:
[Datei: /etc/nagios3/cust-scripts/sip_cronjob]
#!/bin/bash
/usr/sbin/asterisk -rx "sip show registry"|grep -e "sipgate.*Reg"|wc -l > /tmp/status_sipgate
Das Script wird dann für root ausführbar gemacht und in dessen Crontab gesetzt:
# chmod 700 /etc/nagios3/cust-scripts/sip_cronjob
# crontab -e
0,15,30,45 * * * * /etc/nagios3/cust-scripts/sip_cronjob
Die Statusdatei wird damit alle 15 Minuten neu geschrieben.
Dann wird ein Plugin benötigt, dass den Inhalt der Datei /tmp/status_sipgate ausliest und entsprechende Werte zurückgibt.
Das kann so aussehen:
[ Datei: /etc/nagios3/cust-scripts/sip_plugin]
#!/bin/bash
# scp nagios@pbx:/tmp/status_sipgate /tmp/status_sipgate
status=`cat /tmp/status_sipgate`
case "$status" in
1) echo "OK |regstate=1"; exit 0;;
0) echo "CRITICAL: Not registered |regstate=0"; exit 2;;
*) echo "UNKNOWN: Invalid value in status file |regstate=2"; exit 3;;
esac
Die auskommentierte Zeile mit scp bezieht sich darauf, dass das Nagios und Asterisk selten auf demselben Server laufen
und ist nur eine von sehr vielen Möglichkeiten. Als Alternativen kommen z.B. die Abfrage über SNMP oder die Verwendung von NRPE in Frage.
Die Perfdata-Werte ("|regstate=n") sind optional.
Zuletzt müssen noch Kommando und Service definiert werden:
[Datei: /etc/nagios3/plugin-config/asterisk_registry.cfg]
define command{
command_name check_sipgate_reg
command_line /etc/nagios3/cust-scripts/sip_plugin
}
[Datei: /etc/nagios3/systems/pbx.cfg]
define service{
use generic-service
host_name pbx
service_description Sipgate Registry
check_command check_sipgate_reg
}
Nach einem Neustart von Nagios steht der Check zur Verfügung.
Es sei noch kurz erwähnt, dass dieser Check nur die Meinung des Asterisk wiederspiegelt. Die Gegenstelle kann
bspw. nach einer Änderung der IP-Adresse eine falsche Location gespeichert haben.