Leo sobre herramientas como Nagios , pero supongo que eso es un poco excesivo para
mi situación.
¿Alguien sabe cómo puedo empezar?
Fácil. Mire en la configuración de configuraciones de monitoreo con Monit . Es una herramienta de monitoreo de sistema liviana y fácil de instalar que es muy útil para configurar en escenarios exactamente como lo describe; El servicio se cae, reinícialo y avisame al respecto.
Lo uso principalmente para servidores web Apache, pero hay muchos ejemplos de lo que se puede hacer para otros programas / software como MySQL y tal.
Configuración de Monit.
La forma en que lo configuro es la línea de esto. Primero, instale el programa de Monit de esta manera:
sudo apt-get install monit
Una vez instalado, edite la configuración aquí; Prefiero usar nano
pero siéntete libre de usar cualquier editor de texto que prefieras
sudo nano /etc/monit/monitrc
Ajuste los valores predeterminados del daemon para verificar los servicios cada 60 segundos con un retraso de inicio de 120:
set daemon 60
with start delay 60
Entonces encuentra el mailserver
Area de monitrc
y añada la siguiente línea. Postfix o un SMTP deben estar activos para que esto funcione. Normalmente tengo instalado Postfix en mis servidores, así que uso la siguiente configuración:
set mailserver localhost
Entonces me aseguro de que un directorio de configuración de Monit esté configurado así:
sudo mkdir -p /etc/monit/conf.d
Configuración de un conjunto de reglas de monitoreo de Monit Apache2.
Ahora, como dije, uso principalmente Monit para el monitoreo de Apache, así que esta es una configuración simple que me gusta usar, pero el concepto básico es similar para MySQL, MongoDB u otras cosas. Lo guardaría en este archivo:
sudo nano /etc/monit/conf.d/apache2.conf
Y este sería el contenido de ese archivo:
check process apache with pidfile /var/run/apache2.pid
start "/usr/sbin/service apache2 start"
stop "/usr/sbin/service apache2 stop"
if failed host 127.0.0.1 port 80
with timeout 15 seconds
then restart
alert email_address@example.com only on { timeout, nonexist }
La sintaxis es bastante autoexplicativa, pero básicamente:
- El proceso depende de la
apache2.pid
; Asegúrese de cambiar eso para que coincida con la ubicación real de su apache2.pid
o httpd.pid
en su entorno
- Luego tiene comandos conectados a los procesos de
start
y stop
.
- Y tiene una lógica que monitorea el servidor web en el puerto.
80
en localhost
( 127.0.0.1
)
- Y solo los actos del servidor son inalcanzables durante 15 segundos.
- Y si tiene que actuar, intenta un reinicio.
- Y luego envía una alerta a la dirección de correo electrónico especificada en caso de que el servidor haya caducado o no exista.
Configuración de un conjunto de reglas de Monit MySQL.
Residencia en Los ejemplos que he vinculado arriba. Supongo que una configuración como esta funcionaría para MySQL. Primero, crea un archivo como este:
sudo nano /etc/monit/conf.d/mysql.conf
Y he adaptado el ejemplo para que, supongo, se comporte de manera similar a lo que he configurado para Apache:
check process mysqld with pidfile /var/run/mysqld/mysqld.pid
start program = "/usr/sbin/service mysql start"
stop program = "/usr/sbin/service mysql stop"
if failed host 127.0.0.1 port 3306 protocol mysql
with timeout 15 seconds
then restart
alert email_address@example.com only on { timeout, nonexist }
Por supuesto, eso debe ajustarse para que se adapte a su entorno de trabajo real, como ajustar la ubicación de la mysqld.pid
, la dirección de correo electrónico y demás, pero más allá de que es bastante genérico en ideas / implementación.
Una vez que está establecido, reinicie monit
y todo debe ser bueno:
sudo service monit restart
Configuración de un conjunto de reglas de monitoreo de Monit MongoDB.
Para crear un conjunto de reglas de monitoreo de MongoDB, cree un archivo como este:
sudo nano /etc/monit/conf.d/mongod.conf
Y aquí está la regla de monitoreo de MongoDB; tenga en cuenta que esto coincide con el daemon activo de MongoDB y no con un PID (también conocido como: mongod.lock
) ya que no parece funcionar con eso:
check process mongod matching "/usr/bin/mongod"
start program = "/usr/sbin/service mongod start"
stop program = "/usr/sbin/service mongod stop"
if failed host 127.0.0.1 port 27017 protocol http
with timeout 15 seconds
then restart
alert email_address@example.com only on { timeout, nonexist }
Por supuesto, eso debe ajustarse para que coincida con su entorno de trabajo real, como ajustar la ruta real de la /usr/bin/mongod
binario, la dirección de correo electrónico y demás, pero más allá de que es bastante genérico en ideas / implementación.
Una vez que está establecido, reinicie monit
y todo debe ser bueno:
sudo service monit restart
Monitoreo de Monit.
Puedes seguir el registro de Monit para verlo en acción:
sudo tail -f -n 200 /var/log/monit.log
Y como prueba, simplemente puede detener el servidor MySQL o MongoDB y luego ver lo que aparece en ese registro. Si todo va bien, debería ver que se realiza todo el proceso de supervisión y reinicio, incluido el envío de un correo electrónico a la dirección que ha establecido en la configuración.