Capítulo 52 – Monitoramento com Monit
Introdução
O Monit pode ser descrito como um “mini Zabbix” embutido dentro do próprio OPNsense.
Ele é uma ferramenta simples, leve e eficiente, voltada para monitorar serviços locais, executar ações automáticas e enviar alertas quando algum problema é detectado.
Embora o Zabbix seja a plataforma mais robusta e recomendada para monitorar infraestruturas completas (incluindo o próprio firewall), o Monit tem seu valor quando o objetivo é garantir o funcionamento básico de serviços essenciais dentro do OPNsense — como VPNs, gateways e o próprio sistema de detecção de intrusão.
Neste capítulo, veremos como habilitar e configurar o Monit para enviar alertas e tomar ações automáticas diante de falhas, incluindo:
- Notificação por e-mail de eventos importantes;
- Reinício automático de túneis VPN (OpenVPN, IPsec e WireGuard);
- Alertas sobre falhas de gateway;
- Monitoramento de logs do CrowdSec.
1. Configuração Inicial do Monit
Habilitando o serviço
- Acesse o menu Services → Monit → Settings.
- Marque a opção Enable Monit.
- Configure o servidor de e-mail (SMTP), incluindo:
- Mail server, Port, Username, Password e SSL connection conforme seu provedor.
- Clique em Save para salvar as configurações.
Essa etapa garante que o Monit possa enviar alertas automaticamente para administradores via e-mail.
Definindo destinatários de alertas
- Vá até a guia Alert Settings.
- Clone o alerta padrão que vem desabilitado.
- Marque Enable Alert.
- No campo Recipient, informe o e-mail do destinatário que receberá os alertas.
- No campo Mail Format, insira o modelo abaixo (substituindo
FROMpelo e-mail de envio):
from: notifica@gmail.com
subject: $SERVICE $EVENT at $DATE
message: Descrição: $DESCRIPTION.
Host: $HOST
Serviço: $SERVICE
Ação Realizada: $ACTION
Este é um informe automático.
- Clique em Save e, em seguida, em Apply.
2. Monitorando a Disponibilidade de Gateways
É comum que links de Internet (WAN) apresentem instabilidades. O Monit pode ser configurado para emitir alertas quando um gateway cair, permitindo ação imediata do administrador.
Criando o teste “Gateway_Down”
- Vá até Services → Monit → Service Tests Settings.
- Adicione um novo teste com:
- Name:
Gateway_Down - Condition:
content = "loss -> down" - Action:
Alert
- Name:
- Clique em Save.
Criando o serviço “Gateway_Down_Detectado”
- Vá até Services → Monit → Service Settings.
- Adicione um novo serviço:
- Enable service checks: marcado
- Name:
Gateway_Down_Detectado - Type:
File - Path:
/var/log/gateways/latest.log - Tests:
Gateway_Down - Description:
Notifica gateway indisponível
- Clique em Save.
3. Reiniciando OpenVPN automaticamente em caso de falha
O Monit pode monitorar a conectividade de uma VPN e reiniciá-la automaticamente se detectar falha de comunicação.
Atenção
Ao executar o comando de reinício, todas as instâncias OpenVPN serão reiniciadas. Caso existam múltiplos túneis, todos oscilarão momentaneamente.
Criando o teste “Reinicia_VPN_SE_Falhar_Ping”
- Vá até Service Tests Settings.
- Adicione um novo teste:
- Name:
Reinicia_VPN_SE_Falhar_Ping - Condition:
failed ping - Action:
Restart
- Name:
- Clique em Save.
Criando o serviço “Conectividade_VPN_Matriz”
- Vá até Service Settings.
- Adicione um novo serviço:
- Enable service checks: marcado
- Name:
Conectividade_VPN_Matriz - Type:
Remote Host - Address: IP da outra ponta da VPN (ex.:
10.0.0.1) - Start:
/bin/sh -c '/usr/local/sbin/pluginctl -s openvpn start' - Stop:
/bin/sh -c '/usr/local/sbin/pluginctl -s openvpn stop' - Tests:
Reinicia_VPN_SE_Falhar_Ping - Description:
Reinicia VPN matriz se cair
- Clique em Save.
4. Reiniciando IPsec automaticamente em caso de falha
Importante
Aqui no IPSec, ao usar o ID do túnel, apenas o túnel em questão será afetado pelo restart.
Criando o teste “Reinicia_IPSec_Se_Falhar_Ping”
- Vá até Service Tests Settings.
-
Crie um novo teste:
- Name:
Reinicia_IPSec_Se_Falhar_Ping - Condition:
failed ping address 192.168.2.1(substitua pelo IP interno (LAN) do próprio firewall, acessível pela VPN) - Action:
Start - Clique em Save.
- Name:
Criando o serviço “Conectividade_IPSec_Matriz”
- Vá até Service Settings.
-
Adicione um novo serviço:
- Enable service checks: marcado
- Name:
Conectividade_IPSec_Matriz - Type:
Remote Host - Address: IP da LAN do outro firewall (ex.:
192.168.1.1) - Start:
/bin/sh -c 'swanctl -i -c <ID_DO_TUNEL> -t 5' - Tests:
Reinicia_IPSec_Se_Falhar_Ping - Description:
Reinicia Túnel IPsec Matriz se cair - Clique em Save.
Importante
O ID do túnel pode ser obtido na tela de instâncias da VPN IPsec (coluna ID).
5. Reiniciando WireGuard automaticamente em caso de falha
Atenção
Reiniciar o serviço WireGuard faz com que todas as conexões sejam momentaneamente reiniciadas.
Criando o teste “Reinicia_Wireguard_Se_Falhar_Ping”
- Vá até Service Tests Settings.
-
Crie um novo teste:
- Name:
Reinicia_Wireguard_Se_Falhar_Ping - Condition:
failed ping - Action:
Restart - Clique em Save.
- Name:
Criando o serviço “Conectividade_Wireguard_Matriz”
- Vá até Service Settings.
-
Adicione um novo serviço:
- Enable service checks: marcado
- Name:
Conectividade_Wireguard_Matriz - Type:
Remote Host - Address: IP remoto da VPN (ex.:
10.90.0.2) - Start:
/bin/sh -c 'pluginctl -s wireguard start' - Stop:
/bin/sh -c 'pluginctl -s wireguard stop' - Tests:
Reinicia_Wireguard_Se_Falhar_Ping - Description:
Reinicia WireGuard Matriz se cair - Clique em Save.
6. Monitorando bloqueios do CrowdSec
Outra integração útil é usar o Monit para emitir alertas quando o CrowdSec bloquear endereços IP internos — o que pode indicar configurações incorretas ou falsos positivos.
Criando o teste “Crowdsec_Baniu_IP_Local”
- Vá até Service Tests Settings.
-
Adicione um novo teste:
-
Name:
Crowdsec_Baniu_IP_Local - Condition:
content = 'ban.*(192\.168|10\.|172\.)' - Action:
Alert - Clique em Save.
Criando o serviço correspondente
- Vá até Service Settings.
-
Adicione um novo serviço:
- Enable service checks: marcado
- Name:
Crowdsec_Baniu_IP_Local - Type:
File - Path:
/var/log/crowdsec/crowdsec.log - Tests:
Crowdsec_Baniu_IP_Local - Description:
Verifica se o CrowdSec bloqueou IP local - Clique em Save → Apply.
Testando o alerta
Execute o teste pelo shell:
# Simular o bloqueio de um IP interno
cscli decisions add --ip 192.168.100.101
# Remover o bloqueio
cscli decisions delete --ip 192.168.100.101
Ao adicionar o IP, o Monit deverá emitir um alerta informando que um endereço interno foi banido pelo CrowdSec.
Conclusão
O Monit é um recurso simples, porém extremamente útil dentro do OPNsense. Ele permite que o administrador monitore serviços críticos, envie alertas imediatos por e-mail e até execute ações corretivas automáticas — como reiniciar túneis VPN ou identificar falhas de conectividade.
Embora o Zabbix ofereça recursos de monitoramento mais amplos e escaláveis, o Monit é uma excelente solução local, integrada ao firewall e de rápida configuração. Quando bem ajustado, pode ser a diferença entre detectar uma falha tarde demais e corrigir automaticamente em tempo hábil, garantindo maior resiliência e continuidade operacional.