www.RiffZone.net
code.RiffZone.net
login.RiffZone.net
Retour au Sommaire

Redémarrer automatiquement MySQL avec Monit

Sans vouloir être plus mauvaise langue que d'habitude, inviter WordPress sur son serveur l'expose à un tas de problèmes, qu'ils soient liés ou non à des attaques extérieures. Passer de zéro plantages à un par semaine laisse pour le moins perplexe.

Quelle que soit la cause, au final, on peut vouloir faire surveiller son MySQL par un superviseur indépendant, lequel le relancera si besoin; différentes solutions existent, je décrirai ici l'utilisation de monit, qui a largement fait ses preuves.

L'installation est on ne peut plus classique:

apt-get install monit

Monit bénéficie d'une interface web intégrée mais laissons-la de côté pour le moment, on veut d'abord pouvoir communiquer avec monit via la ligne de commande; il se trouve que pour ça il va falloir de toutes manières activer l'interface http, le client monit l'utilise pour dialoguer avec le démon.

Dans le fichier '/etc/monit/monitrc', décommentez les deux lignes suivantes:

# set httpd port 2812 and # allow localhost

Puis appliquez les modifications avec la commande suivante:

monit reload

Vous pouvez maintenant utiliser la ligne de commande suivante:

monit status

Vous obtiendrez un résultat de ce style:

The Monit daemon 5.9 uptime: 0m System 'lorien.riffzone.net' status Running monitoring status Monitored load average [0.00] [0.01] [0.05] cpu 0.1%us 0.1%sy 0.0%wa memory usage 243.5 MB [49.2%] swap usage 0.0 B [0.0%] data collected Mon, 01 Jan 2018 16:11:56

Maintenant que monit est opérationnel, apprenons-lui à surveiller MySQL. Il se trouve qu'un superviseur MySQL fait déjà partie du package monit, voici le détail du fichier de configuration monit correspondant:

check process mysqld with pidfile /var/run/mysqld/mysqld.pid group database group mysql start program = "/etc/init.d/mysql start" stop program = "/etc/init.d/mysql stop" if failed host localhost port 3306 protocol mysql with timeout 15 seconds for 3 times within 4 cycles then restart if failed unixsocket /var/run/mysqld/mysqld.sock protocol mysql for 3 times within 4 cycles then restart if 5 restarts with 5 cycles then timeout depend mysql_bin depend mysql_rc check file mysql_bin with path /usr/sbin/mysqld group mysql include /etc/monit/templates/rootbin check file mysql_rc with path /etc/init.d/mysql group mysql include /etc/monit/templates/rootbin

Pour l'activer, il suffit de créer un lien symbolique vers ce fichier de configuration, que l'on placera dans '/etc/monit/conf.d', puis de valider les modifications comme précédemment:

ln -s /etc/monit/monitrc.d/mysql /etc/monit/conf.d/mysql monit reload

Relancez la commande 'monit status' et examinez les nouveaux résultats, MySQL est maintenant monitoré comme voulu.

Les automatismes c'est bien, être notifié c'est mieux. Dans le fichier '/etc/monit/monitrc', ajoutez la ligne suivante:

set alert admin@monsite.com

en remplaçant bien sûr 'admin@monsite.com' par votre propre adresse mail. Validez comme d'habitude les changements par la commande 'monit reload' et c'est fait, vous serez notifié à chaque alerte.