Estoy ejecutando un servidor de desarrollo simple (Ubuntu) en el que MySQL y MongoDB a veces fallan. Siempre los reinicio con sudo service mysql restart
.
Aunque sé que necesito investigar por qué se estrellan, y lo haré, actualmente estoy buscando una manera de reiniciarlos automáticamente después de que se hayan estrellado. Supongo que necesito tener algún tipo de demonio que los haga ping y los reinicie si ya no responden, pero no estoy seguro de cómo hacerlo.
Leo sobre herramientas como Nagios , pero supongo que eso es un poco excesivo para mi situación.
¿Alguien sabe cómo puedo empezar?
linux
mysql
monitoring
mongodb
kramer65
fuente
fuente
Respuestas:
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:
Una vez instalado, edite la configuración aquí; Prefiero usar
nano
pero siéntete libre de usar cualquier editor de texto que prefierasAjuste los valores predeterminados del daemon para verificar los servicios cada 60 segundos con un retraso de inicio de 120:
Entonces encuentra el
mailserver
Area demonitrc
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:Entonces me aseguro de que un directorio de configuración de Monit esté configurado así:
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:
Y este sería el contenido de ese archivo:
La sintaxis es bastante autoexplicativa, pero básicamente:
apache2.pid
; Asegúrese de cambiar eso para que coincida con la ubicación real de suapache2.pid
ohttpd.pid
en su entornostart
ystop
.80
enlocalhost
(127.0.0.1
)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:
Y he adaptado el ejemplo para que, supongo, se comporte de manera similar a lo que he configurado para Apache:
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: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:
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: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:Monitoreo de Monit.
Puedes seguir el registro de Monit para verlo en acción:
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.
fuente
/var/log/monit.log
. Entonces detengo manualmente mysql y mongo (sudo service mysql stop
ysudo service mongodb stop
). Después de un tiempo veo un par de líneas en el registro de monit sobre mongod:process is not running, trying to restart, start: /usr/sbin/service, failed to start
. Se da cuenta de que mongo no se está ejecutando, pero no parece poder iniciarlo de nuevo. Ah, y sobre mysql no veo nada en los registros (esperé media hora). ¿Algunas ideas?start program = "/sbin/start mongodb"
que funciona para mi No tengo idea aún por qué no funciona para mysql.Un simple script bash (o cualquier otro lenguaje de scripting con el que esté familiarizado) hará el trabajo (para ejecutarse con sudo):
fuente