ULC Lab · implementação reproduzível
Laboratório: Monitoramento e Resposta Autônoma em Rede Hoteleira com Zabbix e Webhooks
Você terá um ambiente Zabbix monitorando um servidor Linux simulado de hotelaria, com alerta automático e resposta via webhook em Python. Todo o fluxo será testado em até 2 horas.

- Duração estimada
- 120 min
- Passos
- 12
- Validações
- 4
- Versões da documentação consultada
- Zabbix Server 6.0 LTS · Zabbix Agent 6.0 LTS · Python 3.10 · Apache2 2.4.x
Este laboratório ensina a implantar o Zabbix Server em uma VM, monitorar um servidor Linux (hospedado em outra VM), configurar um trigger para detecção de falha de serviço e automatizar a resposta com webhook acionando um script Python. O foco é mostrar como construir um ciclo fechado de monitoramento e automação, típico de ambientes hoteleiros que exigem alta disponibilidade e resposta rápida.
Topologia
Duas VMs em rede privada: uma com Zabbix Server (192.168.56.10), outra com Ubuntu simulando um servidor de aplicação hoteleira (192.168.56.20). O Zabbix Agent roda na VM do servidor monitorado. Um serviço fictício (apache2) será monitorado. O Zabbix Server dispara um webhook para um script Python rodando localmente, que tenta reiniciar o serviço.
┌──────────────┐ ┌──────────────┐
│ Zabbix │ │ Servidor │
│ Server │<----->│ Ubuntu │
│ 192.168.56.10│ │ 192.168.56.20│
│ + Frontend │ │ + Zabbix │
│ │ │ Agent │
└─────┬────────┘ └─────┬────────┘
│ Webhook HTTP │
└─────────────> Script PythonEquipamentos e software
| Item | Requisito, licença ou versão |
|---|---|
| VM Zabbix Server | 2 vCPU, 2GB RAM, 1 interface de rede, Debian 11 ou Ubuntu 22.04 |
| VM Servidor Ubuntu | 1 vCPU, 1GB RAM, 1 interface de rede, Ubuntu 22.04 |
| Zabbix Server | GPLv2 · 6.0 LTS |
| Zabbix Agent | GPLv2 · 6.0 LTS |
| Python | PSF License · 3.10 |
| Apache2 | Apache License 2.0 · 2.4.x |
Roteiro
- Preparar as VMs e a rede privada
Crie duas VMs (Zabbix Server e Servidor Ubuntu) em sua plataforma preferida. Configure ambas na mesma rede privada (exemplo: 192.168.56.0/24).
O que você deve ver: Ambas as VMs se pingam mutuamente.
- Instalar o Zabbix Server e Frontend
No Zabbix Server, siga a documentação oficial para instalar o Zabbix Server, frontend web e banco de dados.
Consulte: https://www.zabbix.com/documentation/current/manual/installation/installO que você deve ver: A interface web do Zabbix acessível em http://192.168.56.10/zabbix
- Instalar o Zabbix Agent no Servidor Ubuntu
No servidor Ubuntu, instale o Zabbix Agent para permitir o monitoramento remoto.
sudo apt update sudo apt install zabbix-agentO que você deve ver: Serviço zabbix-agent ativo e escutando na porta 10050.
- Configurar o Zabbix Agent
Edite o arquivo de configuração do agente para aceitar conexões do Zabbix Server.
sudo nano /etc/zabbix/zabbix_agentd.conf # Altere ou adicione: Server=192.168.56.10 ServerActive=192.168.56.10 Hostname=servidor-hotel sudo systemctl restart zabbix-agentO que você deve ver: O agente aceita conexões do Zabbix Server.
- Adicionar o host no Zabbix Frontend
No frontend do Zabbix, adicione o host 'servidor-hotel' com IP 192.168.56.20, usando o template 'Linux by Zabbix agent'.
O que você deve ver: O host aparece como disponível no frontend.
- Instalar e iniciar o Apache2 no Servidor Ubuntu
Instale o Apache2 para simular um serviço crítico da rede hoteleira.
sudo apt install apache2 sudo systemctl start apache2O que você deve ver: Apache2 rodando na porta 80.
- Criar item de monitoramento do Apache2 no Zabbix
No frontend do Zabbix, crie um item do tipo 'Zabbix agent' no host 'servidor-hotel', chave: proc.num[apache2], tipo: Numeric (unsigned), intervalo: 30s.
O que você deve ver: O item coleta o número de processos apache2 periodicamente.
- Criar trigger para detectar falha do Apache2
No Zabbix, crie uma trigger no host 'servidor-hotel' para alertar se proc.num[apache2] < 1.
O que você deve ver: Trigger dispara se o Apache2 parar.
- Preparar o script Python de resposta autônoma
No Zabbix Server, crie um script Python simples que recebe POST HTTP e executa um comando SSH para reiniciar o Apache2 no servidor monitorado.
nano webhook_resposta.py import http.server import subprocess class Handler(http.server.BaseHTTPRequestHandler): def do_POST(self): subprocess.run(['ssh', 'ubuntu@192.168.56.20', 'sudo systemctl restart apache2']) self.send_response(200) self.end_headers() if __name__ == '__main__': from http.server import HTTPServer server = HTTPServer(('0.0.0.0', 9000), Handler) server.serve_forever()O que você deve ver: Script escutando na porta 9000, pronto para receber webhooks.
- Configurar ação de webhook no Zabbix
No frontend do Zabbix, crie um novo Media Type do tipo 'Webhook'. Configure a URL para http://192.168.56.10:9000/. Associe a ação à trigger do Apache2.
O que você deve ver: Quando a trigger dispara, o Zabbix envia um POST para o script Python.
- Testar o ciclo: simular falha do Apache2
No servidor Ubuntu, pare o Apache2 manualmente para simular falha.
sudo systemctl stop apache2O que você deve ver: Trigger dispara, webhook é enviado, script Python executa o restart via SSH.
- Verificar logs e status após resposta autônoma
Verifique se o Apache2 foi reiniciado e se a trigger do Zabbix volta ao estado OK.
sudo systemctl status apache2O que você deve ver: Apache2 rodando novamente, trigger restaurada.
Como saber que funcionou
| Teste | Comando | Critério |
|---|---|---|
| Verificar comunicação entre Zabbix Server e agente | zabbix_get -s 192.168.56.20 -k 'system.uptime' | Valor de uptime retornado sem erro. |
| Verificar coleta do item proc.num[apache2] | Gráfico ou valor atualizado no frontend do Zabbix. | |
| Testar disparo do webhook | Pare o Apache2 e observe o log do script Python. | POST recebido e comando SSH executado. |
| Confirmar restauração automática do serviço | sudo systemctl status apache2 | Apache2 ativo após o webhook. |
Troubleshooting
| Sintoma | Causa provável | Correção |
|---|---|---|
| Host aparece como 'não disponível' no Zabbix | Firewall bloqueando porta 10050 ou configuração incorreta do agente. | Verifique /etc/zabbix/zabbix_agentd.conf e firewall. |
| Webhook não aciona script Python | Media Type ou URL configurada incorretamente. | Revise configuração do Media Type e logs do script. |
| SSH pede senha ao rodar script Python | Chave SSH não configurada para acesso sem senha. | Configure ssh-copy-id para o usuário correto. |
| Trigger não retorna ao estado OK após resposta | Serviço Apache2 não reiniciou corretamente. | Verifique logs do Apache2 e permissões do usuário SSH. |
Segurança e hardening
- Utilize autenticação por chave SSH restrita para o script Python.
- Limite o acesso ao script Python (firewall, bind em localhost se possível).
- Não rode scripts de automação como root; use permissões mínimas necessárias.
- Mantenha as VMs atualizadas e restrinja portas expostas.
Checklist final
Referências
- RFC 3416 - SNMP Protocol Operations · Tools.ietf (tools.ietf.org)
- Python 3 - http.server · Python Software Foundation (docs.python.org)
- Publicado
- 09/09/2026
- Última revisão
- 09/09/2026
- Versão do conteúdo
- 1.0
- Referências
- 2 oficiais · 1 de normas ou órgãos
- Revisão técnica
- redação e revisão por IA, URLs conferidas na publicação
- Status
- Atual
