Nagios Plugins Monitoring

1

Hello, dans cet article, nous allons voir ensemble comment superviser des serveurs Windows, Linux, switchs, réseau…etc., en utilisant les Plugins Nagios. C’est des petits programmes compilés ou des scripts  (Python, Perl, Bash, PowerShell, Shell…etc), qui peuvent être exécutés en ligne de commande pour contrôler l’état d’un hôte ou d’un service. Il y a tout ce qu’il faut pour surveiller l’état de vos machines Windows, Linux…etc., et aussi des applications comme Exchange, Oracle, Base de données…etc.

Ce qu’il vous faut : 

Attention : Si vous avez déjà un Centreon en PROD, évitez d’installer sa librairie, vous risquez de flinguer votre Centreon. Passez par un serveur de test avant de passer à la PROD.

Création de commande Windows

Avant de créer ma commande sous Centreon, je check d’abord en ligne de commande depuis mon serveur Centreon pour vérifier le bon fonctionnement du plugin en question et de voir également ce qu’il propose comme option. On verra ça plus bas (step by step). N’oubliez pas de configurer SNMP sur le serveur distant.

  • Les plugins Nagios sont installés et se trouvent par défaut dans : /usr/lib/nagios/plugins
  • Le chemin est configuré par défaut sous Centreon et accessible depuis le menu : Configuration > Collecteurs > Ressources

Posez-vous les questions suivantes avant tout :

  • Ce que je veux superviser ? Windows, Linux, Network, Protocole, Process, BDD…etc.
  • Existe-t-il un plugin pour ? chercher le plugin sur le net
  • Ce qu’il peut faire le plugin ? toujours afficher de l’aide pour voir les options que propose le plugin
  • Check en ligne de commande : tester mon plugin en ligne de commande
  • Si Ok : création de commandes sous Centreon
    • Création d’hôte
    • Création de service

Remarque : les plugins que nous allons utiliser ici, sont déjà présents par défaut après l’installation de Centreon (sauf pour ESXi). La dernière version de Centreon ne propose plus ces plugins.

Ici, je veux superviser le CPU de mon serveur Windows . Aller dans le répertoire des plugins : cd /usr/lib/nagios/plugins

Afficher les plugins : ll ou ls -l

[root@pixelabs plugins]# ll
total 3628
...
-rwxrwxr-x 1 centreon centreon 3695 22 févr. 17:48 check_centreon_dummy
-rwxrwxr-x 1 centreon centreon 8955 22 févr. 17:48 check_centreon_MS_multiple_services
-rwxrwxr-x 1 centreon centreon 8010 22 févr. 17:48 check_centreon_ping
# -rwxrwxr-x 1 centreon centreon 7314 22 févr. 17:48 check_centreon_snmp_cpu
-rwxrwxr-x 1 centreon centreon 7572 22 févr. 17:48 check_centreon_snmp_loadaverage
-rwxrwxr-x 1 centreon centreon 11950 22 févr. 17:48 check_centreon_snmp_memory
-rwxrwxr-x 1 centreon centreon 8772 22 févr. 17:48 check_centreon_snmp_multiple_process
-rwxrwxr-x 1 centreon centreon 10014 22 févr. 17:48 check_centreon_snmp_packetErrors
-rwxrwxr-x 1 centreon centreon 8101 22 févr. 17:48 check_centreon_snmp_process
-rwxrwxr-x 1 centreon centreon 19728 22 févr. 17:48 check_centreon_snmp_process_detailed
-rwxrwxr-x 1 centreon centreon 17061 22 févr. 17:48 check_centreon_snmp_remote_storage
-rwxrwxr-x 1 centreon centreon 10334 22 févr. 17:48 check_centreon_snmp_string
-rwxrwxr-x 1 centreon centreon 6556 22 févr. 17:48 check_centreon_snmp_TcpConn
-rwxrwxr-x 1 centreon centreon 21394 22 févr. 17:48 check_centreon_snmp_traffic
-rwxrwxr-x 1 centreon centreon 7177 22 févr. 17:48 check_centreon_snmp_uptime
-rwxrwxr-x 1 centreon centreon 17237 22 févr. 17:48 check_centreon_snmp_value
...
...

Bon, c’est facile comme exemple, on voit déjà un plug-in pour check un CPU via le protocole SNMP. Plus bas, on a des plugins pour la charge (Load), la mémoire (Memory), les services (Process), traffic réseau…etc.

Et si je ne trouve pas mon plugin ? Et bien, ça arrivera un jour, dans ce cas, il y a Google mes amis, on ne peut pas tout avoir malheureusement… N’hésitez pas à faire des recherches, si un plugin ne fait pas ce qu’il faut ou le fait très mal, pensez à en chercher un autre…c’est ça l’open source mes amis, partez à la conquête. Vous pouvez aussi créer votre propre plugins bien entendu.

Certains plugin intègrent de l’aide que vous pouvez consulter afin de connaître la fonction de chaque paramètre :

[root@pixelabs plugins]# ./check_centreon_snmp_cpu -h
##############################################
# Copyright (c) 2004-2013 Centreon #
# Bugs to http://forge.centreon.com/ #
##############################################
Usage: ./check_centreon_snmp_cpu
This Plugin is design for return CPU percent on windows Serveurs (1 min Average)-H (--hostname) Hostname to query (required)
-C (--community) SNMP read community (defaults to public)
used with SNMP v1 and v2c
-v (--snmp-version) 1 for SNMP v1 (default)
2 for SNMP v2c
3 for SNMP v3
-P (--snmp-port) SNMP port (default: 161)
-k (--authkey) snmp V3 key
-u (--username) snmp V3 username
-p (--password) snmp V3 password
--authprotocol protocol MD5/SHA (v3)
--privprotocol encryption system (DES/AES)(v3)
--privpassword passphrase (v3)
--64-bits Use 64 bits OID
--maxrepetitions To use when you have the error: 'Message size exceeded buffer maxMsgSize'
Work only with SNMP v2c and v3 (Example: --maxrepetitions=1)
--snmp-timeout SNMP Timeout
-c (--critical) Three critical tresholds (defaults : 95)
-w (--warning) Three warning tresholds (defaults : 90)
-l Display only cpu average
-V (--version) Plugin version
-h (--help) usage help[root@pixelabs plugins]#

C’est un plugin classique et facile à utiliser. Il faut savoir que, beaucoup de plugins proposent plusieurs arguments, mais, utiliser simplement ce dont vous avez besoin pour superviser votre serveur, inutile de compliquer la vie pour rien…

Ici, nous avons besoin des arguments suivant :

  • -H : hôte Windows (on en aura toujours besoin)
  • -C : Communauté SNMP (toujours, par défaut c’est public)
  • -v : Version SNMP (toujours)
  • -P : Port SNMP (le plugin utilise le port par défaut : 161)
  • -k, -u, -p, authprotocol, privprotocol, privpassword : uniquement avec SNMP v3 (cette version requière toujours une authentification SSL). Pas besoin ici.
  • -w : Warning (pour un CPU, il le faut)
  • -c : Critical (pour un CPU, il le faut)

Commande Check-CPU

Voici donc la commande pour le CPU :

[root@pixelabs plugins]# ./check_centreon_snmp_cpu -H ad-server12 -C public -v 2 -w 80 -c 90
CPU utilization percentage : 7.75%|avg=7.75%;80;90;0;100 cpu0=16% cpu1=11% cpu2=3% cpu3=1%
[root@pixelabs plugins]#

La commande me renvoie bien l’utilisation du CPU ainsi que la moyenne (avg).

Remarque : Certains plugins fonctionnent pour Windows et Linux au même temps, n’hésitez donc pas à checker un host Linux.

Maintenant que ça fonctionne en ligne de commande, je peux donc :

  • Créer la commande sous Centreon web
  • Ajouter l’hôte Windows
  • Créer le service Check-CPU pour l’hôte
  • Exporter la configuration
  • Vérifier via Centreon

Pour info, mon Centreon est vide, je pars de zéro. Il n’y a aucune commande ni hôte ni service. C’est la première utilisation depuis l’installation de Centreon.

  • Allez dans : Configuration > Commandes > Ajouter
  • La ligne de commande sous Centreon commence par : le chemin du plugin > le plugin > les arguments pour le CPU, on a tout ce qu’il faut plus haut. Ma commande est donc :
$USER1$/check_centreon_snmp_cpu -H $HOSTADDRESS$ -C $_HOSTSNMPCOMMUNITY$ -v $_HOSTSNMPVERSION$ -w $ARG1$ -c $ARG2$

Explication :

  • $USER1$ = ce paramètre indique le chemin des Plugins à utiliser. Ici, Nagios plugins path (/usr/lib/nagios/plugins)
  • $HOSTADDRESS$ = ce paramètre récupère l’hôte définit sur Centreon (à définir lors de la création d’hôtes)
  • $_HOSTSNMPCOMMUNITY$ = ce paramètre récupère la communauté définit sur l’hôte (A définir lors de la création d’hôtes)
  • $_HOSTSNMPVERSION$ = ce paramètre récupère la version SNMP (à définir lors de la création d’hôtes)
  • $ARG1$ = argument 1 pour le Warning
  • $ARG2$ = argument 2 pour le Critical

Vous pouvez biensûr mettre directement les valeurs dans la commande : $USER1$/check_centreon_snmp_cpu -H $HOSTADDRESS$ -C public -v 2 -w 80 -c 90

Je n’aime pas perso, je reste sur la 1ère version.

  • Cliquez sur Décrire les arguments
  • Donnez un nom à vos deux arguments : ARG1 > Warning et ARG2 > Critical
  • Modèle Graphique : CPU

  • Validez la création de la commande.

Commande Check-ICMP

Avant de passer à la création d’un hôte Windows sous Centreon, il faut créer une autre commande pour l’hôte lui même. C’est le PING, que je vais nommer Check-Ping.

  • Même principe : Configuration > Commandes > Ajouter
  • Voici la commande pour le PING :
$USER1$/check_icmp -H $HOSTADDRESS$ -n $ARG1$ -w $ARG2$ -c $ARG3$

check_icmp = C’est un plugin qui se trouve au même endroit que les autres. n $ARG1$ = Nombre de paquets à envoyer.

  • Exemple d’arguments à l’ancienne (Nagios) : !3!200,20%!400,50%
  • Donnez une description aux arguments
  • Modèle graphique : Latency

  • Validez la création de la commande.

Création d’hôte Windows

Nous allons maintenant créer un hôte Windows et lui associer la commande Check-PING ci-dessus.

  • Ajouter un hôte depuis le menu : Configuration > hôte > Ajouter
    • Nom : Nom de votre serveur (nom DNS)
    • Alias : Ajouter une description
    • Ajouter le nom de la communauté SNMP (public, private…etc.), et choisir la version 2c : ces deux paramètres sont très importants.
    • Surveillé depuis le collecteur : En cas d’un collecteur satellite. On a que Central pour le moment.
    • Fuseau horaire / Localisation : Europe/Paris (important pour Centreon CLAPI = Export/Import)
    • Commande de vérification : Sélectionnez Check-Ping dans la liste, des arguments apparaissent dans la case grisée, cliquez sur la flèche bleue pour les appliquer en face.
    • Période de contrôle : En PROD il est préférable de mettre “workhours” (horaires de travail = du lundi au vendredi) la supervision s’arrête le weekend.
      • C’est modifiable bien sûr : Configuration > Utilisateurs > Périodes temporelles

  • Consultez les onglets (facultatif pour le moment) : Notification, Relation, Traitement de données, Informations détaillées de l’hôte.
  • Validez la création de l’hôte.
  • Redémarrer les collecteurs Central  pour prendre en compte ce qu’on vient de réaliser
  • Nous allons faire cette opération à chaque fois qu’on rajoute/modifier un hôte, service, commande…etc., alors je vais détailler la manipulation qu’une fois :

Exporter la configuration

Allez dans le menu :Configuration > Collecteurs (Pollers)

  • Cochez la case “Central”
  • Cliquez sur le bouton “Exporter la configuration” au-dessus.
  • Cochez les cases comme sur l’image ci-dessous, choisir la méthode “Redémarrer”
  • Cliquez sur “Exporter”

Remarque : un avertissement indique qu’aucun service n’est associé avec l’hôte qu’on vient de créer. C’est parfaitement normal et nous allons en faire Now. N’oubliez pas, quand je dis, redémarrez le collecteur Central, vous savez maintenant comment faire !

Si tout va bien, après quelques secondes, l’hôte passe en état UP (OK) :

Création Service Windows

Maintenant que notre hôte remonte bien dans Centreon, nous allons créer les services suivant pour notre hôte Windows :

  • Check-CPU
  • Check-Disk
  • Check-Memory
  • Check-Traffic
  • Check-Load
  • Check-HTTP/S
  • Check-Services

Service Check-CPU

Passons à la création d’un service pour notre hôte Windows (Check-CPU) : Configuration > Services > Ajouter

  • Description : Check-CPU
  • Lié aux hôtes : Sélectionnez l’hôte windows qu’on a crée précédemment = ad-server12
  • Modèle : Nothing pour le moment
  • Commande de vérification : Check-CPU
    • Deux arguments apparaissent :
      • Warning, mettez : 85
      • Critical, mettez : 95
  • Période de contrôle : workhours

Si le CPU dépasse ces valeurs (en %) l’alerte se déclenche.

  • Ajoutez le modèle graphique CPU depuis l’onglet : Informations complémentaires > Modèle de graphique : CPU
  • Validez la création de service et redémarrez le collecteur Central (voir plus haut :p ).
  • Aucun avertissement cette fois-ci et après quelques secondes, le service s’affiche et vous avez l’état du CPU de votre serveur.

Plongé dans un sommeil profond… 0%

  • Cliquez sur le nom de service Check-CPU pour voir plus d’information en détail (selon les pugins).
  • La commande exécutée ainsi que le graphique s’affichent tout en bas.

Service Check-Disk

Bon, je ne vais pas refaire un pavé rassurez-vous, pour le reste je vous donne les commandes directement.

Remarque : Mettez le nom d’hôte uniquement si vous avez un serveur DNS, sinon, mettez l’adresse IP directement dans la commande.

Check-Disk-C: – Check-Disk-E: Check-Disk-F: …etc. Ce que vous voulez. Le disque doit être présent sur le serveur bien sûr 🙂

[root@pixelabs plugins]# ./check_centreon_snmp_remote_storage -H ad-server12 -C pixelabs -v 2 -d "C:" -n -w 80 -c 90
Disk OK - C: TOTAL: 15.656GB USED: 9.617GB (61%) FREE: 6.039GB (39%)|size=16810766336B used=10326409216B;13448613068;15129689702;0;16810766336
[root@pixelabs plugins]#

Voici la commande :

Remarque : Il existe d’autres plugins. Il est important de décrire les arguments et les macros. Lors de la saisi des options depuis l’interface Centreon, vous saurez dans quelle case mettre les bons paramètres.

Service Check-Memory

Supervision de la mémoire RAM :

[root@pixelabs plugins]# ./check_centreon_snmp_memory -H ad-server12 -C pixelabs -v 2 -w 80 -c 90
Total memory used : 35% ram used : 37%, swap used 34% | used=1671102464o size=4696571904o
[root@pixelabs plugins]#

Voici la commande :

Service Check-Traffic

Supervision du traffic Windows, une ou plusieurs interfaces. Nous allons commencer par lister les interfaces disponible sur le serveur :

Lister d’abord les interfaces 

[root@pixelabs plugins]# ./check_centreon_snmp_traffic -H ad-server12 -C pixelabs -v 2 -s
...
Interface 11 :: Carte asynchrone RAS :: notPresent
# Interface 12 :: Carte Intel(R) PRO/1000 MT pour station de travail :: up
Interface 13 :: Carte Microsoft ISATAP :: down
...
[root@pixelabs plugins]#

Ici, c’est l’interface 12 (ID). Pour identifier l’interface utilisée,  voir directement sur votre serveur.

Remarque : si c’est une VM, regardez dans les options réseau de la VM.

Testons en ligne de commande :

[root@pixelabs plugins]# ./check_centreon_snmp_traffic  -H ad-server12 -C pixelabs -v 2 -i 12 -w 80 -c 90
First execution : Buffer in creation....
[root@pixelabs plugins]#

Attendez quelques secondes pour la création du buffer et relancer la commande :

[root@pixelabs plugins]# ./check_centreon_snmp_traffic  -H ad-server12 -C pixelabs -v 2 -i 12 -w 80 -c 90
Traffic In : 4.02 kb/s (0.0 %), Out : 183.01 b/s (0.0 %) |traffic_in=4020,0Bits/s;800000000;900000000;0;1000000000 traffic_out=183,0Bits/s;800000000;900000000;0;1000000000
[root@pixelabs plugins]#

Voici la commande pour Centreon web : Check-Traffic 

$USER1$/check_centreon_snmp_traffic -H $HOSTADDRESS$ -C $_HOSTSNMPCOMMUNITY$ -v $_HOSTSNMPVERSION$ -i $ARG1$ -w $ARG2$ -c $ARG3$

Modèle de graphique : traffic

Service Check-Load

Supervision de la charge du serveur :

[root@pixelabs plugins]# ./check_snmp_load.pl -H ad-server12 -C pixelabs -v 2 -w 80 -c 90 -T stand
OID : 1.3.6.1.2.1.25.3.3.1.1.2, Desc : 0.0
OID : 1.3.6.1.2.1.25.3.3.1.2.2, Desc : 0</br >
1 CPU, load 0.0% < 80% : OK
[root@pixelabs plugins]#

Si vous ne souhaitez pas voir les OID, supprimer la version SNMP, laissez simplement la communauté 

[root@pixelabs plugins]# ./check_snmp_load.pl -H 10.151.1.37 -C pixelabs -w 80 -c 90 -T stand
1 CPU, load 0.0% < 80% : OK
[root@pixelabs plugins]#

Voici la commande pour Centreon web : Check-load

$USER1$/check_snmp_load.pl -H $HOSTADDRESS$ -C $_HOSTSNMPCOMMUNITY$ -w $ARG1$ -c $ARG2$ -T $ARG3$

Modèle de graphique : Load_average

Pour voir les options pour l’argument -T, afficher de l’aide :

./check_snmp_load.pl -h

Service Check HTTP(S)

Supervision du protocole HTTP (ou un URL directement). Un serveur web (le rôle IIS) doit être installé sur votre serveur. 

Service Check-http :

[root@pixelabs plugins]# ./check_http -H ad-server12 -u / -p 80 -w 5 -c 10
HTTP OK: HTTP/1.1 200 OK - 967 octets en 0,002 secondes de temps de réponse |time=0,001720s;5,000000;10,000000;0,000000 size=967B;;;0
[root@pixelabs plugins]#

Service Check-https : vous devez générer un certificat auto-signé sous Windows Server 2012/2016

[root@pixelabs plugins]# ./check_http -H ad-server12 -u / -p 443 --ssl -w 5 -c 10
HTTP OK: HTTP/1.1 200 OK - 967 octets en 0,015 secondes de temps de réponse |time=0,014819s;5,000000;10,000000;0,000000 size=967B;;;0
[root@pixelabs plugins]#

Voici le nom de la commande : Check-http :

$USER1$/check_http -H $ARG1$ -u $ARG2$ -p $ARG3$

Voici le nom de la commande : Check-https :

$USER1$/check_http -H $ARG1$ -u $ARG2$ -p $ARG3$ --ssl

-u = URL/ = pour racine serveur web.

En cas de problème, mettez l’adresse IP directement pour l’argument 1, et passez les autres arguments en 1 et 2.

Remarque : pour HTTP, pas besoin de communauté SNMP. Il existe également d’autres plugins (Check-tcp, check_centreon_snmp_TcpConn…)

Service Check Services

Supervision des services Windows :

Check-DNS, DHCP, MySQL, Oracle, VMWare, WSUS, Java, Spouleur…etc. Tous les services Windows…etc.

Ce plugin est fait pour check directement le service DNS. Il est donc inutile de le préciser.

[root@pixelabs plugins]# ./check_dns -H ad-server12 -w 30 -c 60
DNS OK: 0,072 secondes de temps de réponse . 10.151.1.37 renvoie ad-server12.pixelabs.fr.|time=0,072483s;;;0,000000
[root@pixelabs plugins]#

Ce plugin permet de superviser n’importe quel service. Il faut donc préciser le service Windows à superviser.

[root@pixelabs plugins]# ./check_centreon_MS_multiple_services  -H ad-server12 -C pixelabs -v 2 -p "Serveur DNS" --maxrepetitions=1
ACTIVE : Serveur DNS
[root@pixelabs plugins]#

Voici le nom de la commande pour Centreon web : Check-DNS

$USER1$/check_dns -H $HOSTADDRESS$ -w $ARG3$ -c $ARG4$

Remarque : s’il y a plusieurs services, on peut rajouter le Warning et Critical.

Exemple : 4 services démarrés.

  • warning = 3 : s’il n’y a que 3 services, l’alerte warning se déclenche
  • critical = 2 : s’il n’y a qu’un seul service, l’alerte Critical se déclenche.

Nos commandes sont prêtes.

Windows Server Monitoring Command Centreon

Remarque : Il est déconseillé de mettre l’adresse IP directement dans la commande, vous ne pourrez pas utiliser la même commande pour d’autres host windows.

Exporter la configuration

Allez dans le menu :Configuration > Collecteurs (Pollers)

  • Cochez la case “Central”
  • Cliquez sur le bouton “Exporter la configuration” au-dessus.
  • Cochez les cases comme sur l’image ci-dessous, choisir la méthode “Redémarrer”
  • Cliquez sur “Exporter”

Résultat de la supervision

Vous avez les commandes, à vous maintenant de créer les autres services pour votre hôte Windows. Une fois terminé, exporter la configuration pour prendre en compte les nouveaux services.

Au final, ça donne ça :

Monitoring Windows Server Using Centreon

Si vous avez des erreurs de type :(No output returned from plugin)

  • Vérifiez bien votre commande
    • Après -H mettez l’adresse IP si vous n’avez pas de serveur DNS.
  • Vérifiez le service
  • La présence du plugin
  • Vérifiez les droits pour les plugins
  • Vérifiez l’user et le groupe
  • Après modification, relancer le collecteur Central.

Remarque : pour le traffic et le disque (Storage), il est parfois nécessaire de vider le répertoire suivant : /var/lib/centreon/centplugins/

Pour un serveur Linux, c’est la même chose, il faut juste choisir le bon plugin, afficher de l’aide et suivre les instructions. En cas de problème, laissez un commentaire, si je n’ai pas de solution, quelqu’un d’autre peut être 🙂

Voilà c’est terminé. Bonne journée et à  bientôt

La rédaction de cette documentation demande beaucoup de temps, de motivation, mais surtout beaucoup de café 🙂
Vous aimez pixelabs ?
Offrez moi un petit café en cliquant sur la tasse ci-dessous.
pixelans_donation
Merci !

1 réponse

  1. sysadmin sysadmin dit :

    Mise à jour de l’article.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *