Monitoramento · 3 min read · Oct 16, 2025
Como Fazer o monit Enviar Alertas por SMS Quando Seu Servidor Cair
Como Fazer o monit Enviar Alertas por SMS Quando Seu Servidor Cair
Versão 1.0
Autor: Falko Timme
Este tutorial explica como você pode configurar o monit para enviar mensagens de alerta por SMS para o seu celular quando um serviço falhar. Como o monit pode enviar apenas e-mails, mas não SMS, usaremos um gateway de e-mail para SMS onde o monit enviará seus e-mails, e o gateway de e-mail para SMS converterá os e-mails em mensagens SMS.
Este documento vem sem garantia de qualquer tipo! Quero dizer que esta não é a única maneira de configurar um sistema assim. Existem muitas maneiras de alcançar esse objetivo, mas este é o caminho que eu sigo. Não dou nenhuma garantia de que isso funcionará para você!
1 Nota Preliminar
Estou assumindo que você já configurou o monit, por exemplo, como mostrado aqui: https://www.howtoforge.com/server_monitoring_with_munin_monit_debian_etch ou aqui: https://www.howtoforge.com/server_monitoring_with_munin_monit_fedora_7.
Neste tutorial, quero monitorar um servidor web (com o site www.mywebsite.com) para ver se ele ainda está funcionando ou não. Portanto, uso o monit em um segundo servidor (monit.example.com) para que o monit possa enviar alertas se o servidor web cair por qualquer motivo (imagine que você instalou o monit no servidor web - se o servidor cair, o monit não poderá enviar alertas…).
O serviço de SMS que estou usando aqui é o SMS77.de (se você quiser usar esse serviço, deve se registrar primeiro e pagar pelo menos 5 EUR na sua conta pré-paga). Como explicado em http://www.sms77.de/email2sms.html (em alemão), os e-mails que você envia para o gateway precisam do seguinte formato:
Assunto: Texto do SMS
Texto do E-mail: Email2SMS-Key#Destinatário#Tipo de SMS #Remetente
Você pode especificar a chave email2sms nas configurações da sua conta SMS77.de; o destinatário é o número de telefone do seu celular (se você quiser enviar a mensagem para vários destinatários, separe os números de telefone por vírgulas); como tipo de SMS, usamos basicplus, que custa apenas 3,5 centavos (centavos em EUR) por SMS. O remetente é opcional, então eu o deixo de fora.
Vou dizer ao monit para formatar suas mensagens de alerta para que correspondam ao formato exigido.
Você pode, é claro, usar qualquer outro gateway de e-mail para SMS. Este é apenas um exemplo de como fazer isso, e não tenho relação com o SMS77.de.
2 Configurando o monit
Abra /etc/monit/monitrc em monit.example.com e adicione a seguinte estrofe a ele (no final do arquivo):
vi /etc/monit/monitrc| [...] check host www.mywebsite.com with address www.mywebsite.com if failed port 80 protocol http and request "/index.php" for 4 cycles then alert if failed icmp type echo count 5 with timeout 15 seconds for 4 cycles then alert alert [email protected] { connection, timeout, icmp } with mail-format { from: [email protected] subject: $SERVICE $EVENT at $DATE on $HOST message: 123456#0170123456789#basicplus } |
Como você pode ver, com esta configuração, o monit solicitará o arquivo index.php de www.mywebsite.com, e além disso, tentará pingar o host www.mywebsite.com. Para garantir que o monit não envie muitos falsos positivos, ele enviará um alerta apenas se os testes falharem quatro vezes consecutivas (por 4 ciclos) - isso deve indicar que há realmente um problema.
Os alertas serão enviados para o endereço de e-mail do gateway de e-mail para SMS, mas apenas se houver um erro de conexão, um timeout ou pings perdidos (uma lista de todos os eventos disponíveis pode ser encontrada aqui: http://www.tildeslash.com/monit/doc/manual.php#alert_message_layout), e a seção mail-format especifica o formato do e-mail de alerta. As variáveis que você pode usar no e-mail também estão listadas em http://www.tildeslash.com/monit/doc/manual.php#alert_message_layout.
Por favor, ajuste isso para o seu gateway de e-mail para SMS!
Reinicie o monit depois:
/etc/init.d/monit restartÉ isso!
3 Links
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.