Monit - Monitoreo de procesos y servicios para Linux
Los servicios en cualquier servidor deben estar en funcionamiento y hacer lo que se supone que deben hacer.
La supervisión automatizada es necesaria para garantizar y maximizar el tiempo de actividad y la disponibilidad de los servicios del sistema en un servidor.
Permite a los administradores del sistema recibir notificaciones y solucionar problemas lo antes posible con una interrupción o un tiempo de inactividad mínimos.
En esta publicación, vamos a jugar con una herramienta llamada Monit que puede monitorear servicios y procesos en un servidor y enviar correos electrónicos de alerta cuando algo falla.
La herramienta en sí es bastante liviana y permite a los usuarios escribir "pruebas" utilizando un lenguaje de estilo de script muy simple.
Instalar Monit
En los sistemas basados en Debian y Ubuntu, Monit está disponible en los repositorios predeterminados. Instalar usando apt-get
$ sudo apt-get install monit
Después de la instalación, monit se iniciaría como un servicio en segundo plano y se puede verificar con el siguiente comando
# service monit status * monit is running
Configurar Monit
Lo siguiente que debe hacer es configurar monit para monitorear cosas específicas. El archivo de configuración de Monit se encuentra en /etc/monit/monitrc en sistemas basados en Ubuntu y Debian.
You can either add all configurations to this file - /etc/monit/monitrc, or create additional configuration files in the /etc/monit/conf.d/ directory and monit would automatically read and load all of them
Comience a editar el archivo de configuración para agregar los servicios que desea monitorear.
Monit también tiene un archivo de registro ubicado en /var/log/monit.log que contendría información valiosa si necesita arreglar algo
Después de la configuración, pruebe la nueva configuración ejecutando el siguiente comando
# sudo monit -t
Vuelva a cargar la nueva configuración sin reiniciar todo monit
# sudo monit reload
Habilitar la interfaz web
La interfaz web le permite consultar los informes de Monit desde el navegador. Esto es útil al configurar y probar monit. Más adelante, es mejor desactivarlo para mantener las cosas seguras.
Busque la línea "set httpd" en el archivo de configuración y elimínela. Si la línea no existe, simplemente cree una.
set httpd port 2812 and # use address localhost # only accept connection from localhost # allow localhost # allow localhost to connect to the server and allow admin:monit # require user 'admin' with password 'monit' # allow @monit # allow users of group 'monit' to connect (rw) # allow @users readonly # allow users of group 'users' to connect readonly
Ahora acceda a http://localhost:2812/ y la interfaz web de Monit debería abrirse.
Configurar alertas por correo electrónico
La idea detrás de monit es recibir alertas cada vez que ocurra algo inesperado. Monit puede enviar automáticamente correos electrónicos. Busque la línea "establecer alerta" y especifique el correo electrónico donde desea que se entreguen los informes. Especifique también el servidor de correo a utilizar.
set alert [email protected] set mailserver localhost
Asegúrese de que haya un servidor smtp (MTA) ejecutándose en localhost y que pueda entregar correos correctamente. Use el comando de correo para verificar que el sistema esté configurado correctamente para enviar correos electrónicos.
Evite los correos electrónicos que no sean de alerta - Monit por defecto envía correos electrónicos por cada cosa que hace o todo lo que sucede. Por ejemplo, cuando se inicia monit. Sin embargo, solo queremos los correos electrónicos específicos de alerta. Modifique la configuración de la siguiente manera
set alert [email protected] not on {instance}
La configuración anterior no enviaría informes de instancias por correo electrónico que se generan al iniciar/detener el monitor. Consulte la documentación de monit sobre filtros de eventos para alertas para obtener más información.
Así es como se ve un correo de alerta de Monit. Se genera cuando se ejecuta una prueba de espacio en disco y falla en el servidor.
Resource limit matched Service server_disk Date: Thu, 11 Jun 2015 15:41:43 Action: alert Host: localhost Description: space usage 61.4% matches resource limit [space usage>50.0%] Your faithful employee, Monit
Servicios de supervisión como Apache, Mysql, Postfix
Ahora desea monitorear su servidor web, servidor de base de datos, servidor de correo y otros demonios para asegurarse de que los servicios estén funcionando perfectamente todo el tiempo. Esto es facil.
Simplemente siga agregando instrucciones en el archivo de configuración de monit para especificar cada servicio que le gustaría monitorear y Monit comenzaría a hacerlo instantáneamente.
After changing configurations, make sure to run 'sudo monit reload' to bring them in effect. While testing you can manually turn services on/off and check the monit report from the web interface.
Aquí hay algunos ejemplos -
1. Servicio HTTP - puerto 80
El siguiente ejemplo le dirá a Monit que verifique si el servidor http está sirviendo en el puerto 80 o no. Si no, generaría una alerta
check host http_server with address localhost if failed port 80 protocol http then alert
Entonces, si hay algún problema con el servidor http (apache o nginx), se generará una alerta
Del mismo modo, puede configurar monitores para otros puertos como ftp, smtp, imap, etc.
2. Supervisar el estado del sitio web
Solo monitorear el puerto 80 no es suficiente para garantizar que el sitio web esté activo y funcionando. Necesitamos asegurarnos de que obtener una página proporcione un código de respuesta http de 200. Aquí está la configuración requerida
# check that website is working proper check host binarytides with address www.binarytides.com if failed port 80 protocol http request "/" status = 200 then alert
Si cualquiera de "puerto 80" o "servidor http" o "estado 200 para / url" falla, se generará una alerta. Esta es una forma eficaz de comprobar que su sitio está activo y disponible para los usuarios.
3. Servidor web Apache - Monitoreo de procesos
Los procesos se monitorean usando archivos pid específicos. Por ejemplo, en Debian, el servidor web Apache tiene un pid ubicado en /var/run/apache2/apache2.pid que se puede verificar para asegurarse de que Apache se esté ejecutando o no.
# Monitor Apache and restart if not running, also alert check process apache with pidfile /var/run/apache2/apache2.pid start program = "/etc/init.d/apache2 start" stop program = "/etc/init.d/apache2 stop"
Lo anterior le dice a monit que monitoree el proceso desde el archivo pid especificado. Aquí, si monit no encuentra el proceso en ejecución, intentará iniciarlo usando el comando especificado en el parámetro "iniciar programa". De forma predeterminada, monit también generará una alerta (correo electrónico) al reiniciar.
Solo monitor
Si no desea que monit reinicie apache y solo informe sobre el evento, use un tipo diferente de configuración
# Alert if apache not running check process apache with pidfile /run/apache2/apache2.pid if does not exist then alert
4. Compruebe Mysql en el puerto 3306 - Supervisión de puertos
En este ejemplo, monitoreamos la base de datos mysql sin usar el pid sino directamente conectándonos al puerto de servicio que es 3306.
Para verificar solo el número de puerto con el protocolo, use la siguiente configuración -
# check just port 3306 check host localmysql with address localhost if failed port 3306 protocol mysql then alert
La siguiente configuración verificará el proceso mysql y se reiniciará si no se está ejecutando. También comprobaría el servicio del puerto 3306.
check process mysql_server with pidfile /var/run/mysqld/mysqld.pid start program = "/etc/init.d/mysql start" stop program = "/etc/init.d/mysql stop" if failed host 127.0.0.1 port 3306 protocol mysql then alert
5. Supervise el servidor de correo y los puertos de Postfix
Ahora configuremos una configuración para monitorear el servidor de correo postfix. La configuración es idéntica a las anteriores, solo que con un archivo pid y un número de puerto diferentes
check host localpostfix with address localhost if failed port 25 protocol smtp then alert
Para monitorear el proceso y reiniciar en caso de falla, use esto -
check process postfix with pidfile /var/spool/postfix/pid/master.pid start program = "/etc/init.d/postfix start" stop program = "/etc/init.d/postfix stop" if failed port 25 protocol smtp then restart
And do not forget that while postfix is down, monit might not be able to send any emails (unless there are other mail servers specified). But monit would send them once the mail server is up again.
6. Alerta repetidamente
Por defecto, Monit genera una alerta solo dos veces. Una vez cuando falla una prueba y otra cuando tiene éxito.
Si desea recibir alertas repetidas para la misma prueba fallida (si es demasiado importante, por ejemplo), utilice la siguiente configuración.
set alert [email protected] with reminder on 15 cycles
La configuración anterior es una configuración global, que envía todas las alertas después de cada 15 controles/ciclos.
Para repetir alertas solo para pruebas específicas, especifique la directiva de alerta dentro de los criterios de prueba particulares como este
check filesystem datafs with path /dev/sda1 alert [email protected] with reminder on 1 cycles if space usage > 80% for 5 times within 5 cycles then alert
Si desea recibir recordatorios menos veces pero repetidamente, use algo como "recordatorio en 10 ciclos".
Verificar el estado de Monit
Esto requiere que se esté ejecutando el demonio monit http.
$ sudo monit status The Monit daemon 5.8.1 uptime: 0m Process 'apache' status Running monitoring status Monitored pid 1335 parent pid 1 uid 0 effective uid 0 gid 0 uptime 1h 52m children 7 memory kilobytes 29556 memory kilobytes total 241604 memory percent 0.3% memory percent total 2.9% cpu percent 0.0% cpu percent total 0.0% data collected Fri, 05 Dec 2014 11:11:18 System 'enlightened' status Running monitoring status Monitored load average [0.05] [0.26] [0.35] cpu 3.7%us 0.8%sy 0.0%wa memory usage 3613152 kB [44.2%] swap usage 0 kB [0.0%] data collected Fri, 05 Dec 2014 11:11:18
O consulte la interfaz web en http://localhost:2812/ para comprobar el estado de todo
Conclusión
Los ejemplos anteriores muestran solo ejemplos muy simples de configuración de tareas de monitoreo con Monit.
Monit es capaz de hacer cosas mucho más complejas como hacer ping a los hosts de la red, ejecutar scripts externos y probar la salida para un valor determinado.
Consulte la documentación completa en -
https://mmonit.com/monit/documentation/monit.html
Los ejemplos de configuración de la página wiki de Monit tienen muchos ejemplos sobre cómo configurar monitores para varios servicios -
http://mmonit.com/wiki/Monit/ConfigurationExamplesSi tiene algún comentario o pregunta, háganoslo saber en los comentarios a continuación.