Vous êtes ici:

Menu

Stacks Image 16850
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.
Stacks Image 17578
Etat du serveur Apache
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
Stacks Image 17423
Pas d'accès à server status
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 --credentials
ré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 --credentials
ré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 --credentials
ré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 --credentials
ré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 --credentials
ré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

Stacks Image 17339
création des macros
Centreon-Clapi
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

Stacks Image 17312
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.
Stacks Image 17263
le templates slotstates
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"
Stacks Image 17236
le templates workers
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"
Stacks Image 17208
le templates requests
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"
Stacks Image 17181
le templates responsetime
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"
Stacks Image 17152
le templates cpuload
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
Stacks Image 17114
le 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 :
Stacks Image 17074
Les services du module apps::apache::serverstatus::plugin
Stacks Image 17059
Les graphes présentés dans les widgets
Stacks Image 17041
Limiter les métriques
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;;;;
comments powered by Disqus
 Vous êtes ici: