quinta-feira, 16 de outubro de 2025

Zabbix — da Migração ao Fine-Tuning - capítulo 4

Conectando o Zabbix ao mundo: integração com NetBox e LDAP

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.

🔗 Confira mais artigos ou volte para a página inicial.

Gostou deste conteúdo?

Siga o Sysadmin Urbano para mais artigos técnicos sobre Infraestrutura, SysOps e DevOps.

Voltar para a página inicial

Nenhum comentário:

Postar um comentário