Instalar Zabbix no Docker (Passo a Passo)

Aprenda a instalar o Zabbix (monitoramento open source) no Docker com este guia completo. Configure Zabbix Server, Frontend e Banco de Dados em minuto
Tutorial Definitivo: Instalar Zabbix no Docker (Passo a Passo)

Tutorial Definitivo: Como Instalar o Zabbix no Docker

Monitoramento open source para servidores, redes e containers – Passo a passo completo

🔍 O que é o Zabbix e Por Que Instalá-lo no Docker?

O Zabbix é uma plataforma de monitoramento open source de nível empresarial, usada para acompanhar a saúde e o desempenho de servidores, redes, aplicações e serviços em nuvem [citation:1]. Sua arquitetura é composta por três componentes principais [citation:2]:

  • Zabbix Server: Motor central que processa dados, avalia triggers e gerencia notificações.
  • Banco de Dados: Armazena configurações e todo o histórico de monitoramento (MySQL/PostgreSQL).
  • Zabbix Frontend: Interface web para configuração, dashboards e visualização de dados.
  • Zabbix Agent (opcional): Coleta métricas locais nos sistemas monitorados [citation:3].

Instalar o Zabbix no Docker simplifica drasticamente o processo: elimina a complexidade de dependências, permite atualizações limpas e oferece um ambiente isolado e replicável [citation:2][citation:7]. Com Docker Compose, você sobe a stack completa em minutos.

💡 Dica: Precisa instalar o Docker? Veja nosso guia Como Instalar Docker no Ubuntu.

📋 Pré-requisitos (Verifique Antes de Começar)

Certifique-se de que seu ambiente atende aos requisitos mínimos:

  • Sistema Operacional: Linux (Ubuntu 20.04/22.04, Debian, CentOS), Windows com WSL2 ou macOS.
  • CPU: Mínimo 2 cores (recomendado 4).
  • RAM: Mínimo 2 GB (recomendado 4 GB ou mais para ambientes maiores) [citation:4].
  • Disco: Pelo menos 10 GB livres para dados e histórico [citation:5].
  • Docker Engine e Docker Compose instalados (versões mais recentes).
  • Git instalado.
  • Acesso root ou usuário com permissões sudo.

🚀 Passo a Passo: Instalação do Zabbix no Docker

1. Instalar Docker e Docker Compose (Se Necessário)

No Ubuntu/Debian, execute:

sudo apt update
sudo apt install ca-certificates curl git
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Verifique:

docker --version
docker compose version

2. Criar Diretório e Obter Arquivos de Configuração

O Zabbix fornece exemplos oficiais de Docker Compose. Você pode usar um repositório com configurações prontas ou criar o seu próprio [citation:2][citation:9]. Vamos usar uma estrutura simples e funcional:

mkdir ~/zabbix-docker
cd ~/zabbix-docker
nano docker-compose.yml

Cole o conteúdo abaixo (baseado em configurações oficiais e adaptado para portas padrão) [citation:5][citation:9]:

version: '3.8'

services:
  mysql-server:
    image: mysql:8.0
    container_name: zabbix-mysql
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_bin
    environment:
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbix_pwd
      MYSQL_ROOT_PASSWORD: root_pwd
    volumes:
      - ./mysql-data:/var/lib/mysql
    networks:
      - zabbix-net
    restart: unless-stopped

  zabbix-server:
    image: zabbix/zabbix-server-mysql:alpine-7.2-latest
    container_name: zabbix-server
    environment:
      DB_SERVER_HOST: mysql-server
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbix_pwd
      ZBX_ENABLE_SNMP_TRAPS: true
    ports:
      - "10051:10051"
    volumes:
      - ./zabbix-scripts:/usr/lib/zabbix/alertscripts
      - ./zabbix-modules:/var/lib/zabbix/modules
    networks:
      - zabbix-net
    depends_on:
      - mysql-server
    restart: unless-stopped

  zabbix-web:
    image: zabbix/zabbix-web-nginx-mysql:alpine-7.2-latest
    container_name: zabbix-web
    environment:
      ZBX_SERVER_HOST: zabbix-server
      DB_SERVER_HOST: mysql-server
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbix_pwd
      PHP_TZ: America/Sao_Paulo
    ports:
      - "80:8080"
      - "443:8443"
    networks:
      - zabbix-net
    depends_on:
      - mysql-server
      - zabbix-server
    restart: unless-stopped

  zabbix-agent:
    image: zabbix/zabbix-agent2:alpine-7.2-latest
    container_name: zabbix-agent
    environment:
      ZBX_HOSTNAME: "zabbix-server"
      ZBX_SERVER_HOST: zabbix-server
      ZBX_SERVER_PORT: 10051
    ports:
      - "10050:10050"
    networks:
      - zabbix-net
    depends_on:
      - zabbix-server
    restart: unless-stopped

networks:
  zabbix-net:
    driver: bridge
🛡️ Segurança: Altere as senhas zabbix_pwd e root_pwd para valores fortes antes de prosseguir [citation:4].

3. Ajustar Permissões e Criar Diretórios (Opcional)

mkdir -p mysql-data zabbix-scripts zabbix-modules
chmod 755 mysql-data

4. Iniciar os Containers

docker compose up -d

Aguarde o download das imagens (cerca de 1-2 GB) e a inicialização dos serviços. Acompanhe os logs:

docker compose logs -f

Quando tudo estiver pronto, você verá mensagens indicando que o Zabbix server e o frontend foram iniciados [citation:7].

5. Verificar o Status dos Serviços

docker compose ps

Todos os containers devem estar com status Up. Exemplo de saída esperada [citation:7]:

Name                State     Ports
zabbix-mysql        Up        3306/tcp, 33060/tcp
zabbix-server       Up        0.0.0.0:10051->10051/tcp
zabbix-web          Up        0.0.0.0:80->8080/tcp, 0.0.0.0:443->8443/tcp
zabbix-agent        Up        0.0.0.0:10050->10050/tcp

🖥️ Acessando o Zabbix Web (Frontend)

Abra o navegador e acesse o endereço do seu servidor:

http://<IP_DO_SERVIDOR>

ou http://localhost se estiver na mesma máquina.

Credenciais padrão do Zabbix [citation:3][citation:5]:

  • Usuário: Admin
  • Senha: zabbix

Após o primeiro login, o sistema solicitará que você altere a senha por motivos de segurança [citation:3].

🧪 Primeiros Passos: Configurar Monitoramento

1. Adicionar um Host (ex: o próprio servidor Zabbix via agente)

O container zabbix-agent já está em execução. Para monitorá-lo [citation:9]:

  1. No menu, vá em Data Collection → Hosts.
  2. Clique em Create host.
  3. Preencha:
    • Host name: zabbix-server
    • Groups: selecione Linux Servers
    • Interfaces: Adicione agente com DNS name = zabbix-agent, porta 10050, conecte via DNS.
  4. Vá até a aba Templates e adicione o template Linux by Zabbix agent.
  5. Clique em Add.

Após alguns segundos, a disponibilidade do agente ficará verde [citation:6].

2. Instalar Agente em Outra Máquina Linux

No host que deseja monitorar [citation:1][citation:4]:

# Para Ubuntu/Debian
sudo apt update
sudo apt install zabbix-agent2
# Edite o arquivo de configuração
sudo nano /etc/zabbix/zabbix_agent2.conf

Altere as linhas:

Server=<IP_DO_ZABBIX_SERVER>
ServerActive=<IP_DO_ZABBIX_SERVER>
Hostname=<nome_do_host>

Reinicie o agente:

sudo systemctl restart zabbix-agent2
sudo systemctl enable zabbix-agent2

Em seguida, adicione o host no frontend do Zabbix (similar ao passo anterior).

🔒 Dicas de Segurança e Boas Práticas para Produção

  • Altere as senhas padrão imediatamente: usuário Admin e as senhas do banco de dados [citation:3][citation:4].
  • Use HTTPS: Para produção, configure um proxy reverso (Nginx) com certificado Let‘s Encrypt ou utilize as portas SSL já expostas [citation:5].
  • Backup dos volumes: Faça backup regular do diretório mysql-data e dos arquivos de configuração [citation:5].
  • Limite recursos: Adicione restrições de CPU/memória no docker-compose.yml para evitar consumo excessivo.
  • Atualize as imagens: Periodicamente, faça docker compose pull seguido de docker compose up -d para obter as versões mais recentes [citation:5].
  • Habilite TLS entre componentes: Para ambientes sensíveis, configure PSK ou certificados no agente e servidor [citation:4].

🐛 Troubleshooting: Problemas Comuns e Soluções

Problema Possível Causa Solução
Container do MySQL não inicia Permissão no diretório mysql-data ou porta 3306 ocupada sudo chown -R 999:999 mysql-data ou altere a porta no host [citation:2]
Frontend não acessível (erro 503) Servidor ou banco ainda iniciando Aguarde 2-3 minutos e verifique logs: docker compose logs zabbix-server
Agente não aparece como ativo Firewall bloqueando porta 10050, ou configuração incorreta do DNS/IP Verifique sudo ufw allow 10050/tcp e se o Server no agente aponta para o IP correto [citation:3]
Erro de conexão com o banco Senha incorreta no .env ou no compose Confira se as variáveis MYSQL_PASSWORD coincidem em todos os serviços [citation:2]

Para depuração avançada, use docker logs <container_name> [citation:2].

❓ Perguntas Frequentes (FAQ)

▶ Posso instalar o Zabbix no Docker no Windows?
Sim! Com Docker Desktop e WSL2 habilitado, os mesmos comandos funcionam perfeitamente.
▶ Quais são os componentes mínimos para o Zabbix funcionar?
Zabbix Server + Banco de Dados (MySQL/PostgreSQL) + Frontend [citation:2]. O agente é opcional, mas necessário para monitorar sistemas.
▶ Zabbix no Docker é recomendado para produção?
Sim, desde que você configure volumes persistentes, backups, limitação de recursos e segurança adequada (HTTPS, senhas fortes) [citation:4][citation:5].
▶ Como faço para monitorar containers Docker com Zabbix?
Você pode usar o template oficial “Docker by Zabbix agent 2”, que coleta métricas via socket Docker. Basta instalar o agente no host e configurar o template adequado [citation:1].
▶ Qual a diferença entre Zabbix e Wazuh?
Zabbix é focado em monitoramento de infraestrutura (métricas, desempenho, disponibilidade). Wazuh é uma plataforma SIEM/XDR voltada para segurança (detecção de intrusão, FIM, análise de logs) [experiência do assistente]. Ambos podem ser usados em conjunto.

✅ Conclusão

Parabéns! Você instalou com sucesso o Zabbix no Docker e já pode começar a monitorar seus servidores, redes e aplicações. Com essa stack, você tem à disposição [citation:1]:

  • Dashboards personalizáveis e gráficos em tempo real.
  • Alertas por e-mail, Slack ou outros canais.
  • Descoberta automática de dispositivos.
  • Monitoramento distribuído via proxies.

Explore a documentação oficial e comece a extrair o máximo do seu ambiente.

🔗 Referências e Links Úteis

Post a Comment