Introdução ao Monit para monitoramento de servidor

Conteúdo

Monit é um programa de monitoramento de servidor que pode verificar os processos em execução em seu sistema para garantir que estejam sempre online e em execução dentro de limites razoáveis ​​de CPU e memória. Ele também vem com uma interface da web para monitorar seu sistema.

O que Monit faz?

Simplesmente, Monit irá verificar um determinado procedimento a cada dois minutos (por padrão) para ver como está funcionando. Mantém o controle do uso de recursos e pode tomar medidas se ocorrer um erro. Esto incluye relanzar procesos bloqueados y reiniciar procesos que usan demasiados recursos.

Monit establece su comportamiento totalmente a través de archivos de configuración. Aquí está la configuración predeterminada para MySQL como ejemplo:

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% para 5 cycles then alert
  if cpu > 90% para 5 cycles then restart
  if 3 restarts within 5 cycles then timeout

Monit está configurado para monitorear el procedimiento de MySQL en ejecución. Si se cae, puede iniciarlo de nuevo con el start program = config. Si MySQL comienza a utilizar demasiados recursos, se puede reiniciar automáticamente, aún cuando primero se le advertirá por email.

Además se puede configurar para monitorear su sistema como un todo y puede alertarle si su servidor está experimentando una carga inusual.

check system wp01
  if loadavg(5min) > 1 then alert
  if memory usage > 90% para 5 cycles then alert
  if cpu usage (do utilizador) > 90% para 5 cycles then alert

Todo lo que Monit supervisa se puede ver desde la interfaz web, que se ejecuta en el puerto 2812 por padrão.

Ao mesmo tempo, puede ver los datos de varios hosts en un solo lugar con el Utilidad M / Monit, que necesita una licencia pero es gratuito para probar.

RELACIONADO: utilitário para enviar e-mails a partir da linha de comando

Instalación y configuración de Monit

Instalar Monit desde el administrador de paquetes de tu distribución; para sistemas baseados em Debian como Ubuntu, isso seria:

sudo apt-get install monit

Monit debería venir con la configuración predeterminada, de forma general localizada en ~/.monitrc. Si no lo hizo (como fue el caso con una instalación de macOS), puede hallar los archivos de configuración predeterminados aqui.

La interfaz web de Monit está configurada para ejecutarse en el puerto 2812. Está bem, pero está totalmente abierta de forma predeterminada con una contraseña predeterminada. Queremos bloquearlo en una dirección IP autorizada y

set httpd port 2812
    allow your_ip
    allow admin:senha

Cambie esta contraseña, de qualquer forma. Tem uma algunas opciones de configuración más para la interfaz web, pero esto es bueno por ahora.

Subseqüentemente, Monit se puede configurar para monitorear procesos individuales. Em geral, esto se hace con el archivo PID de procesos (que a menudo se encuentra en /var/run/) que almacena el PID actual de la instancia en ejecución de ese procedimiento, puesto que el PID cambiará cada vez que se reinicie el procedimiento.

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

Deberá pasar un comando a Monit para iniciar y detener su procedimiento. Debería reiniciarse automáticamente si el procedimiento falla, sin configuración adicional, pero si desea reiniciar según el uso de recursos, tendrá que especificarlo usted mismo con algunos if afirmações:

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% para 5 cycles then restart
    if 3 restarts within 5 cycles then timeout

Monit enviará alertas cada vez que se reinicie algo, por lo que se le notificará cuando algo esté mal.

Una vez que haya terminado con la configuración, recarregue o monit daemon com:

monit recarregar

E comece a monitorar com:

monit comece tudo

Isso também deve iniciar a interface da web, que você pode usar para verificar se o Monit está funcionando corretamente, geralmente rodando no porto 2812.

Esta é a configuração básica para Monit funcionar fora da caixa, mas Monit tem muito mais sintaxe. Você pode leia o manual completo fundamentalmente, o que Monit pode fazer para aprender mais.

Configurar alertas

Monit se puede configurar para enviar alertas por email siempre que se produzcan problemas importantes o cuando se reinicien los procesos. Deberá agregar la configuración para su servidor de correo:

set mailserver smtp.gmail.com
  port 587
  nome do usuário "[email protected]"
  senha "secret"
  with timeout 60 seconds

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

El primer bloque establece el servidor de correo a usar. El método más sencillo sería utilizar smtp.gmail.com con una cuenta de Gmail, mesmo que você possa instalar o Postfix em seu servidor para executar localmente ou usar um serviço de e-mail corporativo.

A segunda linha diz ao Monit para enfileirar os alertas, se o servidor de e-mail não estiver acessível por qualquer motivo.

Evidentemente, você também deve configurar o endereço de e-mail para o qual enviará:

definir alerta [email protected]

Ao mesmo tempo, uma vez que Monit tem a capacidade de executar scripts com o exec comando, você pode definir alertas personalizados como quiser. Como um exemplo, você pode configurar um script para enviar notificações do Slack, almacenarlo como /usr/local/bin/slack-webhook.shy ejecútelo siempre que nginx cambie el PID o sea reiniciado por 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'"
  E se 1 restart within 1 cycle then exec "/bin/bash -c 'PROCESS=Nginx /usr/local/bin/slack-webhook.sh'"

Observe que todas as rotas devem ser totalmente avaliadas, incluído /bin/bash e caminhos para executáveis ​​em suas instalações bin. E quando terminar de modificar os arquivos de configuração, você precisará recarregar o Monit.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.