Le module apps correspond à la supervision de systèmes applicatifs comme Apache, Active-Directory, Tomcat et même Centreon. Tout d'abord, nous allons explorer le module pour Apache. Je remercie Quentin, pour son aide, sa réactivité et ses précieux conseils.
1 Le module apps::apache::serverstatus::plugin
Nous utiliserons une fonctionnalité d'Apache, il s'agit du module status permettant de connaître l'état d'un serveur Apache en temps réel. Nous devons d'abord activer cette fonctionnalité avant d'utiliser notre plugin.
1.1 Activation de server-status pour Apache < 2.4
Normalement le module status est activé par défaut. Si toutefois, ce n'était pas le cas, lancez la commande suivante sur votre serveur apache. redémarrez le serveur Apache.
a2enmod status service apache2 restart
Maintenant, nous allons configurer notre module. Insérez les lignes suivantes dans le fichier défini par défaut pour une configuration Debian qui se nomme /etc/apache2/sites-available/default.
ExtendedStatus On <IfModule mod_status.c> <Location /server-status> SetHandler server-status Order deny,allow </Location> </IfModule>
Rechargez la configuration d'Apache
service apache2 reload
1.1 Activation de server-status pour Apache >= 2.4
Normalement le module status est activé par défaut. Si toutefois, ce n'était pas le cas, lancez la commande suivante sur votre serveur apache. redémarrez le serveur Apache.
a2enmod status service apache2 restart
Maintenant, il suffit de rajouter éventuellement l’adresse IP de la station ou le réseau entier qui accédera à l’url. Dans notre exemple, ce sera le réseau local 192.168.0.0/24.
vi /etc/apache2/mods-enabled/status.conf
Modifions le fichier.
<IfModule mod_status.c> # Allow server status reports generated by mod_status, # with the URL of http://servername/server-status # Uncomment and change the "192.0.2.0/24" to allow access from other hosts. <Location /server-status> SetHandler server-status Require local Require ip 192.168.0.0/24 </Location> # Keep track of extended status information for each request ExtendedStatus On # Determine if mod_status displays the first 63 characters of a request or # the last 63, assuming the request itself is greater than 63 chars. # Default: Off #SeeRequestTail On <IfModule mod_proxy.c> # Show Proxy LoadBalancer status in mod_status ProxyStatus On </IfModule> </IfModule> # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Rechargez la configuration d'Apache
service apache2 reload
1.3 Vérification du fonctionnement
Vous pouvez accéder à la page server-status de votre serveur Apache avec cette adresse http://172.16.209.51/server-status dans le cas de notre maquette duchmol.
Vous avez la possibilité de rafraîchir automatiquement la page toutes les xx secondes, en utilisant la syntaxe suivante : http://172.16.209.51/server-status?refresh=10 (pour 10 secondes)
1.4 Un peu de sécurité (apache<2.4)
Tout cela est parfait, mais cette page est accessible à tout le monde. Il est conseillé de limiter l'accès au seul serveur de supervision. Editez le fichier de configuration d'Apache /etc/apache2/sites-available/default. Ajoutez deux lignes, la première pour interdire l'accès à tout le monde, la deuxième pour autoriser l'accès au serveur de supervision.
ExtendedStatus On <IfModule mod_status.c> <Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from 172.16.209.50 </Location> </IfModule>
Rechargez la configuration d'Apache et vérifiez d'un autre poste que vous n'avez pas accès à cette page.
service apache2 reload
Nous allons même rajouter une authentification pour accéder à cette page. Editez le fichier /etc/apache2/sites-available/default. Rajoutez les lignes encadrées par la directive Directory, puis créez votre fichier de mot de passe avec l'utilisateur supervision mdp centreon.
<IfModule mod_status.c> <Directory /var/www> AuthUserFile /var/www/.htpasswd_serverstatus AuthName "Veuillez vous identifier" AuthType Basic Require valid-user </Directory> <Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from 172.16.209.50 </Location> </IfModule>
htpasswd -c /var/www/.htpassword_serverstatus supervision New password: Re-type new password: Adding password for user supervision
Notre serveur Apache est configuré, nous pouvons passer à la partie supervision.
1.5 Découverte du plugin
Voici les principaux mode de supervision de ce plugin.
/usr/local/plugins/libexec/centreon_plugins.pl --plugin=apps::apache::serverstatus::plugin --list-mode
.... Modes Available: slotstates workers requests responsetime cpuload
Exemple d’utilisation du module apps::apache
Voici une liste d’exemples
/usr/local/plugins/libexec/centreon_plugins.pl --plugin=apps::apache::serverstatus::plugin --mode=slotstates --hostname=weblamp --username=supervision --password=centreon --credentialsrésultat
OK: Free slots: 250 | 'freeSlots'=250;;;0;256 'waiting'=5;;;; 'starting'=0;;;; 'reading'=0;;;; 'sending'=1;;;; 'keepalive'=0;;;; 'dns_lookup'=0;;;; 'closing'=0;;;; 'logging'=0;;;; 'gracefuly_finished'=0;;;; 'idle_cleanup_worker'=0;;;;
/usr/local/plugins/libexec/centreon_plugins.pl --plugin=apps::apache::serverstatus::plugin --mode=workers --hostname=weblamp --username=supervision --password=centreon --credentialsrésultat
OK: Busy workers: 1 Idle workers: 5 (Server Limit: 256 - 0 % Busy) | 'idle_workers'=5;;;0;256 'busy_workers'=1;;;0;256
/usr/local/plugins/libexec/centreon_plugins.pl --plugin=apps::apache::serverstatus::plugin --mode=requests --hostname=weblamp --username=supervision --password=centreon --credentialsrésultat
OK: BytesPerSec: 0.03 B AccessPerSec: 0.00 RequestPerSec: 0.31 BytesPerRequest: 973.08 B | 'avg_RequestPerSec'=0.31;;;0; 'bytesPerSec'=0.03B;;;0; 'avg_bytesPerRequest'=973.083B;;;0; 'avg_bytesPerSec'=301.074B;;;0; 'accessPerSec'=0.00;;;0;
/usr/local/plugins/libexec/centreon_plugins.pl --plugin=apps::apache::serverstatus::plugin --mode=responsetime --hostname=weblamp --username=supervision --password=centreon --credentialsrésultat
OK: Response time 0.065061s | 'time'=0.065061;;;;
/usr/local/plugins/libexec/centreon_plugins.pl --plugin=apps::apache::serverstatus::plugin --mode=cpuload --hostname=weblamp --username=supervision --password=centreon --credentialsrésultat
OK: CPU Load: 0.03 % | 'cpuload'=0.03%;;;0;
2 Configuration du plugin dans Centreon
Passons à la configuration de Centreon. Nous utiliserons les macros personnalisées pour réaliser la configuration.
2.1 Macros Personnalisées
Centreon-Clapi
Création des macros personnalisées avec mon script que vous trouverez ici.
Création des macros personnalisées avec mon script que vous trouverez ici.
./create_macrocustom.sh _HOSTSNMPCOMMUNITY 0 Central "Custom Macro"
./create_macrocustom.sh _SERVICEUSERNAME 0 Central "Custom Macro"
./create_macrocustom.sh _SERVICEPASSWORD 0 Central "Custom Macro"
./create_macrocustom.sh _SERVICEWARNING 0 Central "Custom Macro"
./create_macrocustom.sh _SERVICECRITICAL 0 Central "Custom Macro"
./create_macrocustom.sh _SERVICEMODE 0 Central "Custom Macro"
./create_macrocustom.sh _SERVICEOPTION 0 Central "Custom Macro"
./create_macrocustom.sh _SERVICEPLUGIN 0 Central "Custom Macro"
2.2 La commande check_centreon_plugin_apps
$USER1$/centreon_plugins.pl --plugin=$_SERVICEPLUGIN$ --hostname=$HOSTADDRESS$ --mode=$_SERVICEMODE$ --username=$_SERVICEUSERNAME$ --password=$_SERVICEPASSWORD$ --warning=$_SERVICEWARNING$ --critical=$_SERVICECRITICAL$ $_SERVICEOPTION$
Centreon-Clapi
./centreon -u admin -p password -o CMD -a ADD -v 'check_centreon_plugin_apps;check;$USER1$/centreon_plugins.pl --plugin=$_SERVICEPLUGIN$ --hostname=$HOSTADDRESS$ --mode=$_SERVICEMODE$ --username=$_SERVICEUSERNAME$ --password=$_SERVICEPASSWORD$ --warning=$_SERVICEWARNING$ --critical=$_SERVICECRITICAL$ $_SERVICEOPTION$’
2.3 Les templates de service pour le module apps::apache::serverstatus::plugin
Voici les cinq templates pour ce module, merci à Manu pour la saisie des commandes Clapi. Vous noterez le paramètre 1 à la suite de la macro PASSWORD permettant le masquage du champ dans la configuration Centreon.
Centreon-Clapi
clapi -o STPL -a add -v "modele_slotstate;slotslate;Model-service-active"
clapi -o STPL -a setparam -v "modele_slotstate;check_command;check_centreon_plugin_apps"
clapi -o STPL -a setmacro -v "modele_slotstate;PLUGIN;apps::apache::serverstatus::plugin"
clapi -o STPL -a setmacro -v "modele_slotstate;USERNAME;supervision"
clapi -o STPL -a setmacro -v "modele_slotstate;PASSWORD;centreon;1"
clapi -o STPL -a setmacro -v "modele_slotstate;MODE;slotstates"
clapi -o STPL -a setmacro -v "modele_slotstate;CRITICAL;50"
clapi -o STPL -a setmacro -v "modele_slotstate;WARNING;100"
Centreon-Clapi
clapi -o STPL -a add -v "modele_workers;Workers;Model-service-active"
clapi -o STPL -a setparam -v "modele_workers;check_command;check_centreon_plugin_apps"
clapi -o STPL -a setmacro -v "modele_workers;PLUGIN;apps::apache::serverstatus::plugin"
clapi -o STPL -a setmacro -v "modele_workers;USERNAME;supervision"
clapi -o STPL -a setmacro -v "modele_workers;PASSWORD;centreon;1"
clapi -o STPL -a setmacro -v "modele_workers;MODE;workers"
clapi -o STPL -a setmacro -v "modele_workers;CRITICAL;90"
clapi -o STPL -a setmacro -v "modele_workers;WARNING;80"
Centreon-Clapi
clapi -o STPL -a add -v "modele_requests;Requests;Model-service-active"
clapi -o STPL -a setparam -v "modele_requests;check_command;check_centreon_plugin_apps"
clapi -o STPL -a setmacro -v "modele_requests;PLUGIN;apps::apache::serverstatus::plugin"
clapi -o STPL -a setmacro -v "modele_requests;USERNAME;supervision"
clapi -o STPL -a setmacro -v "modele_requests;PASSWORD;centreon;1"
clapi -o STPL -a setmacro -v "modele_requests;MODE;requests"
clapi -o STPL -a setmacro -v "modele_requests;CRITICAL;1"
clapi -o STPL -a setmacro -v "modele_requests;WARNING;0.5"
Centreon-Clapi
clapi -o STPL -a add -v "modele_responsetime;Responsetime;Model-service-active"
clapi -o STPL -a setparam -v "modele_responsetime;check_command;check_centreon_plugin_apps"
clapi -o STPL -a setmacro -v "modele_responsetime;PLUGIN;apps::apache::serverstatus::plugin"
clapi -o STPL -a setmacro -v "modele_responsetime;USERNAME;supervision"
clapi -o STPL -a setmacro -v "modele_responsetime;PASSWORD;centreon;1"
clapi -o STPL -a setmacro -v "modele_responsetime;MODE;responsetime"
clapi -o STPL -a setmacro -v "modele_responsetime;CRITICAL;1"
clapi -o STPL -a setmacro -v "modele_responsetime;WARNING;0.5"
Centreon-Clapi
clapi -o STPL -a add -v "modele_cpuload;Cpuload;Model-service-active"
clapi -o STPL -a setparam -v "modele_cpuload;check_command;check_centreon_plugin_apps"
clapi -o STPL -a setmacro -v "modele_cpuload;PLUGIN;apps::apache::serverstatus::plugin"
clapi -o STPL -a setmacro -v "modele_cpuload;USERNAME;supervision"
clapi -o STPL -a setmacro -v "modele_cpuload;PASSWORD;centreon;1"
clapi -o STPL -a setmacro -v "modele_cpuload;MODE;cpuload"
clapi -o STPL -a setmacro -v "modele_cpuload;CRITICAL;90"
clapi -o STPL -a setmacro -v "modele_cpuload;WARNING;80"
Ces cinq templates seront rattachés au template d'hôte Apps_ServerStatus
Centreon-Clapi
./centreon -u admin -p password -o HTPL -a add -v "Apps_ServerStatus;Apps_ServerStatus;;;Central;"
./centreon -u admin -p password -o STPL -a addhost -v "modele_slotstates;Apps_ServerStatus"
./centreon -u admin -p password -o STPL -a addhost -v "modele_workers;Apps_ServerStatus"
./centreon -u admin -p password -o STPL -a addhost -v "modele_requests;Apps_ServerStatus"
./centreon -u admin -p password -o STPL -a addhost -v "modele_cpuload;Apps_ServerStatus"
./centreon -u admin -p password -o STPL -a addhost -v "modele_responsetime;Apps_ServerStatus"
2.4 Résultats dans l'interface de Centreon
On applique ce template à notre hôte, dans l'exemple weblamp (maquette duchmol). Et voici le résultat :
Comme vous pouvez le constater, certains modes du plugin génèrent de nombreuses métriques (requests 5 métriques, slotstates 11métriques). Vous pouvez réduire ce nombre grâce à l'option --filter-perfdata. Il suffira de renseigner cette option avec une expression régulière pour obtenir les métriques choisies.
Exemple : nous voulons seulement les données de performances freeSlots et keepalive de slotstates. Configurez l'option comme ceci :
--filter-perfdata='^f|^k'
Ce qui nous donnera le résultat suivant :
/usr/local/plugins/libexec/centreon_plugins.pl --plugin=apps::apache::serverstatus::plugin
--mode=slotstates --hostname=weblamp --username=supervision --password=centreon --credentials
--warning=100: --critical=50: --filter-perfdata='^f|^k'
OK: Free slots: 246 | 'freeSlots'=246;100:;50:;0;256 'keepalive'=0;;;;