Monit est un outil de surveillance de processus open source pour le système d'exploitation Linux qui vous aide à surveiller le processus système. Chaque fois que le service/processus tombe en panne, il effectue automatiquement la maintenance et la réparation du processus particulier et s'assure qu'il est remis en ligne.
Monit peut également être utilisé pour gérer et surveiller des programmes, des fichiers, des répertoires, des systèmes de fichiers, des vérifications de réseau TCP/IP, des vérifications de protocole et peut utiliser SSL pour ces vérifications.
Il se connecte à son fichier journal et avertit l'utilisateur via des messages personnalisables.
Ce guide vous aidera à configurer Monit sur CentOS 8 / RHEL 8.
Installer Monit
Installez les outils de construction nécessaires car Monit n'a pas encore été empaqueté en tant que RPM pour CentOS 8 / RHEL 8.
dnf install -y git gcc glibc make glibc-devel kernel-headers autoconf automake libtool bison flex libzip-devel pam-devel openssl openssl-devel
Clonez le code source de Monit pour la compilation.
cloner git https://bitbucket.org/tildeslash/monit.git
Compilez le Monit avec une série de commandes suivantes.
cd monit./bootstrap./configuremakemake install
Configurer la surveillance
Fonctionnalité
Copiez le fichier monitrc de la source téléchargée dans le répertoire /etc.
cp monitor /etc/
Nous apporterons quelques modifications au fichier de configuration de Monit pour nos besoins.
vi /etc/monitrc
Par défaut, Monit est configuré pour vérifier les services à un intervalle de 30 secondes. Cet intervalle peut être modifié en modifiant la ligne ci-dessous.
définir le démon 30
Vous pouvez définir un serveur de messagerie pour recevoir des alertes dans votre boîte de réception.
définir le port 25 du serveur de messagerie mx.itzgeek.localLes alertes par e-mail peuvent être personnalisées à l'aide de modèles intégrés trouvés dans le fichier de configuration lui-même. Voir les alertes par e-mail avec Monit au bas de cet article pour plus d'informations.
Le paramètre des journaux peut être modifié à l'aide du fichier suivant.
définir le journal /var/log/monit.log
Assurez-vous de décommenter la ligne ci-dessous. Nous placerons ici les fichiers de surveillance du service.
inclure /etc/monit.d/*
Interface Web
Monit fournit également une interface Web pour surveiller et gérer les services configurés. Par défaut, Monit écoute sur le port 2812, mais il doit être configuré.
Editez le fichier de configuration de Monit /etc/monitrc.
vi /etc/monitrc
Recherchez le port httpd 2812, modifiez les entrées suivantes.
DE :
set httpd port 2812 and use address localhost # accept only connection from localhost allow localhost # autorise localhost à se connecter au serveur et autorise admin:monit # requiert l'utilisateur 'admin' avec le mot de passe 'monit' #with ssl { # enable SSL /TLS et définissez le chemin vers le certificat du serveur # pemfile :/etc/ssl/certs/monit.pem #}
À :
définissez le port httpd 2812 et utilisez l'adresse 0.0.0.0 # n'accepte que la connexion de localhost (abandonnez si vous utilisez M/Monit) allow 0.0.0.0/0 # autorisez localhost à se connecter au serveur et autorisez admin:monit # nécessite l'utilisateur 'admin' avec le mot de passe 'monit' #with ssl { # active SSL/TLS et définit le chemin vers le certificat du serveur # pemfile :/etc/ssl/certs/monit.pem #}
À partir des paramètres ci-dessus, Monit écoutera sur le port 2812 sur toutes les interfaces. L'utilisateur administrateur pourra accéder à l'interface Web à partir de n'importe quel réseau.
Configuration du système
Nous allons maintenant créer un fichier systemd pour démarrer automatiquement Monit au démarrage du système.
vi /lib/systemd/system/monit.service
Utilisez les paramètres ci-dessous.
# Ce fichier est un modèle systemd pour le service monit. Pour # enregistrer monit avec systemd, placez le fichier monit.service # dans le répertoire /lib/systemd/system/ puis démarrez-le # en utilisant systemctl (voir ci-dessous). # # Enable monit to start on boot:# systemctl enable monit.service # # Démarrer monit immédiatement:# systemctl start monit.service # # Stop monit:# systemctl stop monit.service # # Status:# systemctl status monit.service [Unité ] Description=Utilitaire de surveillance proactive pour les systèmes Unix After=network.target Documentation=man:monit(1) https://mmonit.com/wiki/Monit/HowTo [Service] Type=simple KillMode=process ExecStart=/usr /local/bin/monit -I ExecStop=/usr/local/bin/monit quit ExecReload=/usr/local/bin/monit reload Restart =on-abnormal StandardOutput=null [Install] WantedBy=multi-user.targetRechargez le démon systemd.
rechargement du démon systemctlDémarrez le service Monit.
systemctl démarrer la surveillanceDémarrage automatique de Monit au démarrage.
systemctl activer la surveillancePare-feu
Configurez le pare-feu pour autoriser l'accès à l'interface Web de Monit, s'exécutant sur le port 2812.
firewall-cmd --permanent --add-port=2812/tcpfirewall-cmd --reloadAccéder à l'interface Web de Monit
Ouvrez votre navigateur Web et accédez à l'URL ci-dessous.
http://votre.adresse.ip.ess:2812OU
http://votre.fq.dn:2812Utilisez le nom d'utilisateur et le mot de passe mentionnés à l'étape précédente.
La page d'accueil de Monit ressemblera à ceci :
Configurer les services de surveillance avec Monit
Une fois l'interface Web en place, nous pouvons commencer à configurer d'autres services que vous souhaitez surveiller.
mkdir /etc/monit.d/Vous pouvez placer les fichiers de configuration sous le répertoire /etc/monit.d/.
Configurer le service pour syslog.
vi /etc/monit.d/syslogmonitorUtilisez les informations ci-dessous.
vérifier le processus SysLog avec pidfile /var/run/rsyslogd.pidstart program ="/usr/bin/systemctl start rsyslog.service"stop program ="/usr/bin/systemctl stop rsyslog.service"Service de configuration pour HTTP.
vi /etc/monit.d/httpdmonitorUtilisez les informations ci-dessous.
vérifier le processus HTTPD avec pidfile /var/run/httpd/httpd.pidstart program "/usr/bin/systemctl start httpd.service"stop program "/usr/bin/systemctl stop httpd.service"if failed port 80 protocol http puis redémarrerUne fois configuré, testez la syntaxe Monit
monit -tSortie :
Contrôlez la syntaxe du fichier OKRechargez Monit pour prendre en compte les modifications.
moniteur de rechargement systemctlAccédez à l'interface Web. Vous devriez voir les nouveaux services que nous venons de configurer.
En cliquant sur un service, vous obtiendrez plus d'informations sur le service en question. Ici, vous pouvez effectuer des actions telles que démarrer, arrêter et redémarrer le service, et également désactiver la surveillance.
Tester la surveillance
Arrêtez maintenant le service HTTP pour nos tests.
systemctl arrêter httpdAttendez 30 secondes, Monit démarrera automatiquement le syslog. Vous pouvez le trouver dans le journal Monit.
cat /var/log/monit.logSortie :
[EST Jan 27 20:37:03] erreur :le processus 'HTTPD' n'est pas en cours d'exécution[EST Jan 27 20:37:03] info :'HTTPD' essaie de redémarrer[EST Jan 27 20:37:03] info :'HTTPD' start:'/usr/bin/systemctl start httpd.service'[EST Jan 27 20:37:38] info :le processus 'HTTPD' est en cours d'exécution avec le pid 25270Alerte par e-mail avec Monit
Des modèles d'alerte prédéfinis sont disponibles dans Monit pour alerter les administrateurs système en cas d'échec d'un service particulier. Pour cette démo, nous utiliserons le relais local (serveur de messagerie) pour alerter l'utilisateur root.
Modifiez le fichier de configuration.
vi /etc/monitrcVous pouvez mettre à jour le modèle d'alerte ci-dessous selon vos besoins.
set mail-format { from:Monitsubject:monit alert -- $EVENT $SERVICE message:$EVENT Service $SERVICE Date:$DATE Action:$ACTION Hôte:$HOST Description:$DESCRIPTION Votre fidèle employé, Monit} Définissez ici l'adresse du destinataire pour recevoir des alertes sur tous les types d'actions
définir l'alerte root@localhostDéfinissez l'adresse du destinataire ici pour ne pas alerter sur les redémarrages de service initiés par l'utilisateur.
set alert root@localhost not on { instance, action }Enfin, définissez la configuration du serveur de messagerie afin que vous puissiez recevoir des e-mails.
définir l'hôte local du serveur de messagerieIci, j'utilise le relais local dnf install -y sendmail &&systemctl start sendmail afin que nous puissions lire les alertes par e-mail sur le terminal pour confirmer le mécanisme d'alerte.
Rechargez le service.
moniteur de rechargement systemctlAfficher l'alerte
Le Monit a envoyé des e-mails à l'utilisateur root concernant le processus HTTP.
cat /var/spool/mail/rootSortie :
À :[email protected] :monit alert -- N'existe pas HTTPDDate :Tue, 28 Jan 2020 01:44:05 GMTX-Mailer :Monit 5.27.0MIME-Version :1.0Content-Type :text/ plaine; charset=utf-8Content-Transfer-Encoding :8bitMessage-Id :<[email protected]>N'existe pas Service HTTPD Date :lundi 27 janvier 2020 20:44:05 Action :redémarrer Hôte :centos8.itzgeek .local Description :le processus n'est pas en cours d'exécution Votre fidèle employé, Monit @ ITzGeekFrom [email protected] Mon Jan 27 20:44:47 2020Return-Path :Reçu :de centos8.itzgeek.local (localhost [127.0.0.1] ) par centos8.itzgeek.local (8.15.2/8.15.2) avec l'identifiant ESMTP 00S1ilKL026285 pour ; Mon, 27 Jan 2020 20:44:47 -0500De :"Monit" À :[email protected] :monit alert -- Existe HTTPDDate :Mar, 28 Jan 2020 01:44 :47 GMTX-Mailer :Monit 5.27.0MIME-Version :1.0Content-Type :text/plain ; charset=utf-8Content-Transfer-Encoding :8bitMessage-Id :<[email protected]>Exists Service HTTPD Date :lundi 27 janvier 2020 20:44:47 Action :alerte Hôte :centos8.itzgeek.local Description :le processus est en cours d'exécution avec le pid 26069 Votre fidèle employé, Monit @ ITzGeek OU
Utilisez mutt dnf install -y mutt, un client de messagerie pour afficher les alertes.
Conclusion
C'est tout. Nous avons configuré avec succès Monit sur CentOS 8 / RHEL 8.