Surveillance serveur · 5 min read · Oct 17, 2025
Surveillance du serveur avec Munin et Monit sur CentOS 7.2 - Page 2

5 Installer et configurer Monit
Ensuite, nous allons installer Monit :
yum -y install monitPuis nous créons les liens de démarrage système pour Monit :
systemctl enable monit
systemctl start monitLe fichier de configuration par défaut de Monit est /etc/monitrc où vous pouvez trouver quelques exemples de configuration (vous pouvez trouver plus d’exemples de configuration sur http://mmonit.com/wiki/Monit/ConfigurationExamples) qui sont tous commentés, mais cela indique à Monit de chercher également dans le répertoire /etc/monit.d pour des fichiers de configuration.
Dans ce cas, je vais surveiller :
- proftpd
- sshd
- MariaDB
- apache
- postfix
De plus, je vais configurer ces paramètres pour Monit :
- Activer l’interface web de Monit sur le port 2812.
- Utiliser HTTPS pour l’interface web au lieu de HTTP.
- Configurer un accès protégé par mot de passe pour l’interface web.
- Monit doit envoyer des alertes par email à root@localhost.
Tout d’abord, je vais configurer les paramètres d’authentification. Ouvrez le fichier /etc/monitrc
nano /etc/monitrcEt faites défiler jusqu’à ce que vous trouviez cette section :
set httpd port 2812 and
use address localhost # n'accepter que les connexions de localhost
allow localhost # permettre à localhost de se connecter au serveur et
allow admin:monit # exiger l'utilisateur 'admin' avec le mot de passe 'monit'
allow @monit # permettre aux utilisateurs du groupe 'monit' de se connecter (rw)
allow @users readonly # permettre aux utilisateurs du groupe 'users' de se connecter en lecture seuleRemplacez-le par les paramètres suivants :
set httpd port 2812 and
use address 0.0.0.0
SSL ENABLE
PEMFILE /var/certs/monit.pem
allow admin:testLe mot “test” est le mot de passe, veuillez le remplacer par un mot de passe sécurisé et vous voudrez peut-être également changer le nom d’utilisateur “admin” par un nom qui ne peut pas être deviné facilement.
Maintenant, nous ajoutons la configuration pour les services surveillés. Au lieu de modifier /etc/monitrc, nous créons un nouveau fichier de configuration /etc/monit.d/monitrc.
Mon fichier ressemble à ceci :
nano /etc/monit.d/monitrcset logfile syslog facility log_daemon
# Envoyer des emails via ce serveur de messagerie
set mailserver localhost
# Définir l'adresse de l'expéditeur des emails d'alerte
set mail-format { from: [email protected] }
# Envoyer des alertes à cette adresse
set alert root@localhost
# Surveiller le service Proftpd
check process proftpd with pidfile /var/run/proftpd/proftpd.pid
start program = "/usr/bin/systemctl start proftpd"
stop program = "/usr/bin/systemctl stop proftpd"
if failed port 21 protocol ftp then restart
if 5 restarts within 5 cycles then timeout
# Surveiller le service SSH
check process sshd with pidfile /var/run/sshd.pid
start program "/usr/bin/systemctl start sshd"
stop program "/usr/bin/systemctl stop sshd"
if failed port 22 protocol ssh then restart
if 5 restarts within 5 cycles then timeout
# Surveiller MariaDB
check process mysql with pidfile /var/run/mariadb/mariadb.pid
group database
start program = "/usr/bin/systemctl start mariadb"
stop program = "/usr/bin/systemctl stop mariadb"
if failed host 127.0.0.1 port 3306 then restart
if 5 restarts within 5 cycles then timeout
# Surveiller le serveur web apache
check process apache with pidfile /var/run/httpd/httpd.pid
group www
start program = "/usr/bin/systemctl start httpd"
stop program = "/usr/bin/systemctl stop httpd"
if failed host localhost port 80 protocol http
and request "/monit_token" then restart
if cpu is greater than 60% for 2 cycles then alert
if cpu > 80% for 5 cycles then restart
if totalmem > 500 MB for 5 cycles then restart
if children > 250 then restart
if loadavg(5min) greater than 10 for 8 cycles then stop
if 3 restarts within 5 cycles then timeout
# Surveiller le serveur de messagerie postfix
check process postfix with pidfile /var/spool/postfix/pid/master.pid
group mail
start program = "/usr/bin/systemctl start postfix"
stop program = "/usr/bin/systemctl stop postfix"
if failed port 25 protocol smtp then restart
if 5 restarts within 5 cycles then timeout(Veuillez vous assurer que vous vérifiez uniquement les processus qui existent réellement sur votre serveur - sinon monit ne démarrera pas. C’est-à-dire, si vous dites à monit de vérifier Postfix, mais que Postfix n’est pas installé sur le système, monit ne démarrera pas.)
Le fichier de configuration est assez explicite ; si vous n’êtes pas sûr d’une option, jetez un œil à la documentation de Monit : http://mmonit.com/monit/documentation/monit.html
Dans la partie apache de la configuration de Monit, vous trouvez ceci :
if failed host localhost port 80 protocol http
and request "/monit_token" then restartce qui signifie que Monit essaie de se connecter à localhost sur le port 80 et essaie d’accéder au fichier /monit_token qui est /var/www/html/monit_token parce que la racine de notre site web est /var/www/html. Si Monit ne réussit pas, cela signifie qu’Apache ne fonctionne pas, et Monit va le redémarrer. Maintenant, nous devons créer le fichier /var/www/html/monit_token et y écrire une chaîne aléatoire :
touch /var/www/html/monit_tokenEnsuite, nous créons le certificat SSL (pem) (/var/certs/monit.pem) dont nous avons besoin pour l’interface web Monit cryptée SSL :
mkdir /var/certs
cd /var/certsNous avons besoin d’un fichier de configuration OpenSSL pour créer notre certificat. Il peut ressembler à ceci :
nano /var/certs/monit.cnf# créer des certificats RSA - Serveur
RANDFILE = ./openssl.rnd
[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
[ req_dn ]
countryName = Nom du pays (code à 2 lettres)
countryName_default = MO
stateOrProvinceName = Nom de l'État ou de la province (nom complet)
stateOrProvinceName_default = Monitoria
localityName = Nom de la localité (par exemple, ville)
localityName_default = Monittown
organizationName = Nom de l'organisation (par exemple, entreprise)
organizationName_default = Monit Inc.
organizationalUnitName = Nom de l'unité organisationnelle (par exemple, section)
organizationalUnitName_default = Dept. des technologies de surveillance
commonName = Nom commun (FQDN de votre serveur)
commonName_default = server.monit.mo
emailAddress = Adresse e-mail
emailAddress_default = [email protected]
[ cert_type ]
nsCertType = serveurMaintenant, nous créons le certificat comme ceci :
openssl req -new -x509 -days 365 -nodes -config ./monit.cnf -out /var/certs/monit.pem -keyout /var/certs/monit.pemopenssl gendh 512 >> /var/certs/monit.pemopenssl x509 -subject -dates -fingerprint -noout -in /var/certs/monit.pemchmod 700 /var/certs/monit.pemEnfin, nous pouvons démarrer Monit :
systemctl restart monitMaintenant, dirigez votre navigateur vers https://www.example.com:2812/ (assurez-vous que le port 2812 n’est pas bloqué par votre pare-feu), connectez-vous avec admin et test, et vous devriez voir l’interface web de Monit. Elle devrait ressembler à ceci :

(Écran principal)

(Page d’état Apache)
Selon votre configuration dans /etc/monit.d/monitrc, Monit redémarrera vos services s’ils échouent et enverra des emails de notification si les ID de processus des services changent, etc.
6 Liens
- munin: http://munin.projects.linpro.no
- monit: http://mmonit.com/monit
- CentOS: http://www.centos.org
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.