Auteur:
NicoLargo

Date:
16/10/2008

Catégories:
Open-source
Reseau
Systeme

Tags:



Supervision d’Asterisk avec Nagios

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 SourceForge ou vous pouvez télécharger la dernière version disponible de Nagisk.

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.1.tgz

Puis on copie le script Perl dans le répertoire des plugins Nagios:

cd nagisk

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

command[check_asterisk_zaptel]=/usr/local/nagios/libexec/nagisk.pl -c zaptel

command[check_asterisk_span]=/usr/local/nagios/libexec/nagisk.pl -c span -s 1

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
}

define service{
use                     generic-service
host_name               sip
service_description     Check Zaptel card
servicegroups           sip
check_command           check_nrpe!check_asterisk_zaptel
}

define service{
use                     generic-service
host_name               sip
service_description     Check Zaptel Span 1
servicegroups           sip
check_command           check_nrpe!check_asterisk_span
}

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.

17 commentaires


  1. plop, le 27/11/2008 (#5404)

    L’archive V 1.1est toute cassée :’(


  2. NicoLargo, le 27/11/2008 (#5405)

    Exact… bizarre… je viens de mettre la version 1.1 en ligne (sous le nom 1.1.1)…

    A+


  3. plop, le 27/11/2008 (#5407)

    Merci pour la réponse rapide :o


  4. Francois Gelinas, le 27/11/2008 (#5408)

    est-ce qu’il y a possibilite de setup -w 20 -c 22 au monitoring du zap ?

    ou -w 50 -c 55 au channels

    Ce qui resemblerait aux autres plugins.

    (-w warning -c critical)


  5. ruth, le 25/02/2009 (#6042)

    J’ai effectué la démarche décrite ci-dessus, mais il me montre le résultat suivant:

    NRPE: Unable to read output

    Comment pourrait-il?
    Je vous remercie à l’avance.


  6. champion, le 25/02/2009 (#6043)

    bjr, je reviens vers vous parce que j’ai un souci. j’ai suivi le tuto mais j’ai comme retour l’interface web nagios:
    CHECK_NRPE: Error receiving data from daemon.

    je galère depuis un moment.

    Merci


  7. champion, le 13/03/2009 (#6125)

    un “make distclean” et une bonne réinstallation et tout fonctionne.

    Un autre souci, je n’arrive pas à obtenir les graphes du plugin nagisk (tout comme Total_process) avec PNP??

    Quelqu’un aurait une idée. Merci


  8. voipcrazy, le 18/03/2009 (#6146)

    Why if I try to execute the pluggin I get that in an asterisk machine.

    /usr/local/nagios/libexec/nagisk.pl -c channels
    -su: /usr/local/nagios/libexec/nagisk.pl: cannot execute binary file

    And that on the Nagios Machine (using nrpe), I get:

    NRPE: Unable to read output

    The perms are ok:

    -rwxr-x— 1 nagios nagios 468 2009-02-25 13:51 /usr/local/nagios/libexec/nagisk.pl

    In /etc/sudoers I have;

    nagios ALL=NOPASSWD: /usr/sbin/asterisk

    Nagios service is running under nagios user.

    Why I am getting this error?
    How could I solve that?
    Any clue will be wellcomed


  9. SUIKOX, le 31/03/2009 (#6217)

    j’ai mis le 1.1 est-ce qu’il fonctionne bien ou dois-je mettre le 1.1.1 ?

    là je viens de l’installer et il me met les services en UNKNOW

    dans Status Information j’ai : Invalid host name ‘-c’

    -c c’est pas pour critical ?


  10. Francois Gelinas, le 22/04/2009 (#6289)

    Apres avoir fait l’installation tel que decrite ci-dessus, j’obtien moi aussi un “unable to read output” lorsque j’execute le nrpe local, mais j’ai un output correcte lorsque j’execute le nagisk.pl directement.

    Quelle est le probleme ?


  11. SUIKOX, le 7/05/2009 (#6331)

    Bonjour,

    j’ai du réinstaller la sonde NRPE, et les services nagisk et bizarre le check sip fonctionne mais le check channels et le check peers ne fonctionne pas ils me mettent :

    NRPE: Unable to read output

    et pourtant j’ai bien suivi le tuto ????


  12. Jens, le 18/05/2009 (#6383)

    What am I doing wrong?

    office-4-3 is the computer running nagios

    checking plugins via check_nrpe

    office-4-3:/usr/local/nagios/etc/objects# /usr/local/nagios/libexec/check_nrpe -H 192.168.14.254
    NRPE v2.12
    office-4-3:/usr/local/nagios/etc/objects# /usr/local/nagios/libexec/check_nrpe -H 192.168.14.254 -c check_users
    USERS OK – 1 users currently logged in |users=1;5;10;0

    checking nagisk via check_nrpe

    office-4-3:/usr/local/nagios/etc/objects# /usr/local/nagios/libexec/check_nrpe -H 192.168.14.254 -c check_asterisk_version
    NRPE: Unable to read output

    astdia is the remote computer running nrpe via xinetd

    checking nagisk bypassing nrpe:

    astdia:/usr/local/nagios/etc# /usr/local/nagios/libexec/nagisk.pl -c version
    Asterisk 1.4.21 built by root @ astdia on a x86_64 running Linux on 2009-02-04 23:04:27 UTC
    astdia:/usr/local/nagios/etc# /usr/local/nagios/libexec/nagisk.pl -c channels
    609 active SIP channels

    checking plugin via check_nrpe

    astdia:~# /usr/local/nagios/libexec/check_nrpe -H localhost -c check_users
    USERS OK – 1 users currently logged in |users=1;5;10;0

    checking nagisk via check_nrpe

    astdia:~# /usr/local/nagios/libexec/check_nrpe -H localhost -c check_asterisk_version
    NRPE: Unable to read output

    Is nagisk compatible with NRPE v2.12?


  13. Ruth, le 20/05/2009 (#6415)

    Pourquoi lorsque j’essaie d’exécuter le plug-in que je reçois un astérisque dans la machine.

    / usr / local / nagios / libexec / nagisk.pl-c canaux
    -su: / usr / local / nagios / libexec / nagisk.pl: ne peut pas exécuter de fichier binaire

    Et que, sur la machine Nagios (en utilisant nrpe), j’obtiens:

    NRPE: Impossible de lire la sortie

    Les permanentes sont ok:

    -rwxr-x — 1 nagios nagios 468 2009-02-25 13:51
    / usr / local / nagios / libexec / nagisk.pl

    Dans le fichier / etc / sudoers J’ai;

    nagios ALL = NOPASSWD: / usr / sbin / asterisk

    Nagios service est en cours d’exécution en vertu de l’utilisateur nagios.

    Pourquoi je reçois ce message d’erreur?
    Comment pourrais-je résoudre cela?
    Toute idée sera wellcomed


  14. Cédric, le 14/10/2009 (#6978)

    J’aile même problème que celui cité ci-dessus :

    nagios-cedric:/usr/local/nagios/libexec# ./check_nrpe -H 10.10.10.42 -c check_asterisk_version
    NRPE: Unable to read output


  15. Glenn, le 7/12/2009 (#7325)

    This works great on the remote asterisk box when running the command from terminal. When it is plugged in to the main Nagios box i get the following error

    NRPE: Unable to read output

    Any ideas why this would be.

    Great work by the way


Laisser un message

Les informations saisies resteront privées.