Ceci est une ancienne révision du document !
Table des matières
monit
Installation
On lance un :
portugrade -N sysutils/monit
Configuration
Un fichier d'exemple est fourni dans /usr/local/etc/monitrc.sample, cependant les exemples fournis sont plutôt adaptés à linux.
On commence donc par copier le fichier d'exemple :
cp /usr/local/etc/monitrc.sample /usr/local/etc/monitrc
On pour le fonctionnement de base de monit on édite les lignes suivantes :
set daemon 60 # check services at 2-minute intervals set logfile syslog facility log_daemon set statefile /var/.monit.state set mailserver localhost # primary mailserver set httpd port 2812 allow md5 /chemin/vers/un/fichier/.htpasswd
On génère un mot de passe :
htpasswd -b /chemin/vers/un/fichier/.htpasswd utilisateur mot_de_passe
Cela crée un fichier .htpasswd à l'endroit indiqué contenant le nom d'utilisateur est le mot de passe pour accéder à la page de monit.
Si on utilise un fichier existant, l'utilisateur et le mot de passe sont ajoutés dans celui ci.
Cette méthode permet de ne pas laisser un mot de passe en clair dans le fichier de configuration de monit.
Exemples de choses à monitorer
Pour le systèmes :
check system nom_de_la_machine if loadavg (1min) > 15 then alert if loadavg (5min) > 20 then alert if memory usage > 75% then alert if swap usage > 70% then alert if cpu usage (user) > 90% then alert if cpu usage (system) > 50% then alert if cpu usage (wait) > 20% then alert
Pour apache :
check process httpd with pidfile /var/run/httpd.pid start program = "/usr/local/etc/rc.d/apache22 start" with timeout 60 seconds stop program = "/usr/local/etc/rc.d/apache22 stop" if cpu > 60% for 2 cycles then alert if cpu > 80% for 5 cycles then restart if totalmem > 200.0 MB for 5 cycles then restart if children > 250 then restart if loadavg(5min) greater than 10 for 8 cycles then stop if failed host nom_du_site_a_monitorer port 80 protocol http and request "/index.php" then restart if 3 restarts within 5 cycles then timeout group www
Pour Mysql :
check process mysqld with pidfile /var/db/mysql/ambre.sheltem.com.pid group mysql start program = "/usr/local/etc/rc.d/mysql-server start" stop program = "/usr/local/etc/rc.d/mysql-server stop" if failed host 127.0.0.1 port 3306 then restart if 5 restarts within 5 cycles then timeout
Pour SSH :
check process sshd with pidfile /var/run/sshd.pid start program "/etc/rc.d/sshd start" stop program "/etc/rc.d/sshd stop" if failed port 22 protocol ssh then restart if 5 restarts within 5 cycles then timeout
Pour un serveur Murmur :
check process murmur with pidfile /var/run/murmur/murmur.pid start program "/usr/local/etc/rc.d/murmur start" stop program "/usr/local/etc/rc.d/murmur stop" if 5 restarts within 5 cycles then timeout
Traces
Dans le fichier de configuration on indique à monit d'envoyer les logs a syslog via le “canal” “daemon”, cependant, dans freebsd, il n'est pas défini on ajoute donc cette ligne dans /etc/syslog.conf :
daemon.info /var/log/daemon.log
Et par conséquent, il nous faut configurer une rotation pour ce nouveau fichier de log, on ajoute donc cette ligne dans /etc/newsyslog.conf :
/var/log/daemon.log 644 5 100 * JC
De cette manière, chaque fois que le fichier de log atteint 100Kb, il est compressé en bzip2 pour être sauvegardé avant d'être vidé.