Surveiller l’état de votre serveur avec monit et webmin
Aujourd’hui nous allons voir comment surveiller l’état de son serveur dédié à l’aide d’outils de monitoring. Voici les 4 grands logiciels que nous allons installer et configurer :
- Monit : permet de surveiller l’état des différents services comme Apache, le serveur FTP, DNS mais aussi l’état des disques dur. Ce logiciel présente l’avantage de faire des configurations très précises chaque service.
- Webmin : c’est une interface d’administration en ligne. Ça vous permet de gérer votre serveur en vous connectant sur une page web sécurisé. Vous pouvez faire ce que vous voulez puisque vous avez même un accès à la ligne de commande.
- Logwatch : ce logiciel vous envoie des emails avec un résumé des différents fichiers de logs comportant les actions « importantes » effectuées sur le serveur durant les dernières 24h. Ça permet de détecter assez rapidement les attaques ou les processus défaillants.
- Munin : ce logiciel vous fournit des statistiques sous forme de graphique. Vous retrouvez la charge du CPU ainsi des statistiques liés aux différents services qui tournent sur votre serveur.
Voici le tutoriel vidéo sur le monitoring de son serveur :
(Vous pouvez télécharger la vidéo ou la regarder sur Dailymotion)
Configuration de Monit
Comme je l’ai expliqué en introduction, il faut configurer chaque service que l’on souhaite surveiller avec quelques lignes de codes. En réalité, ça ressemble assez à de la programmation classique, puisqu’on donne une série de test et les actions à faire en fonction des résultats. C’est d’ailleurs ce qui rend monit si puissant.
Vous devez commencer par activer Monit en éditant le fichier /etc/default/monit et en plaçant le paramètre startup à 1.
Ensuite, je vous propose de reprendre mon fichier de configuration et de l’adapter selon vos besoins.
Ce fichier est découpé en plusieurs blocks, chaque block permet de surveiller un service (sauf le premier qui précise la configuration de Monit). Pour surveiller un service, on doit préciser au moins 3 éléments :
- La commande pour démarrer le service
- La commande pour le stopper
- Le chemin du fichier qui contient le PID du processus (en cas de problème, ça vient généralement de ce chemin qui est invalide)
Ensuite on donne une série de test et les actions à effectuer si le test est positif. Une fois que l’on à compris le fonctionnement d’un block, c’est plus ou moins similaire pour les autres.
Pour plus d’explications, vous trouverez un mini-tutorial dans les commentaires du fichier /etc/monit/monitrc et dans la vidéo.
/etc/monit/conf.d/config
# Configuration de Monit de base
set daemon 120 # verif toutes les 2 minutes
with start delay 240 # 1ere verif après 4min
set logfile syslog facility log_daemon # précise les fichiers de logs
set mailserver localhost # précise le serveur de mail pour les alertes
set eventqueue
# si le serveur de mail down, on stock les alertes
basedir /var/monit # répertoire de stockage
slots 100 # nomber d'alertes max
set mail-format { # le format du mail
from: monit@$HOST
subject: monit alert -- $EVENT $SERVICE
}
set alert votreEmail@truc.fr # qui reçoit toutes les alertes
# set alert deuxieme-adresse@truc.fr only on { timeout } # pour être précis
set httpd port 4598 and
allow adminMonit:pass
# Services
# Apache2
check process apache with pidfile /var/run/apache2.pid
group apache
start program = "/etc/init.d/apache2 start" with timeout 60 seconds
stop program = "/etc/init.d/apache2 stop"
if cpu > 70% for 2 cycles then alert
if cpu > 90% for 5 cycles then restart
if children > 250 then restart
if failed host 127.0.0.1 port 80
protocol http then restart
if 5 restarts within 5 cycles then timeout
# MySQL
check process mysqld with pidfile /var/run/mysqld/mysqld.pid
group database
start program = "/etc/init.d/mysql start"
stop program = "/etc/init.d/mysql stop"
if failed host 127.0.0.1 port 3306 then restart
if 5 restarts within 5 cycles then timeout
# SSH
check process sshd with pidfile /var/run/sshd.pid
group ssh
start program = "/etc/init.d/ssh start"
stop program = "/etc/init.d/ssh stop"
if failed host 127.0.0.1 port 2242 protocol ssh then restart
if 5 restarts within 5 cycles then timeout
# Postfix
check process postfix with pidfile /var/spool/postfix/pid/master.pid
group mail
start program = "/etc/init.d/postfix start"
stop program = "/etc/init.d/postfix stop"
if failed port 25 protocol smtp then restart
if 5 restarts within 5 cycles then timeout
# FTP
check process proftpd with pidfile /var/run/proftpd.pid
start program = "/etc/init.d/proftpd start"
stop program = "/etc/init.d/proftpd stop"
if failed port 21 protocol ftp then restart
if 5 restarts within 5 cycles then timeout
# BIND
check process bind9 with pidfile /var/run/named/named.pid
group bind
start program = "/etc/init.d/bind9 start"
stop program = "/etc/init.d/bind9 stop"
if failed port 53 then restart
if 5 restarts within 5 cycles then timeout
# POP3
check process pop3 with pidfile /var/run/courier/pop3d.pid
group mail
start program = "/etc/init.d/courier-pop start"
stop program = "/etc/init.d/courier-pop stop"
if failed port 110 then restart
if 5 restarts within 5 cycles then timeout
# IMAP
check process imap with pidfile /var/run/courier/imapd.pid
group mail
start program = "/etc/init.d/courier-imap start"
stop program = "/etc/init.d/courier-imap stop"
if failed port 143 then restart
if 5 restarts within 5 cycles then timeout
# Disk
# SDA1
check device sda1 with path /dev/sda1
group system
if space usage > 85% then alert
if space usage > 90% then exec "/root/script/cleanup.sh"
# SDA2
check device sda2 with path /dev/sda2
group system
if space usage > 85% then alert
Installation de webmin
L’installation de webmin est plutôt simple, mais comme ce n’est pas une application « officiel », il faut ajouter un dépôt en éditant le fichier /etc/apt/sources.list et ajouter ces 2 lignes :
deb http://download.webmin.com/download/repository sarge contrib deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib
Ensuite enchaînez avec ces commandes pour authentifier le dépôt, mettre à jour la liste des paquets et installer webmin :
cd /root wget http://www.webmin.com/jcameron-key.asc apt-key add jcameron-key.asc apt-get update apt-get install webmin
Ensuite, pour vous connecter sur Webmin, vous devez simplement taper l’adresse IP de votre serveur (ou son nom de domaine du genre ksXXXXXX.kimsufi.com) sur le port 10000 (il faut juste ajouter :10000 dans l’adresse). Si ça ne fonctionne pas, vérifiez bien votre Firewall pour débloquer ce port.
Installation de LogWatch
Ce logiciel est très pratique puisqu’il vous envoie un résumé des différents fichiers de log par email tous les jours. En un coup d’oeil on peut voir si le site subit des tentatives de piratage ou si un service bug.
Pour l’installer il suffit de faire un apt-get install logwatch et de préciser votre adresse email dans le fichier de configuration /usr/share/logwatch/default.conf/logwatch.conf sur la ligne « Mailto ».
Des statistiques avec Munin
Munin est un outil pratique que l’on retrouve sur certains hébergeurs pour voir l’état de son serveur ou du réseau. Ça permet d’avoir une représentation graphique de la charge du serveur, de l’état de certain services, etc…
Vous pouvez installer munin en tapant la commande apt-get install munin. Ensuite vous devez configurer munin pour avoir accès à l’interface web. Ouvrez le fichier /etc/munin/munin.conf pour dé-commenter et modifier ces lignes :
dbdir /var/lib/munin htmldir /var/www/monitoring logdir /var/log/munin rundir /var/run/munin
N’oubliez pas de créer le dossier monitoring et de donner les droits à munin.
mkdir /var/www/monitoring chown munin:munin /var/www/monitoring /etc/init.d/munin-node restart
Patientez entre 5 et 10 minutes pour voir apparaitre les premières statistiques sur la page ksXXXXX.kimsufi.com/monitoring. Jusque la ça fonctionne mais c’est une bonne idée de mettre un htaccess avec un mot de passe dans le dossier monitoring pour bloquer l’accès. Pour ce faire, commencer par vérifier dans la configuration d’apache (/etc/apache2/sites-available/default) que vous avez la directive « AllowOverride » sur All pour autoriser les htaccess. Puis vous pouvez placer un fichier htaccess de ce genre dans le dossier monitoring :
AuthType Basic AuthName "Members Only" AuthUserFile /var/www/monitoring/.htpasswd <limit GET PUT POST> require valid-user </limit>
Et n’oubliez pas de générer le fichier htpasswd qui contient les utilisateurs/mot de passe avec la commande : htpasswd -c .htpasswd admin (puis ajoutez votre mot de passe pour admin, le -c sert à créer le fichier htpasswd la preière fois).
Le tutoriel est terminé, j’espère que vous avez réussi à installer cette série de logiciel pour surveiller votre serveur dédié, dans le cas contraire vous pouvez poser vos questions via les commentaires. De même si vous connaissez d’autres outils du genre, faites le savoir via les commentaires.
Si vous avez apprécié le tutoriel, partager le sur Facebook ou Twitter et n’oubliez pas de rejoindre la page facebook du blog
.
Je vous recommande aussi la lecture des sujets suivants :
Publié le 25 septembre 2011 par Madrzejewski Alexis dans Serveur Dédié
24 commentaires
Ajouter un commentaire
Ici les commentaires sont en DoFollow, profitez-en mais en abusez pas !
Veuillez ne pas poster de code (php, html ou autre) car il sera bloqué par le site.
Les commentaires ne sont pas immédiatement validés.
Merci de faire une recherche sur Google avant de poser une question.

Pingback: Installation et configuration d’un serveur dédié | Tutoriels-Video
Très bon tuto comme toujours !
Pour ceux qui veulent changer l’interface de webmin, vous pouvez utiliser ce thème : http://code.google.com/p/webmin-theme-stressfree/downloads/detail?name=theme-stressfree-2.10.tar.gz&can=2&q=
Personnellement je trouve que cette interface est plus intuitive que celle par défaut et bien plus esthétique
Merci pour le lien
. J’avoue que je ne me suis pas très bien intéressé à Webmin même si j’ai cru comprendre qu’il est très utilisé (c’est d’ailleurs pour ça que j’en parle dans l’article).
bonjours les tuto sont tres bien fait j apprecie enormement car je pe enfin regler mon serveur au petit oignon
cependant pour le .htaccess il existe une faille avec le (limit get post)on peut contourner sa et avoir access voici un lien qui explique la faille http://www.segmentationfault.fr/securite-informatique/contourner-htaccess-limit-get-post/
merci encore et j espère d autre tuto sur le serveur qui me passionne
Merci pour la précision pour le htaccess, j’avais déjà entendu parlé de ce genre de faille mais pendant le tuto j’avais complètement oublié.
Je vais voir ce que je peux faire pour proposer une meilleure solution.
pour le .htaccess il suffit de faire a mojn avis
« AuthName « administration – access interdit »
AuthType Basic
AuthUserFile /home/site/www/admin/.htpasswd
require valid-user »
voila
a très vite merci encore pour cette série passionnante de tuto
Bonjour,
Tout d’abord félicitations pour ce site et les tutos très intéressants même pour des gens déjà initiés.
Si je peux me permettre il serait intéressant de parler dans cette partie de apticron qui permet de recevoir un mail lorsque le système doit être mis à jour.
Ça permet d’éviter quelques problèmes
bonjour voila j’ai cette erreur qui parvient pendant l’install de webmin
Vous pouvez lancer « apt-get -f install » pour corriger ces problèmes :
Les paquets suivants contiennent des dépendances non satisfaites :
webmin: Dépend: apt-show-versions mais ne sera pas installé
E: Dépendances non satisfaites. Essayez « apt-get -f install » sans paquet
(ou indiquez une solution).
j’ai beau faire apt-get -f install apt-show-versions il veut pas s’instaler comment faire svp ?
Résolu.
Si vous avait le même problèmes que moi faut désinstaller webmin car il c’est mal installer avec la commande « apt-get –purge remove webmin » puis installer « apt-show-versions » avec la commande « apt-get install apt-show-versions » est le tour et jouer
Bon courage à vous.
Salut Alexis ^^
C’est que je te harcèle en ce moment hein :$
Alors j’avais un soucis, je rencontrais une erreur dans la location du PID de mysql.
Mon PID n’est pas situé à l’endroit indiqué dans le tutoriel.
Après quelques recherches, je tombe sur çà : http://dev.mysql.com/doc/refman/5.0/fr/resetting-permissions.html
Il y a donc 3 possibilités !
Et le fichier peut éventuellement porter le nom du serveur (le nom de la machine: ne pas confondre avec le nom de domaine).
Hum je rage.
Mon problème n’as pas été résolu.
Cette soluce servira peut-être à quelqu’un d’autre alors xd
Salut Alexis, merci pour ton tuto tous fonctionne parfaitement mais pourrais tu poster ton script cleanup.sh?
merci
Salut,
Le voici, mais c’est très spécifique à mon serveur par contre. Cependant, rien de bien compliqué :
#!/bin/shecho "Deplacement des backups en home, problème de disque ..."
mv /var/archives/*.tar.gz /home/backup_pb
(echo -e "Probleme de disque \n" ; ls -l /var/archives ; ls -l /home/backup_pb) | mail -s "Probleme de disque" email@gmail.com
merci c’est vraiment simple en plus. encore merci
Bonjour,
Merci pour le tuto, je precise bien que lorsque j’ai cree le repertoire monitoring sous le chemin /var/www/ j’accede au ksxxxx.kimsufi.com/monitoring, il n’affiche pas la page index, je recois seulement ca:
Index of /monitoring
[ICO] Name Last modified Size Description
[DIR] Parent Directory -
Merci a vous
Si ça peut aider,
Lors du premier lancement de Monit j’avais un problème avec le processus Apache : Connection failed.
En fait Monit teste le fichier index.php situé dans /var/www et comme je l’avais laissé tel quel il appartenait toujours à www-data (qui a un uid < 100). Or dans le fichier /etc/suphp/suphp.conf on avait fixé le min_uid à 100.
S'ensuivait alors l'erreur suivante dans les logs d'Apache :
SoftException in Application.cpp:350: UID of script "/var/www/index.php" is smaller than min_uid
2 solutions donc :
Changer le propriétaire du fichier /var/www/index.php
Abaisser le min_uid dans le fichier de conf de suPHP
Et ça remarche
Merci Bastien j’avais ce soucis là et après avoir changé le user du index.php dans /var/www problème résolu.
Cordialement.
bonsoir
j’ai un petit soucis avec monit.
il ne veux pas me mettre sshd sur runnig
j’ai à la place not monitored.
comment on peux faire ?
je n’ai pas changer le port pour l’instant j’ai laisser 22.
super pour ce tuto très bien expliquer.
j’ai un petit problème lors du monitoring avec monit dans filesystemp sda1 et sda2 j’ai data access error qui s’affiche en rouge.
que dois je faire ?
je n’arrive pas à enlever mes précédant message mais je tenais à rajouter une infos
comme je suis en raid sur mon kimsufi j’ai pensez que mon problème venait du chemin sda1 et sda2.
J’ai donc changer dans la config de monit et mis md1 et md2
du coup j’ai plus les erreurs et tout est en vert maintenant
jespere que j’ai pas fais de bêtises …
Bonjour, je suis les vidéos depuis le début mais la j’ai un problème avec monit. Il ne détecte pas apache j’ai essayé de changer le user du fichier /var/index.php comme le précisé Bastien mais rien n’y fais que dois-je mettre comme user je ne comprend pas trop? en sachant que j’ai installé suphp si quelqu’un peut m’aider Merci.
Bonsoir,
petit problème avec Monit : Apache not monitored pourtant tout à l’air ok je ne comprend pas si quelqu’un peut m’aider je l’en remercie.
Un grand merci à Alexis pour toutes tes vidéo et à tous ceux qui laisse des commentaires ils sont toujours très enrichissants.
Bonjour, bravo à vous pour vos tutos très bien expliqué, mais je me retrouve avec l’incapacité de me connecté à mon espace web webmin, mon mot de passe ne passe pas. Avez vous une idée ? Merci
Bonjour Minit,
Vous pouvez vous connecter en SSH sur votre serveur pour changer le mot de passe ou trafiquer les fichiers de configurations. J’avoue ne pas avoir de réponse immédiate à ce problème. (sinon, il y a peut être moyen de faire un dpkg-reconfigure de webmin).