On lance un :
portugrade -N sysutils/monit
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 ( /!\ Tous les utilisateurs contenus dans ce fichiers seront valides pour accéder à la page de monit).
Cette méthode permet de ne pas laisser un mot de passe en clair dans le fichier de configuration de monit.
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
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é.