systemx

Aller au contenu | Aller au menu | Aller à la recherche

mardi, novembre 3 2009

Configuration du plugin mysql pour nagios

Prérequis
J'ai déjà configuré mes hosts types, mes period, mes contacts. Je veux maintenant ajouter de facon simple le monitoring mysql pour certains hosts.

Pas à pas
  • Creation de l'utilisateur nagios sur la base cible
mysql> create database nagios ;
Query OK, 1 row affected (0.08 sec)
mysql> GRANT ALL ON nagios.* TO nagiosuser@ identified by '' ;
Query OK, 0 rows affected (0.23 sec)
mysql> flush privileges ;
Query OK, 0 rows affected (0.14 sec)
  • Verifier que le plugin fonctionne à partir du serveur nagios
nagios % check_mysql -P 3306 -u nagiosuser -p''  -H 
Uptime: 2753334 Threads: 2 Questions: 43815 Slow queries: 1196
Opens: 2889 Flush tables: 177 Open tables: 7 Queries per second avg: 0.15
  • configurer la 'command' avec les parametres ci dessus
define command{
command_name check_mysql
command_line $USER1$/check_mysql -H $HOSTADDRESS$ -P $ARG1$ -u $ARG2$ -p'$ARG3$'
}
  • Configurer la commande dans le service qui va bien
define service{
use local-service
hostgroup_name mysql-servers
service_description MYSQL
check_command check_mysql!3306!nagiosuser!MOTDEPASSE!
contact_groups mysql-services-admins
}
  • Enfin ajouter le service dans la definition du host (correspondance entre hostgroups)
define host{
host_name monhost
use mongroupe_primaire
hostgroups mysql-servers
check_period prod-period
address @IP
}

Voila qui fonctionne mais il serait préferable de pouvoir parametrer le plugin dans la definition du host final.
De plus le mot de passe apparait en clair lors de l'execution du plugin.
L'accès au serveur nagios étant restreint et les droits de nagiosuser limité ca devrait aller.

mardi, juin 23 2009

Compilation plugins nagios sous Solaris 10

Les plugins nagios compilent sans problème sous solaris 10 excepté check_mysql. La cause est la methode de creation des options de compilation lors du ./configure.
Solaris 10 dispose de packages mysql lors de l'install (SFW). Ceux ci sont compilés avec le Sun Studio et contiennent des flags incompatibles avec gcc. Faisant la compilation des plugins nagios avec gcc, ca plante immanquablement. Un moyen de résoudre le problème est d'utiliser une version des librairies et utilitaires de mysql compilés avec gcc. Pour ce faire il faut utiliser le package coolstack de sun. Ensuite bien positionner son environement :
Correct
plugins $ which mysql_config 
/opt/coolstack/mysql_32bit/bin/mysql_config
plugins $ mysql_config --cflags
-I/opt/coolstack/mysql_32bit/include/mysql -I/opt/coolstack/include -D_REENTRANT
-fPIC -DHAVE_RWLOCK_T -DUNIV_SOLARIS
Pas bon
plugins $ which mysql_config
/usr/sfw/bin/mysql_config
plugins $ mysql_config --cflags
-I/usr/sfw/include/mysql -xstrconst -mt
En effet le -xstrconst n'est pas reconnu par gcc. La compile plantera avec un message du genre :
gcc: language strconst not recognized
gcc: check_mysql.c: linker input file unused because linking not done
Finalement il reste à positionner son environement :
plugins $  env | grep PATH
LD_LIBRARY_PATH=/opt/coolstack/lib/:/usr/lib:/usr/sfw/lib

PATH=/opt/coolstack/mysql_32bit/bin/:/usr/sfw/bin/:/usr/bin:/bin:/usr/sbin:/usr/local/bin:/usr/ccs/bin
Et utiliser la commande suivante pour compiler le tout :
plugins $ ./configure --without-ipv6 --with-openssl=/usr/sfw/lib \
--with-ps-command="/usr/bin/ps -eo 's uid pid ppid vsz rss pcpu etime comm args'"\
--with-ps-format="%s %d %d %d %d %d %f %s %s %n" --with-ps-cols=10\
--with-ps-varlist='procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procetime,procprog,&pos'
plugins $ gmake
Les arguements à rallonge sur ps est pour faire comprendre la syntaxe de ps solaris à Nagios, ne pas utiliser ipV6 et donner la bonne lib ssl.