Supervision MySQL avec le plugin check_mysql_health et Centreon 3.0

Mise en place d'une dupervision MySQL avec le plugin check_mysql_health et Centreon 3.0.

Publié le 27/12/2014

A partir d'une installation de Centreon 3.0, on va mettre en place un ensemble de sondes pour un serveur MySQL.

Cet atelier va mettre en place une VM Centreon 2.2 sur CentOS 5.9 et une VM Apache 2 sur Debian 7.6.

  • VM LAMP : 192.168.0.1
  • VM Centreon : 192.168.0.2

1 - Installation du plugin check_mysql_health

On télécharge le plugin :

http://exchange.nagios.org/directory/Plugins/Databases/MySQL/check_mysql_health/details

Installation de GCC :

yum install make gcc

On upload le plugin sur le serveur centreon :

scp check_mysql_health-2.1.3.tar.gz root@192.168.0.1

Sur le serveur centreon on va compiler le plugin :

 


cd /home
tar -xvzf check_mysql_health-2.1.3.tar.gz
cd check_mysql_health-2.1.3
[@todo OLD ./configure --prefix=/usr/lib/nagios/plugins/ --with-nagios-user=nagios --with-nagios-group=nagios --with-perl=/usr/bin/perl --with-statefiles-dir=/tmp]
./configure
make
make install

 

3 - Paramétrage de MySQL sur le serveur LAMP

3.1 - Autorisation des connections distantes pour MySQL

Edition du fichier de configuration de MySQL :

nano /etc/mysql/my.cnf

On va commenter les paramètres suivants en ajoutant un "#" devant chaque instruction :

 


skip-networking
bind-address

 

3.2 - Création d'un utilisateur mysql pour le monitoring sur le serveur LAMP

Création de l'utilisateur mysql :

mysql -u root -p


GRANT ALL PRIVILEGES ON *.* TO 'centreon'@'IP_SERVER' IDENTIFIED BY 'qqqqqq' WITH GRANT OPTION;
FLUSH PRIVILEGES;

 

4 - Test du plugin via le shell

On test le plugin pour la métrique connection_time dans le shell du serveur centreon :

 


cd /usr/local/nagios/libexec/
./check_mysql_health --hostname 176.31.181.87 --username centreon --password PASSWORD --mode connection-time

 

Ce dernier doit nous retourner un affichage des données de supervisées :

OK - 0.17 seconds to connect as centreon | connection_time=0.1722s;1;5

5 - Création du monitoring MySQL avec le plugin MySQL Health

On va créer un connecteur pour les plugins compilés :

Dans la barre de menu principale, on clique sur : Configuration > Monitoring Engines > ressources.

Ressources se trouve dans le volet gauche une fois arrivé dans la page Monitoring Engines.

On ajoute une nouvelle ressource que l’on va configurer comme suit :

  • Resource Name : $USER2$
  • MACRO Expression : /usr/local/nagios/libexec/
  • Linked Instances : Add > Central
  • Status : Enabled
  • Comment : path to the compiled plugins

Ensuite on va ajouter une "Commands" :

Dans la barre de menu principale, on clique sur : Configuration > Commands > Add.

On Ajoute la configuration suivante :

Command Name : mysql_health Command Type : Check Command Line : $USER2$/check_mysql_health --hostname $HOSTADDRESS$ --username $ARG1$ --password $ARG2$ --mode $ARG3$ --warning $ARG4$ --critical $ARG5$

Cliquer sur "describe argument" et documenter comme suit :

  • $ARG1$ : username
  • $ARG2$ : password
  • $ARG3$ : mode
  • $ARG4$ : warning
  • $ARG5$ : critical

On va ensuite créer des services pour la supervision de nos métriques MySQL.

Pour créer un nouveau service, on clique sur Configuration > Services > Add.

Dans l'onglet "Service Configuration" on saisit les informations afférentes au contrôle souhaité qui sera décrit après.

Dans l'onglet Relations on ajouter l'hôte à superviser.

On va ajouter des services de supervisions pour les métriques suivantes :

Chaque service en commun les paramètres suivants :

  • Service Template : generic-service
  • Check Command : mysql_health
  • Is Volatile : Default
  • Check Period : 27*7
  • Args :
    • username : centreon
    • password : PASSWORD
  • Max Check Attempts : 3
  • Normal Check Interval : 1
  • Retry Check Interval : 1
  • Active Checks Enabled : Default
  • Passive Checks Enabled : Default

- Connection time :

Description : Mysql - connection-time Args : mode : connection-time warning : 1 critical : 2

- Index usage :

  • Description : Mysql - index-usage
  • Args :
    • mode : index-usage
    • warning : 70
    • critical : 80

- Innodb bufferpool hitrate :

  • Description : Mysql - innodb-bufferpool-hitrate
  • Args :
    • mode : innodb-bufferpool-hitrate
    • warning : 70
    • critical : 80

- Innodb bufferpool wait free :

  • Description : Mysql - innodb-bufferpool-wait-free
  • Args :
    • mode : innodb-bufferpool-wait-free
    • warning : 70
    • critical : 80

- Innodb log waits :

  • Description : Mysql - innodb-log-waits
  • Args :
    • mode : innodb-log-waits
    • warning : 1
    • critical : 2

- Long Running Procs :

  • Description : Mysql - long-running-procs
  • Args :
    • mode : long-running-procs
    • warning : 1
    • critical : 2

- Myisam Keycache Hitrate :

  • Description : Mysql - myisam-keycache-hitrate
  • Args :
    • mode : myisam-keycache-hitrate
    • warning : 70
    • critical : 80

- Querycache Hitrate :

  • Description : Mysql - querycache-hitrate
  • Args :
    • mode : querycache-hitrate
    • warning : 70
    • critical : 80

- Querycache Lowmem Prunes :

  • Description : Mysql - querycache-lowmem-prunes
  • Args :
    • mode : querycache-lowmem-prunes
    • warning : 70
    • critical : 80

- Slow Queries :

  • Description : Mysql - slow-queries
  • Args :
    • mode : slow-queries
    • warning : 1
    • critical : 2

- Tablecache Hitrate :

  • Description : Mysql - tablecache-hitrate
  • Args :
    • mode : tablecache-hitrate
    • warning : 70
    • critical : 80

- Table Lock Contention :

  • Description : Mysql - table-lock-contention
  • Args :
    • mode : table-lock-contention
    • warning : 20
    • critical : 50

- Threadcache Hitrate :

  • Description : Mysql - threadcache-hitrate
  • Args :
    • mode : threadcache-hitrate
    • warning : 20
    • critical : 50

- Threads Connected :

  • Description : Mysql - threads-connected
  • Args :
    • mode : threads-connected
    • warning : 50
    • critical : 70

- Tmp Disk Tables :

  • Description : Mysql - tmp-disk-tables
  • Args :
    • mode : tmp-disk-tables
    • warning : 50
    • critical : 70

- Uptime :

Pour ce contrôle on va créer une commande dédiée sans arguments pour les champs "warning" et critcal.

  • Description : Mysql-up-time
  • Args :
    • mode : uptime

Une fois les services crées, redémarrer le poller dans l'onglet Configuration > Monitoring Engines. Puis sélectionner dans les actions : "Move Export Files" et "Restart Monitoring Engine" et cliquer sur "Export".

6 - Monitoring du port 3306

A l'aide des outils standards fournis dans Centreon, on va superviser le port 3306 de MySQL.

Pour cela on créer un nouveau service dans Configuration > Services > Add.

Puis on le configure comme suit :

  • Description : check_mysql
  • Service Template : generic-service
  • Check Period : 24*7
  • Check Command : check_tcp
  • Args :
    • Port : 3306
    • Warn : 1
    • Critical : 2
  • Max Check Attempts : 3
  • Normal Check Interval : 1
  • Retry Check Interval : 1

Ajouter la machine à relier au service dans l'onglet "Relations" et redémarrer le poller comme expliqué à la fin dans l'étape précedente.