I read about tools like Nagios, but I guess that’s a bit overkill for my situation.
Does anybody know how I can get started?
Fácil. Procure configurar configurações de monitoramento com Monit . É uma ferramenta de monitoramento de sistema leve e fácil de configurar, muito útil para configuração em cenários exatamente como você descreve. o serviço cai, reinicie-o e me avise sobre isso.
Eu principalmente o uso para servidores web Apache, mas existem muitos exemplos do que pode ser feito para outros programas / software como o MySQL e tal.
Configurando Monit.
A maneira que eu configuro é a linha isso. Primeiro, instale o próprio programa Monit assim:
sudo apt-get install monit
Uma vez instalado, edite a configuração aqui; Eu prefiro usar nano
, mas fique à vontade para usar qualquer editor de texto que você preferir:
sudo nano /etc/monit/monitrc
Ajuste os valores do daemon padrão para verificar os serviços a cada 60 segundos com um atraso inicial de 120:
set daemon 60
with start delay 60
Em seguida, localize a área mailserver
de monitrc
e adicione a linha a seguir. O postfix ou um SMTP precisa estar ativo para que isso funcione. Eu normalmente tenho Postfix instalado em meus servidores, então eu uso a seguinte configuração:
set mailserver localhost
Depois, certifico-me de que um diretório de configuração do Monit esteja configurado assim:
sudo mkdir -p /etc/monit/conf.d
Configurando um conjunto de regras de monitoração do Monit Apache2.
Agora, como eu disse, eu uso principalmente Monit para monitoramento do Apache, então esta é uma configuração simples que eu gosto de usar, mas o conceito básico é semelhante para o MySQL, MongoDB ou outras coisas. Gostaria de salvá-lo neste arquivo:
sudo nano /etc/monit/conf.d/apache2.conf
E este seria o conteúdo desse arquivo:
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 protected] only on { timeout, nonexist }
A sintaxe é bastante autoexplicativa, mas basicamente:
- O processo depende do
apache2.pid
; Certifique-se de alterar isso para corresponder à localização real do seuapache2.pid
ouhttpd.pid
em seu ambiente. - Em seguida, há comandos conectados aos processos de
start
estop
. - E tem uma lógica que monitora o servidor da Web na porta
80
onlocalhost
(127.0.0.1
) - E somente atos do servidor ficam inacessíveis por 15 segundos.
- Se tiver que agir, ele tenta reiniciar.
- E, em seguida, envia um alerta para o endereço de e-mail especificado em incidentes do tempo limite do servidor ou não existentes.
Configurando um conjunto de regras de monitoramento do Monit MySQL.
Baseado em os exemplos aos quais eu me associei acima , eu diria que uma configuração como essa funcionaria para o MySQL. Primeiro, crie um arquivo como este:
sudo nano /etc/monit/conf.d/mysql.conf
E eu adaptei o exemplo para que - eu diria - se comporte de forma semelhante ao que configurei para o 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 protected] only on { timeout, nonexist }
É claro que isso deve ser ajustado para corresponder ao seu ambiente de trabalho real, como ajustar a localização do mysqld.pid
, o endereço de e-mail e tal, mas além disso, é bastante genérico em ideias / implementação.
Uma vez definido, reinicie monit
e tudo deve ser bom:
sudo service monit restart
Configurando um conjunto de regras de monitoramento do Monit MongoDB.
Para criar um conjunto de regras de monitoramento do MongoDB, crie um arquivo como este:
sudo nano /etc/monit/conf.d/mongod.conf
E aqui está a regra de monitoramento do MongoDB; Observe que isso corresponde ao daemon MongoDB ativo e não a um PID (também conhecido como: mongod.lock
), pois parece que não funcionou com isso:
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 protected] only on { timeout, nonexist }
É claro que isso deve ser ajustado para corresponder ao seu ambiente de trabalho real, como ajustar o caminho real do binário /usr/bin/mongod
, o endereço de e-mail e tal, mas que é bastante genérico em ideias / implementação.
Uma vez definido, reinicie monit
e tudo deve ser bom:
sudo service monit restart
Monitorando Monit.
Você pode seguir o log do Monit para ver isso em ação:
sudo tail -f -n 200 /var/log/monit.log
E como teste, você pode simplesmente parar o servidor MySQL ou MongoDB e ver o que aparece nesse log. Se tudo correr bem, você deverá ver todo o processo de monitoramento e reiniciar, incluindo um e-mail sendo enviado para o endereço que você definiu na configuração.