Monit - Outil audit de serveur

Etienne P., le Mon Jan 19 2015 13:15:37 GMT+0100 (Central European Standard Time)

Il s'avère très utile pour les services Apache, Nginx, Mysql, ftp, ssh, sendmail et autres.

Sa principale fonction est d'identifier un processus qui ne tourne plus, le redémarrer si il ne répond pas et le stopper si il consomme trop de ressources.

 

 

Voici des étapes à suivre pour installer et configurer correctement Monit dans un environnement Debian :

Installation

# apt-get install monit

Le fichier de configuration automatiquement généré se trouve dans le dossier suivant :

/etc/monit

et le fichier est : monitrc

Aussi on peut ajouter des éléments personnalisés dans /etc/monit/conf.d/

Si vous regarder le fichier de configuration par défaut, vous observerez comme à l'acoutumée que les # représentent les lignes commentées et pour activer certaines fonctions, il est nécessaire de retirer le # au début d'une ligne ou plusieurs.

Et pour les rapports d'activités vous pouvez consulter les logs à l'emplacement :

/var/log/monit

Mais avant cela il faut modifier la ligne par défaut :

set logfile syslog facility log_daemon

par

set logfile /var/log/monit

Activation de fonctions

Voici les éléments qu'il est judicieux d'activer :

Première chose :

set daemon 120

(vérification du service toutes les 2 minutes par défaut)
 

Version Web

Monit permet de visionner les activités par le biais d'un navigateur Internet depuis le port 2812 par défaut.

Pour activer cette fonction il faut "décommenter" :

set httpd port 2812 and
use address localhost  # only accept connection from localhost
allow localhost        # allow localhost to connect to the server and
allow admin:monit      # require user 'admin' with password 'monit'
allow @monit           # allow users of group 'monit' to connect (rw)
allow @users readonly  # allow users of group 'users' to connect readonly

Remplacer use address localhost  par use address votredomaine.com

L'adresse IP du serveur ou bien un nom de domaine sur votre serveur.

et localhost par

allow votreadresseip

Vous autorisez l'adresse IP d'une machine externe, celle de chez vous ou un réseau de machines...

Les alertes email

Afin de recevoir les alertes correctement il est nécessaire d'activer les lignes suivantes et de les modifier à bon escient :

set mail-format { from: webmaster@votredomaine.com }
set alert alert@votredomaine.com

Vous pouvez ajouter ou modifier des détails de cette façon :
set mail-format {
from: webmaster@votredomaine.com
subject: $SERVICE $EVENT at $DATE
message: Monit $ACTION $SERVICE at $DATE on $HOST,

Au plaisir

}

Par défaut c'est indiquer dans le fichier de configuration.

Pensez aussi à définir un serveur email :

set mailserver votredomaine.com,               # primary mailserver
#                backupdomaine.com port 10025,  # backup mailserver on port 10025
localhost                   # fallback relay

Par défaut le serveur utilise le port 25 mais vous pouvez changer en fonction de votre configuration.

Activer le monitoring de Apache 2

Voici les lignes à dé-commenter ou à ajouter au fichier de configuration pour monitorer Apache :
check process apache2 with pidfile /var/run/apache2.pid
start program = "/etc/init.d/apache2 start" with timeout 60 seconds
stop program  = "/etc/init.d/apache2 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 www.yasi.fr port 80 protocol http
and request "/somefile.html"
then restart
if failed port 443 type tcpssl protocol http
with timeout 15 seconds
then restart
if 3 restarts within 5 cycles then timeout
depends on apache_bin

depends on apache_rc
group server

 check file apache_bin with path /usr/sbin/apache2
group server
if failed checksum then unmonitor
if failed permission 755 then unmonitor
if failed uid root then unmonitor
if failed gid root then unmonitorcheck file apache_rc with path /etc/init.d/apache2
group server
if failed checksum then unmonitor
if failed permission 755 then unmonitor
if failed uid root then unmonitor
if failed gid root then unmonitor
 
Remplacez www-data par le groupe de votre serveur apache2
 

Il est nécessaire de créer le fichier somefile.html sur le serveur :

# touch /cheminsiteweb/somefile.html

# chown www-data:www-data /cheminsiteweb/somefile.html

Et pour ne pas se retrouver avec les accès dans les logs de somfile.html il faut configurer apache pour ne pas produire de rapport sur somefile.html :

SetEnvIf Request_URI "^\/somefile.html$" dontlog

à placer dans httpd.conf ou bien le fichier virtualhost de votre domaine.

Puis on ajoute env=!dontlog à la fin de la ligne CustomLog...

CustomLog ${APACHE_LOG_DIR}/access.log combined env=!dontlog

Votre disque et système

Ne vous êtes vous jamais retrouvé avec un disque dur plein ? A ce moment là il devient difficile de récupérer une image seine de votre serveur alors monit est là pour y remédier :

check filesystem datafs with path /dev/sda1
start program  = "/bin/mount /data"
stop program  = "/bin/umount /data"
if failed permission 660 then unmonitor
if failed uid root then unmonitor
if failed gid disk then unmonitor
if space usage > 80% for 5 times within 15 cycles then alert
if space usage > 99% then stop
if inode usage > 1000000 then alert
if inode usage > 99% then stop
group server

Retrouvez le chemin de votre disque oui de vos partitions actives pour les modifier : /dev/sda1.

Renseignez vous sur le nombre d'inode maximum autorisé. Par exemple sur un dédié, la commande :

# df -i

vous donnera les informations nécessaires

Aussi pour savoir la répartition des inodes voici une commande intéressante:

echo "Detailed Inode usage for: $(pwd)" ; for d in `find -maxdepth 1 -type d |cut -d\/ -f2 |grep -xv . |sort`; do c=$(find $d |wc -l) ; printf "$c\t\t- $d\n" ; done ; printf "Total: \t\t$(find $(pwd) | wc -l)\n"

Autres configurations

Vous pouvez ajouter d'autres éléments distincts et de façon propre en activant le dossier :
include /etc/monit/conf.d/*

Le service Mysql

Par exemple pour activer une configuration de monitoring de votre serveur Mysqld, ajoutez à un nouveau fichier nommé /etc/monit/conf.d/mysqld :

check process MySql with pidfile /var/run/mysqld/mysqld.pid
group mysql
start program = "/etc/init.d/mysql start"
stop program = "/etc/init.d/mysql stop"
if failed host localhost port 3306 protocol mysql then restart
if 5 restarts within 5 cycles then timeout
depends on mysql_bin
depends on mysql_rc

check file mysql_bin with path /usr/sbin/mysqld
group mysql
if failed checksum then unmonitor
if failed permission 755 then unmonitor
if failed uid root then unmonitor
if failed gid root then unmonitor

check file mysql_rc with path /etc/init.d/mysql
group mysql
if failed checksum then unmonitor
if failed permission 755 then unmonitor
if failed uid root then unmonitor
if failed gid root then unmonitor

Activation et Lancement

Afin d'appliquer les changements et démarrer le service, il faut modifier un paramétre dans :

/etc/default/monit

startup=1

Mais avant vous pouvez vérifier la syntaxe avec la commande :

# monit -t

et pour redémarrer :

/etc/init.d/monit restart

Si vous avez un parefeu, pensez à ouvrir le port 2812

Résolution de problèmes

Avant toute chose vérifier la syntaxe et si le service est actif :

# monit status

monit-apache2

 

Quelques liens interessants :

https://mmonit.com/monit/documentation/monit.html

http://mmonit.com/wiki/Monit/ConfigurationExamples

http://mmonit.com/

0 commentaire(s)

Laissez un petit mot

Votre adresse email ne sera pas publiée ni utilisée à des fins commerciales.