Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps
Um guia prático para quem vive na linha de frente da operação de sistemas.
Conectando o Zabbix ao mundo: integração com NetBox e LDAP
Capítulo 4 da série “Zabbix — da Migração ao Fine-Tuning” no Sysadmin Urbano.
A gestão de inventário e autenticação são dois pontos que normalmente fogem da rotina de monitoramento, mas que, integrados ao Zabbix, transformam o ambiente em algo muito mais coerente e automatizado. Neste capítulo, vamos explorar duas integrações fundamentais:
- NetBox — como base única de inventário e sincronização com hosts do Zabbix.
- LDAP — autenticação corporativa, testável direto do terminal.
O NetBox passa a ser o “Source of Truth” (fonte de verdade) da sua infraestrutura, enquanto o Zabbix apenas reflete essa realidade e aplica a monitoração. O LDAP garante que só usuários corporativos possam acessar o sistema, eliminando cadastros manuais.
1) Integrando o Zabbix ao NetBox
1.1) Por que integrar
O NetBox, criado pela DigitalOcean, é hoje a principal ferramenta open source de DCIM + IPAM. Ele centraliza o cadastro de hosts, interfaces, racks, IPs e serviços. A integração com o Zabbix evita duplicidade de inventário e mantém tudo sincronizado: o que está no NetBox é o que o Zabbix deve monitorar.
1.2) Criando o Token no NetBox
Autenticação via token é obrigatória para chamadas de API.
# No NetBox:
Perfil → API Tokens → Add a Token
# Ou via API:
curl -X POST http://netbox.local/api/users/tokens/ \
-H "Content-Type: application/json" \
-H "Authorization: Token SEU_TOKEN_ADMIN" \
-d '{"user": "zabbix", "write_enabled": false, "description": "Token para integração Zabbix"}'
Guarde o token gerado — ele será usado no script de integração abaixo.
1.3) Conferindo divergências entre NetBox e Zabbix
Em vez de criar hosts automaticamente (risco de poluir o ambiente), é mais seguro apenas conferir diferenças — por exemplo, identificar o que existe em um mas não no outro.
#!/usr/bin/env python3
import requests
# Configurações
NETBOX_URL = "http://netbox.local/api/dcim/devices/"
NETBOX_TOKEN = "SEU_TOKEN_AQUI"
ZABBIX_URL = "http://zabbix.local/api_jsonrpc.php"
ZABBIX_USER = "Admin"
ZABBIX_PASS = "zabbix"
# 1. Pegar hosts do NetBox
nb = requests.get(
NETBOX_URL,
headers={"Authorization": f"Token {NETBOX_TOKEN}"}
).json()
netbox_hosts = [d["name"] for d in nb["results"]]
# 2. Pegar hosts do Zabbix
payload = {
"jsonrpc": "2.0",
"method": "user.login",
"params": {"user": ZABBIX_USER, "password": ZABBIX_PASS},
"id": 1
}
token = requests.post(ZABBIX_URL, json=payload).json()["result"]
payload = {
"jsonrpc": "2.0",
"method": "host.get",
"params": {"output": ["host"]},
"auth": token,
"id": 2
}
zbx_hosts = [h["host"] for h in requests.post(ZABBIX_URL, json=payload).json()["result"]]
# 3. Comparar listas
faltando_no_zabbix = set(netbox_hosts) - set(zbx_hosts)
faltando_no_netbox = set(zbx_hosts) - set(netbox_hosts)
print("\\n--- Divergências ---")
print(f"NetBox → não estão no Zabbix: {sorted(faltando_no_zabbix)}")
print(f"Zabbix → não estão no NetBox: {sorted(faltando_no_netbox)}")
Execute o script periodicamente (via cron) para gerar alertas ou logs de divergências.
Essa checagem também pode alimentar um item no próprio Zabbix com zabbix_sender.
2) Testando LDAP via Bash
2.1) Diagnóstico direto do terminal
Antes de integrar o Zabbix à autenticação corporativa, é essencial validar o acesso via linha de comando.
Com o pacote ldap-utils instalado, você pode testar a conexão, bind e busca de usuários.
# Testar conexão (anônimo)
ldapsearch -x -H ldap://ldap.suaempresa.local -b "dc=suaempresa,dc=local" "(cn=usuario)"
# Testar autenticação (bind)
ldapwhoami -x -H ldap://ldap.suaempresa.local -D "uid=usuario,ou=pessoas,dc=suaempresa,dc=local" -W
# Testar TLS
openssl s_client -connect ldap.suaempresa.local:636 -showcerts
Se a autenticação for bem-sucedida, o próximo passo é configurar o Zabbix para usar esse mesmo DN e filtro.
3) Configuração do LDAP no Zabbix
A configuração pode ser feita via interface (Administration → Authentication) ou diretamente no banco:
UPDATE config
SET ldap_host = 'ldap.suaempresa.local',
ldap_port = 389,
ldap_base_dn = 'dc=suaempresa,dc=local',
ldap_search_attribute = 'uid',
ldap_bind_dn = 'cn=zabbix,ou=service,dc=suaempresa,dc=local',
ldap_bind_password = 'senha_segura',
authentication_type = 1; -- 1 = LDAP
Depois disso, usuários com contas válidas no domínio poderão logar no Zabbix sem cadastro prévio.
4) Dicas e melhores práticas
- Evite criar hosts automaticamente via API até validar todas as relações do NetBox.
- Tokens do NetBox não expiram por padrão — mas crie um usuário dedicado e com permissões mínimas.
- Monitore a validade do certificado LDAP se usar StartTLS ou LDAPS.
- Para ambientes com vários domínios, crie filtros LDAP específicos (ex.:
(|(memberOf=grp_zabbix)(memberOf=grp_admins))). - Centralize logs das integrações em
/var/log/zabbix-integration/.
5) Conclusão
A combinação Zabbix + NetBox + LDAP cria um ecossistema integrado: inventário único, autenticação centralizada e automação mais segura. Você elimina redundâncias e aumenta a confiabilidade da monitoração, porque cada dado nasce e morre no lugar certo.
Sobre o Sysadmin Urbano
O Sysadmin Urbano nasceu da vivência real no front das operações de infraestrutura moderna. Aqui falamos de servidores, containers, automação, boas práticas e também dos desafios invisíveis da rotina de quem mantém sistemas vivos. Sem fórmulas mágicas, sem tutoriais pela metade — apenas conteúdo prático, direto e feito para quem sabe que a TI é tanto técnica quanto sobrevivência.
Gostou deste conteúdo?
Siga o Sysadmin Urbano para mais artigos técnicos sobre Infraestrutura, SysOps e DevOps.

Nenhum comentário:
Postar um comentário