Agence web » Actualités du digital » Premiers pas avec Monit for Server Monitoring

Premiers pas avec Monit for Server Monitoring

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 fonctionnent 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?

Essentiellement, Monit vérifiera un processus donné toutes les deux minutes (par défaut) pour voir comment il fonctionne. Il conserve un journal de l'utilisation des ressources et peut prendre des mesures en cas d'erreur. Cela inclut la relance des processus en panne et le redémarrage des processus en utilisant trop de ressources.

Monit définit entièrement son comportement via des fichiers de configuration. Voici la configuration 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" with timeout 60 seconds
  stop program = "/usr/sbin/service mysql stop" with timeout 60 seconds
  if totalmem > 400 MB for 5 cycles then alert
  if totalmem > 600 MB for 5 cycles then restart
  if cpu > 50% for 5 cycles then alert
  if cpu > 90% for 5 cycles then restart
  if 3 restarts within 5 cycles then timeout

Monit est configuré pour surveiller le processus MySQL en cours d'exécution. S'il tombe en panne, il peut le redémarrer à l'aide du start program = config. Si MySQL commence à utiliser trop de ressources, il peut être redémarré automatiquement, mais 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% for 5 cycles then alert
  if cpu usage (user) > 90% for 5 cycles then alert

Tout ce que Monit surveille est visible depuis l'interface Web, qui s'exécute sur le port 2812 par défaut.

De plus, vous pouvez afficher les données de plusieurs hôtes en un seul endroit avec l'utilitaire M / Monit, qui nécessite une licence mais est libre d'essayer.

Installation et configuration de Monit

Installez Monit depuis le gestionnaire de paquets de votre distribution; pour les systèmes basés sur Debian comme Ubuntu, ce serait:

sudo apt-get install monit

Monit doit être fourni avec une configuration par défaut, généralement située à ~/.monitrc. Si ce n'est pas le cas (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 elle est entièrement ouverte par défaut avec un mot de passe par défaut. Nous voulons le verrouiller sur une adresse IP autorisée et

set httpd port 2812
    allow your_ip
    allow admin:password

Modifiez ce mot de passe, bien sûr. Il existe quelques options de configuration supplémentaires pour l'interface Web, mais c'est bon pour l'instant.

Monit peut ensuite être configuré pour surveiller les processus individuels. Habituellement, cela se fait avec le fichier PID du processus (souvent trouvé dans /var/run/) qui stocke le PID actuel de l'instance en cours d'exécution de ce processus, car le PID changera à chaque redémarrage du processus.

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

Vous devrez passer une commande Monit pour démarrer et arrêter votre processus. Il devrait redémarrer automatiquement si le processus s'arrête, sans configuration supplémentaire, mais si vous souhaitez redémarrer en fonction de l'utilisation des ressources, vous devrez le spécifier vous-même avec quelques if déclarations:

check process nginx with pidfile /var/run/nginx.pid
    start program = "/etc/init.d/nginx start"
    stop program = "/etc/init.d/nginx stop"
    if totalmem > 600 MB for 5 cycles then restart
    if cpu > 90% for 5 cycles then restart
    if 3 restarts within 5 cycles then timeout

Monit enverra des alertes à chaque redémarrage. Vous serez donc averti lorsque quelque chose ne va pas.

Une fois la configuration terminée, rechargez le démon monit avec:

monit reload

Et commencez la surveillance avec:

monit start all

Cela devrait également démarrer l'interface Web, que vous pouvez utiliser pour vérifier que Monit fonctionne correctement, généralement sur le port 2812.

Il s'agit de la configuration de base pour que Monit sorte de la boîte, mais Monit a beaucoup plus de syntaxe. Vous pouvez lire le manuel complet sur tout ce que Monit peut faire pour en savoir plus.

Configuration des 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 sont redémarrés. Vous devrez ajouter la configuration de votre serveur de messagerie:

set mailserver smtp.gmail.com
  port 587
  username "yourserver@gmail.com"
  password "secret"
  with timeout 60 seconds

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

Le premier bloc définit le serveur de messagerie à utiliser. La méthode la plus simple serait de simplement utiliser smtp.gmail.com avec un compte Gmail, bien que vous puissiez 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.

De toute évidence, vous devrez également définir l'adresse e-mail à laquelle il envoie:

set alert youremail@gmail.com

En outre, étant donné que Monit a la possibilité d'exécuter des scripts avec le exec , vous pouvez configurer des alertes personnalisées comme vous le souhaitez. Par exemple, vous pouvez configurer un script pour vous envoyer des notifications Slack, le stocker sous /usr/local/bin/slack-webhook.shet l'exécutez chaque fois que nginx change de PID ou est redémarré par Monit:

check process nginx with pidfile /var/run/nginx.pid
  start program = "/etc/init.d/nginx start"
  stop program = "/etc/init.d/nginx stop"
  if changed pid then exec "/bin/bash -c 'PROCESS=Nginx /usr/local/bin/slack-webhook.sh'"
  if 1 restart within 1 cycle then exec "/bin/bash -c 'PROCESS=Nginx /usr/local/bin/slack-webhook.sh'"

Notez que tous les chemins doivent être pleinement qualifiés, y compris /bin/bash et les chemins d'accès aux exécutables dans votre section locale bin. Et une fois que vous avez terminé de modifier les fichiers de configuration, vous devrez recharger à nouveau Monit.

★★★★★