diff --git a/HowtoHaproxy.md b/HowtoHaproxy.md index defec94d..f81c47cd 100644 --- a/HowtoHaproxy.md +++ b/HowtoHaproxy.md @@ -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.). -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**. - -On ajoute un service à xinetd, dans `/etc/xinetd.d/mysqlchk` : +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**. ~~~ -service mysqlchk { +# apt install xinetd +~~~ + +On ajoute un service à xinetd, dans `/etc/xinetd.d/mysqlchk` (droits: root:root 0644) : + +~~~ +service mysqlchk +{ flags = REUSE socket_type = stream port = 8306 @@ -274,12 +279,27 @@ service mysqlchk { log_on_failure += USERID disable = no 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} +#!/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_PORT="3306" MYSQL_USERNAME="mysqlchk" @@ -309,14 +329,16 @@ else 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} #!/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. ### HTTP basic authentication