Recherche de site Web

Comment créer des plugins Nagios avec Python sur Ubuntu 12.10


Introduction

Python est un processeur de commandes populaire disponible par défaut sur Linux.

Nous avons précédemment expliqué comment installer le serveur de surveillance Nagios sur Ubuntu 12.10 x64.

Cette fois, nous allons développer cette idée et créer des plugins Nagios en utilisant Python.

Ces plugins seront exécutés sur le VPS du client et seront lancés via NRPE.

Étape 1 - Installer NRPE sur le VPS client

apt-get install -y python nagios-nrpe-server
useradd nrpe && update-rc.d nagios-nrpe-server defaults

Étape 2 - Créez votre script Python

Il serait bon de garder vos plugins dans le même répertoire que les autres plugins Nagios (/usr/lib/nagios/plugins/ par exemple).

Pour notre exemple, nous allons créer un script qui vérifie l'utilisation actuelle du disque en appelant "df" depuis le shell, et déclenche une alerte si elle dépasse 85 %.

#!/usr/bin/python
import os, sys
used_space=os.popen("df -h / | grep -v Filesystem | awk '{print $5}'").readline().strip()

if used_space < "85%":
        print "OK - %s of disk space used." % used_space
        sys.exit(0)
elif used_space == "85%":
        print "WARNING - %s of disk space used." % used_space
        sys.exit(1)
elif used_space > "85%":
        print "CRITICAL - %s of disk space used." % used_space
        sys.exit(2)
else:
        print "UKNOWN - %s of disk space used." % used_space
        sys.exit(3)

Nous allons enregistrer ce script dans /usr/lib/nagios/plugins/usedspace.py et le rendre exécutable :

chmod +x /usr/lib/nagios/plugins/usedspace.py

L'ensemble du plugin Nagios NRPE se résume à l'utilisation de codes de sortie pour déclencher des alertes.

Vous introduisez votre niveau de logique dans le script, et si vous souhaitez déclencher une alerte (qu'elle soit OK, AVERTISSEMENT, CRITIQUE ou INCONNU) - vous spécifiez un code de sortie.

Référez-vous aux codes de sortie Nagios suivants :

Codes de sortie de Nagios

Code de SortieStatut
D'accord
1Avertissement
2CRITIQUE
3inconnue

Étape 3 - Ajoutez votre script à la configuration NRPE sur l'hôte client

Supprimez l'original /etc/nagios/nrpe.cfg et ajoutez les lignes suivantes :

log_facility=daemon
pid_file=/var/run/nagios/nrpe.pid
server_port=5666
nrpe_user=nrpe
nrpe_group=nrpe
allowed_hosts=198.211.117.251
dont_blame_nrpe=1
debug=0
command_timeout=60
connection_timeout=300
include_dir=/etc/nagios/nrpe.d/

command[usedspace_python]=/usr/lib/nagios/plugins/usedspace.py

Où 198.211.117.251 est notre serveur de surveillance des articles précédents. Changez-les avec vos propres valeurs.

Assurez-vous de redémarrer le service Nagios NRPE :

service nagios-nrpe-server restart

Étape 4 - Ajouter votre nouvelle commande aux vérifications Nagios sur le serveur de surveillance Nagios

Définir une nouvelle commande dans /etc/nagios/objects/commands.cfg

define command{
        command_name    usedspace_python
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c usedspace_python
        }

Comme vous pouvez le voir, il utilise NRPE pour établir des connexions TCP sur le port 5666 et exécuter la commande 'usedspace_python', que nous avons définie dans /etc/nagios/nrpe.cfg sur cet hôte distant.

Ajoutez cette vérification à votre fichier de configuration Nagios pour le VPS client.

Pour notre exemple, nous allons surveiller un serveur appelé UbuntuDroplet et éditer /etc/nagios/servers/UbuntuDroplet.cfg.

define service {
        use                             generic-service
        host_name                       UbuntuDroplet
        service_description             Custom Disk Checker In Python
        check_command                   usedspace_python
        }

Redémarrer Nagios :

service nagios restart

Vérifiez que la nouvelle vérification fonctionne :

Et vous avez terminé !