Les plugins pour surveiller son serveur SIP Asterisk à partir de Nagios sont assez nombreux. Mais aucun d’eux ne me convenait parfaitement. J’ai donc écrit un petit script nommé Nagisk (quel humour…) a exécuter localement sur le serveur Asterisk. J’utilise NRPE pour récupérer la sortie de ce script et l’intégrer à Nagios.
Nagisk permet de:
- récupérer la version d’Asterisk (et donc au passage de savoir si le serveur est lancé…)
- récupérer le nombre de d’utilisateurs SIP (online et offline)
- récupérer le nombre de communications actives (appels en cours)
Récupération de Nagisk
J’ai créé un nouveau projet sous Freshmeat.
Installation de Nagisk
Avant d’installer Nagisk sur votre serveur Asterisk, il faut d’abord y installer NRPE (par exemple en suivant ce tuto).
On commence par décompresser l’archive préalablement récupérée:
tar zxvf nagisk-1.0.tgz
Puis on copie le script Perl dans le répertoire des plugins Nagios:
cp nagisk.pl /usr/local/nagios/libexec
On lui donne les bons droits:
chown nagios:nagios /usr/local/nagios/libexec/nagisk.pl
chmod 750 /usr/local/nagios/libexec/nagisk.pl
Certaines variables sont en durs dans le code (rien de méchant, juste le path pour accèder à Asterisk). J’utilise personnellement la commande sudo pour executé les commandes sur Asterisk afin que le script soit lancé par l’utilisateur nagios. Pour celà j’ai ajouté la ligne suivante dans le fichier /etc/sudoers:
…
nagios ALL= NOPASSWD: /usr/sbin/asterisk
Configuration de NRPE pour lancer Nagisk
Il suffit d’ajouter les lignes suivantes dans le fichier de configuration de NRPE (/usr/local/nagios/etc/nrpe.conf):
…
command[check_asterisk_version]=/usr/local/nagios/libexec/nagisk.pl -c version
command[check_asterisk_peers]=/usr/local/nagios/libexec/nagisk.pl -c peers
command[check_asterisk_channels]=/usr/local/nagios/libexec/nagisk.pl -c channels
ps: il est possible de faire plus propre en utilisant les arguments NRPE mais je trouve cette solution plus lisible…
Une fois le fichier mofifié, il faut relancer NRPE:
/etc/init.d/nrpe restart
Configuration de Nagios pour surveiller son serveur Asterisk
Si vous souhaitez superviser un serveur SIP Asterisk dont le host_name est sip, il suffit d’ajouter les lignes suivantes dans un de vos fichiers de configurations:
define service{
use generic-service
host_name sip
service_description Check SIP
servicegroups sip
check_command check_nrpe!check_asterisk_version
}
define service{
use generic-service
host_name sip
service_description Check SIP peers
servicegroups sip
check_command check_nrpe!check_asterisk_peers
}
define service{
use generic-service
host_name sip
service_description Check SIP channels
servicegroups sip
check_command check_nrpe!check_asterisk_channels
}
Et voilà le résultat:
Conclusion
Nagisk semble remplir sa fonction, le script tourne depuis quelques temps chez moi sans problème. Il est distribué sous licence libre GPL v3 et il est bien sûr possible de le modifier pour l’adapter à vos besoins.