Plus d'infos pour check mysql avancé

This commit is contained in:
jlecour 2017-09-19 10:34:56 +02:00
parent c217a234cf
commit 6fd64c2923

View file

@ -259,12 +259,17 @@ listen mysql 127.0.0.1:3306
On note l'option **httpchk** qui va permettre de faire un check en HTTP et vérifier des conditions avancées (réplication OK, etc.). On note l'option **httpchk** qui va permettre de faire un check en HTTP et vérifier des conditions avancées (réplication OK, etc.).
Un moyen simple (inspirés de ce [vieux blog post](http://sysbible.org/2008/12/04/having-haproxy-check-mysql-status-through-a-xinetd-script/)) est de créer un script qui sera déclenché par **xinetd**. Un moyen simple (inspiré de ce [vieux blog post](http://sysbible.org/2008/12/04/having-haproxy-check-mysql-status-through-a-xinetd-script/)) est de créer un script qui sera déclenché par **xinetd**.
On ajoute un service à xinetd, dans `/etc/xinetd.d/mysqlchk` :
~~~ ~~~
service mysqlchk { # apt install xinetd
~~~
On ajoute un service à xinetd, dans `/etc/xinetd.d/mysqlchk` (droits: root:root 0644) :
~~~
service mysqlchk
{
flags = REUSE flags = REUSE
socket_type = stream socket_type = stream
port = 8306 port = 8306
@ -274,12 +279,27 @@ service mysqlchk {
log_on_failure += USERID log_on_failure += USERID
disable = no disable = no
only_from = 192.0.2.0/27 only_from = 192.0.2.0/27
per_source = UNLIMITED
} }
~~~ ~~~
On crée le script a exécuter dans `/root/mysqlchk` : Il faut penser à ajuster la liste d'adresses IP autorisées dans `only_from`.
On ajoute la ligne suivante dans `/etc/services` :
~~~
mysqlchk 8306/tcp # mysqlchk
~~~
On crée le script à exécuter dans `/root/mysqlchk` (droits: root:root 0750) :
~~~{.bash} ~~~{.bash}
#!/bin/bash
# Créer un utilisateur limité pour ces checks :
# mysql> CREATE USER 'mysqlchk'@'localhost' IDENTIFIED BY 'PASSWORD';
# mysql> GRANT SHOW DATABASES ON *.* TO 'mysqlchk'@'localhost';
MYSQL_HOST="127.0.0.1" MYSQL_HOST="127.0.0.1"
MYSQL_PORT="3306" MYSQL_PORT="3306"
MYSQL_USERNAME="mysqlchk" MYSQL_USERNAME="mysqlchk"
@ -309,14 +329,16 @@ else
fi fi
~~~ ~~~
`/root/nrpe-check-mysql-slave.sh` : Puis le script de check mysql lui-même, par exemple `/root/nrpe-check-mysql-slave.sh` (droits: root:root 0750) :
~~~{.bash} ~~~{.bash}
#!/bin/sh #!/bin/sh
exec /usr/lib/nagios/plugins/check_mysql --check-slave -u debian-sys-maint -p PASSWORD -w 5 -c 60 exec /usr/lib/nagios/plugins/check_mysql -f /etc/mysql/debian.cnf --check-slave -w 5 -c 60
~~~ ~~~
On redémarre xinetd (surveiller `/var/log/syslog` pour d'éventuelles erreurs) et on pense à autoriser le port 8306 au niveau firewall depuis les IP concernées.
Il est également possible d'utiliser tout programme ou script, pourvu qu'au final il puisse être accessible en HTTP. Il est également possible d'utiliser tout programme ou script, pourvu qu'au final il puisse être accessible en HTTP.
### HTTP basic authentication ### HTTP basic authentication