Introduction à Monit pour la surveillance des serveurs

Contenu

Monit est un programme de surveillance de serveur qui peut vérifier les processus en cours d'exécution sur votre système pour s'assurer qu'ils sont toujours en ligne et qu'ils s'exécutent dans des limites raisonnables de CPU et de mémoire.. Il est également livré avec une interface Web pour surveiller votre système.

Que fait Monit?

Simplement, Monit vérifiera une certaine procédure toutes les deux minutes (par défaut) pour voir comment cela fonctionne. Conserve un enregistrement de l’utilisation des ressources et peut prendre des mesures en cas d’erreur. cela inclut le redémarrage des processus bloqués et le redémarrage des processus qui utilisent trop de ressources.

Monit établit son comportement entièrement à travers des fichiers de configuration. Voici les paramètres par défaut pour MySQL à titre d’exemple:

check process mysql
  with pidfile /var/run/mysqld/mysqld.pid
  start program = "/usr/sbin/service mysql start" avec délai d’expiration 60 seconds
  stop program = "/usr/sbin/service mysql stop" avec délai d’expiration 60 seconds
  if totalmem > 400 Mo pour 5 cycles then alert
  if totalmem > 600 Mo pour 5 cycles then restart
  if cpu > 50% pour 5 cycles then alert
  if cpu > 90% pour 5 cycles then restart
  if 3 redémarre dans 5 cycles puis délai d’expiration

Monit est configuré pour surveiller la procédure MySQL en cours d’exécution. S’il tombe, vous pouvez le recommencer avec le start program = config. Si MySQL commence à utiliser trop de ressources, peut être redémarré automatiquement, même si vous serez d’abord averti par e-mail.

Il peut également être configuré pour surveiller votre système dans son ensemble et peut vous alerter si votre serveur subit une charge inhabituelle..

check system wp01
  if loadavg(5min) > 1 then alert
  if memory usage > 90% pour 5 cycles then alert
  if cpu usage (utilisateur) > 90% pour 5 cycles puis alerte

Tout ce que les moniteurs Monit peuvent être visualisés à partir de l’interface Web, en cours d’exécution sur le port 2812 par défaut.

En même temps, vous pouvez afficher les données de plusieurs hôtes en un seul endroit avec le Utilitaire M / Monit, qui a besoin d’une licence mais est libre d’essayer.

EN RELATION: Comment configurer les notifications Slack pour un espace disque faible sur votre serveur

Surveiller l'installation et la configuration

Installer Monit à partir de le gestionnaire de paquets de votre distribution; pour les systèmes basés sur Debian comme Ubuntu, cela serait:

sudo apt-get install monit

Monit devrait venir avec les paramètres par défaut, généralement situé dans ~/.monitrc. Si vous ne l'avez pas fait (comme c'était le cas avec une installation macOS), vous pouvez trouver les fichiers de configuration par défaut ici.

L'interface Web de Monit est configurée pour s'exécuter sur le port 2812. C'est bien, mais il est entièrement ouvert par défaut avec un mot de passe par défaut. Nous voulons vous bloquer sur une adresse IP autorisée et

définir le port httpd 2812
    allow your_ip
    allow admin:mot de passe

Modifier ce mot de passe, de toute façon. Il y a une quelques options de configuration supplémentaires pour l’interface web, mais c’est bon pour l’instant.

Ensuite, Monit peut être configuré pour surveiller des processus individuels. En général, cela se fait avec le fichier pid du processus (que l’on trouve souvent dans /var/run/) qui stocke le PID actuel de l’instance exécutant cette procédure, car le pid changera à chaque fois que la procédure est redémarrée.

check process nginx with pidfile /var/run/nginx.pid
    start program = "/etc/init.d/nginx démarrer"
    programme stop = "/etc/init.d/nginx stop"

vous devrez passer une commande à monit pour démarrer et arrêter votre procédure. Il devrait redémarrer automatiquement si la procédure échoue, pas de configuration supplémentaire, mais si vous souhaitez redémarrer en fonction de l’utilisation des ressources, vous devrez le préciser vous-même avec certains if déclarations:

check process nginx with pidfile /var/run/nginx.pid
    start program = "/etc/init.d/nginx démarrer"
    programme stop = "/etc/init.d/nginx stop"
    si totalmem > 600 Mo pour 5 cycles then restart
    if cpu > 90% pour 5 cycles then restart
    if 3 redémarre dans 5 cycles puis délai d’expiration

Monit enverra des alertes chaque fois que quelque chose est redémarré, vous serez donc averti lorsque quelque chose ne va pas.

Une fois que vous avez terminé la configuration, recharger le démon monit avec:

monit recharger

Et commencez à surveiller avec:

monit démarrer tout

cela devrait également démarrer l’interface Web, que vous pouvez utiliser pour vérifier que Monit fonctionne correctement, s’exécutant généralement sur le port 2812.

Il s’agit de la configuration de base pour que Monit s’exécute hors de la boîte, mais Monit a beaucoup plus de syntaxe. Vous pouvez lire le manuel complet fondamentalement ce que Monit peut faire pour en savoir plus.

Configurer les alertes

Monit peut être configuré pour envoyer des alertes par e-mail chaque fois que des problèmes majeurs se produisent ou lorsque les processus redémarrent. Vous devrez ajouter les paramètres de votre serveur de messagerie:

set mailserver smtp.gmail.com
  port 587
  Nom d'utilisateur "[email protected]"
  mot de passe "secret"
  avec délai d’expiration 60 seconds

set eventqueue
  basedir /var/lib/monit/events
  slots 100

Le premier bloc établit le serveur de messagerie à utiliser. La méthode la plus simple serait d'utiliser smtp.gmail.com avec un compte Gmail, même si vous pouvez installer Postfix sur votre serveur pour l'exécuter localement ou utiliser un service de messagerie d'entreprise.

La deuxième ligne indique à Monit de mettre les alertes en file d'attente, si le serveur de messagerie n'est pas accessible pour une raison quelconque.

Évidemment, vous devez également configurer l'adresse e-mail à laquelle vous envoyez:

définir l'alerte [email protected]

En même temps, puisque Monit a la capacité d'exécuter des scripts avec le exec commander, vous pouvez définir des alertes personnalisées comme vous le souhaitez. Par exemple, vous pouvez configurer un script pour vous envoyer des notifications Slack, stockez-le comme /usr/local/bin/slack-webhook.shet exécutez-le chaque fois que nginx modifie le PID ou est redémarré par Monit:

check process nginx with pidfile /var/run/nginx.pid
  start program = "/etc/init.d/nginx démarrer"
  programme stop = "/etc/init.d/nginx stop"
  si changé pid alors exec "/bin/bash -c 'PROCESS=Nginx /usr/local/bin/slack-webhook.sh'"
  si 1 redémarrer dans 1 cycle puis exec "/bin/bash -c 'PROCESS=Nginx /usr/local/bin/slack-webhook.sh'"

Veuillez noter que tous les itinéraires doivent être entièrement évalués, inclus /bin/bash et chemins vers les exécutables dans vos locaux bin. Et une fois que vous avez terminé de modifier les fichiers de configuration, vous devrez recharger Monit.

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.