Skip to content
Observability 4 min read

Laboratório Zabbix com Docker Swarm, Traefik, Vagrant e Ansible

Laboratório de monitoramento Zabbix executado em Docker Swarm

Read this article in English.

Olá, comunidade! Neste artigo, compartilho um projeto que desenvolvi para criar um laboratório completo e isolado de monitoramento com Zabbix. O ambiente roda em um cluster Docker Swarm dentro de uma máquina virtual local. O Vagrant provisiona a VM, o Ansible automatiza a configuração, o Traefik publica os serviços com TLS, o PostgreSQL utiliza TimescaleDB e o Grafana complementa a visualização das métricas.

O laboratório cobre o caminho desde a coleta dos dados até sua apresentação em dashboards, dentro de uma estrutura controlada e reproduzível. A seguir, mostro como cada componente participa dessa arquitetura.

Stack e Tecnologias

O laboratório integra várias tecnologias open source, cada uma com uma responsabilidade específica na arquitetura:

Vagrant + VirtualBox

O Vagrant automatiza a criação e a configuração da máquina virtual como código. No laboratório, ele provisiona uma VM no VirtualBox com recursos como 2 CPUs e 4 GB de RAM, ajustáveis no settings.yaml. Isso isola o ambiente de monitoramento do host e facilita sua recriação. O VirtualBox atua como hypervisor e expõe as portas necessárias, como 80 e 443 para web e 10050 a 10052 para o Zabbix.

Ansible

O Ansible cuida de tudo o que acontece depois da criação da VM. Ele instala o Docker, configura o Swarm, implanta as stacks e gera certificados TLS autoassinados. A idempotência limita a execução às mudanças necessárias e mantém os deployments reproduzíveis. Playbooks como deploy-full-zabbix.yml coordenam essas tarefas.

Docker Swarm

O Swarm orquestra os containers em um cluster leve. Ele gerencia a stack do Zabbix como services replicáveis, com balanceamento interno e descoberta automática. Componentes como proxies podem ser escalados para simular um ambiente distribuído, enquanto os volumes persistentes em /data/zabbix-prod mantêm os dados após reinicializações.

Zabbix (Server, Frontend, Proxies)

Este é o núcleo da stack de monitoramento. O server coleta e processa métricas por agents ou proxies; o frontend fornece a interface de configuração e visualização; e os proxies distribuem a carga e monitoram redes remotas. A quantidade é controlada por proxy_count.

PostgreSQL + TimescaleDB

O PostgreSQL armazena configurações e metadados do Zabbix. A extensão TimescaleDB otimiza a escrita e as consultas das métricas históricas, além de comprimir dados antigos.

Traefik

O Traefik funciona como reverse proxy e descobre serviços automaticamente pelas labels do Docker. No laboratório, ele roteia o tráfego para o frontend do Zabbix, o Grafana e as APIs, aplicando TLS com certificados autoassinados gerados pelo Ansible. Isso cria um gateway com redirecionamento HTTPS e balanceamento de carga.

Grafana

O Grafana se integra ao Zabbix por meio de um plugin e transforma as métricas históricas em dashboards interativos, alertas e painéis personalizados. A combinação fecha o fluxo do laboratório: Vagrant e Ansible preparam a base, Docker Swarm orquestra os serviços, Zabbix coleta e processa os dados, PostgreSQL e TimescaleDB armazenam o histórico, Traefik protege e roteia o tráfego, e Grafana apresenta as informações.

Como utilizar o laboratório

Suba o ambiente:

make deploy
💡
O comando inicia a VM com Vagrant, configura o ambiente com Ansible e inicializa a stack no Docker.

Pare a VM mantendo o estado:

make stop

Destrua todo o ambiente, incluindo VM e dados:

make destroy

Configurações principaisPersonalize o laboratório editando o main.yml:

O IP da VM é configurado no settings.yaml por network.control_ip (padrão: 10.0.2.15).

Arquivos importantes

Recursos adicionais

Problemas comuns e soluções

Considerações finais

Este laboratório nasceu para aprofundar conhecimentos em DevOps, monitoramento e containers sem depender de infraestrutura externa. Explore o código, adapte o ambiente e compartilhe o que encontrar pelo caminho.

Repositório

Acesse o repositório: Zabbix LAB

Este material tem finalidade educacional e precisa dos ajustes e das boas práticas adequadas antes de qualquer uso em produção.

Referências


💡 Quem sou eu?

Sou Gabriel Carmo, CNCF Kubestronaut, com certificações CKA, CKAD, CKS, KCNA e KCSA, além de Red Hat Certified OpenShift Administrator.

Atuo em DevOps Engineering, construindo e evoluindo plataformas Kubernetes multi-cloud. Meu trabalho tem como foco reduzir a carga cognitiva das equipes de engenharia por meio de platform engineering, automação, GitOps e experiências self-service.

No dia a dia, conecto infraestrutura como código, cloud networking, governança, segurança, observabilidade e práticas de SRE para criar plataformas mais padronizadas, resilientes e fáceis de operar.

LinkedIn | GitHub | GitLab | Credly | E-mail