Supervision Apache 2 avec mod_status et Centreon 3.0

Supervision d'un serveur Apache2 avec centreon 3 et modstatus.

Publié le 27/12/2014

A partir d'une installation de Centreon 3.0, on va mettre en place une sonde pour superviser les métriques Apache suivantes :

  • - Open slots
  • - TCP Port 80
  • - TCP Port 443

Les Open slots vont représenter le nombre de connexions qu'Apache va pouvoir prendre en charge simultanément. Si le serveur n'a aucune connexion occupée, la sonde va nous rapporter une valeur de 246 workers (connexions) disponibles. Si l'on consulte le fichier de configuration /etc/apache2/apache2.conf, dans la directive MaxClients on va voir qu'en fait Apache dispose réellement de 150 slots de connexions disponibles. On peut justifier la valeur de 246 connexions disponibles de la façon suivante : Apache dispose par défaut (valeur définie à la compilation) de 256 connexions disponibles et d'une valeur appelée MinSpareServers par défaut à 10 qui défini le nombre de worker lancés prêt à accueillir des connexions. En soustrayant MinSpareServers à 256 on obtient 246.

On va fixer comme seuil d'alerte 170 slots disponibles en warning et 120 en critical.

La surveillance de port 80 et 443 va nous permettre de déterminer si Apache est disponible sur les ports en questions.

Cet atelier va mettre en place une VM Centreon 3.0 sur CentOS 5.9 et une VM LAMP sur Debian 7.6.

VM LAMP : 192.168.0.1 VM Centreon : 192.168.0.2

1 - Activation de mod_status dans Apache et ajout de la directive dans le VHOST

On active les modules :

sudo a2enmod status sudo a2enmod info

On ajoute les adresses IP autorisées à accéder à l'URL /server-status, en configurant la directive Location comme suit :

sudo nano /etc/apache2/mods-enabled/status.conf


<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1 ::1 192.168.0.2
</Location>

On autorise donc Centreon à récupérer les infos de mod_status.

On redémarre Apache : service apache2 restart

On vérifie que mod_status fonctionne correctement en consultant sur la machine Apache, la page http://localhost/server-status :

lynx http://localhost/server-status

2 - Installation du plugin check_apachestatus

Téléchargement du plugin > http://exchange.nagios.org/components/com_mtree/attachment.php?link_id=1376&cf_id=24 On copie le fichier du plugin dans le repertoire /usr/lib/nagios/plugins/.

Installation de GCC, make pour pouvoir installer les dépendances de CPAN :

yum install make gcc

Installation des dépendances perl manquantes :

yum install -y perl-libwww-perl perl-Time-HiRes

Rendre le script check_apachestatus.pl executable :

chmod +x /usr/lib/nagios/plugins/check_apachestatus.pl

Test du script :

/usr/lib/nagios/plugins/check_apachestatus.pl -H 192.168.0.1 -w 170 -c 120

3 - Paramétrage du script check_apachestatus dans Centreon

On va se loguer sur l'admin de notre VM Centreon et déclarer le plugin/script dans l'onglet suivant : Configuration > Commands.

On clique sur "Add".

On paramètre les champs comme suit :

  • Command Name * = check_apache_status
  • Command Type = Check
  • Command Line = $USER1$/check_apachestatus.pl -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$
  • Enable shell = true

4 - Création de la sonde Apache status dans Centreon

4.1 - Configuration de l'hôte

Dans le menu "Configuration", on va cliquer sur l'onglet "Hosts" et y ajouter le serveur souhaité.

On va cliquer sur "Add" et configurer les paramètres de la façon suivante :

Général Information :

  • Host Name : web-srv
  • Alias : web-srv
  • IP : 192.168.0.1
  • Host Templates : cliquer sur add a template et choisir "Serveurs-Linux"

Puis on va cliquer sur "Save".

4.2 - Configuration du service

On va cliquer sur l'onglet "Service" du menu configuration et on va voir apparaitre la liste des services observés par hôte. A partir de la ligne qui concerne notre hôte web-srv, on va cocher les services suivants et les supprimer (dans le menu "more actions") :

  • - Disk
  • - Load
  • - Memory

Ensuite on cliquer sur "Add" et paramétrer de la façon suivante :

General Information :

  • Description : check_apachestatus
  • Service Template : generic-service

Service State :

  • Is volatile : Default
  • Check Period : 24*7
  • Check Command :  check_apachestatus
  • Args :
    • Warning : 170
    • Critical : 120
  • Max Check Attempts : 1
  • Normal Check Interval : 1
  • Retry Check Interval : 1
  • Active Checks Enabled : Default
  • Passive Checks Enabled : Default

Notification :

  • Notification Enabled : yes
  • Implied Contacts : add Supervisor
  • Notification Interval : 15
  • Notification Period : 24*7
  • Notification Type : Warning + Unknown + Critical + Flapping
  • First notification delay : 1

Ensuite on clique sur l'onglet "Relations" à coté de "Service Configuration".

On ajoute à "Linked with Hosts" notre hôte web-srv.

On finit en cliquant sur "Save".

On relance le poller de la façon suivante :

On retourne dans l'onglet "Monitoring Engines" du menu "Configuration" et on va générer la nouvelle configuration qui sera prise en compte après redémarrage du Monitoring Engines.

Dans la partie "Actions", on va cocher les cases suivantes :

  • - Generate Configuration Files
  • - Run monitoring engine debug (-v)
  • - Move Export Files

Et cliquer sur "Export".

Ensuite on va décocher ces options et juste cocher l'option : Restart Monitoring Engine et laisser la méthode sur restart. Puis on va de nouveau cliquer sur "Export".

4 - Création des sondes Apache port 80 et 443 dans Centreon

La sonde servant à superviser les ports TCP existe déjà dans Centreon.

On va créer un nouveau service dans Configuration > Service > Add et paramétrer de la version suivante :

General Information :

  • Description : Apache port 80
  • Service Template : generic-service

Service State :

  • Is volatile : Default
  • Check Period : 24*7
  • Check Command :  check_tcp
  • Args :
    • port : 80
    • warning : 1
    • critical : 1
  • Max Check Attempts : 1
  • Normal Check Interval : 1
  • Retry Check Interval : 1
  • Active Checks Enabled : Default
  • Passive Checks Enabled : Default

Notification :

  • Notification Enabled : yes
  • Implied Contacts : add Supervisor
  • Notification Interval : 15
  • Notification Period : 24*7
  • Notification Type : Warning + Unknown + Critical + Flapping
  • First notification delay : 1

On va procéder de la même façon pour le port 443 en changeant les paramètres suivants :

General Information :

  • Description : Apache port 443

Service State :

Args :

  • port : 443