image

Access unlimited bootcamps and 650+ courses

50
%OFF

FA

Felipe Aparecido04/09/2025 17:35
Share

Relatório Automatizado de Elementos Monitorados no Zabbix usando Python e ZABBIX API

  • #SQL
  • #Lógica de Programação
  • #Python
  • #API

O Zabbix é uma ferramenta muito utilizada em operações de monitoramento de infraestrutura em conjunto com o Grafana, mas a coleta de dados de sua base para geração de relatórios ocorre principalmente a partir de sua API, a ZABBIX-API, e usando bibliotecas como a pyzabbix no Python é possível consumir essas informações.

Hoje me deparei com uma demanda, que me permitiu conhecer mais um pouco o uso dessas tecnologias em conjunto. Basicamente o que eu precisava era obter uma lista com todos os elementos monitorados de cada cliente e exportar para uma planilha no excel. O que me pegou, foi primeiramente entender como o Zabbix armazena essas informações em suas tabelas de banco de dados para que eu pudesse fazer as requisições corretamente.

Descobri que cada Host pode ter mais de um grupo, e para o conjunto de dados necessário para minha planilha eu deveria consultar 3 tabelas diferentes e fazer o relacionamento entre as colunas ID delas:

  • O Zabbix usa um conceito muito conhecido em banco de dados, a Relação Muitos para Muitos para resolver a questão de 1 host possuir vários grupos.
  • Ele usa uma tabela intermediária que conecta as tabelas principais ‘hosts’ e ‘groups’, essa tabela de “ligação” é chamada ‘hosts_groups’.

Como a associação funciona:

1.     hosts: Contém informações sobre cada host (por exemplo: hostid, name)

2.     groups: Esta tabela contém informações sobre cada grupo de hosts (por exemplo: groupid, name)

3.     hosts_groups: Esta tabela é a tabela de ligação. Ela não contém informações do host ou do grupo, apenas os IDs que os conectam.

Exemplo Prático:

Se você tem:

Um host com hostid = 101 (Servidor Web)

Um grupo com groupid = 20 (Grupo Linux)

Um grupo com groupid = 30 (Grupo de Servidores Web)

Para associar o "Servidor Web" a ambos os grupos, a tabela hosts_groups teria duas linhas:

hostid groupid

101      20

101      30

Com essas informações dividi meu código em 4 partes: Módulo 1 para coleta da tabela 'hosts'; Módulo 2 para coleta da tabela 'groups'; Módulo 3 para coleta da tabela 'hosts_groups' e por fim o Módulo 4 para realizar o merge das colunas e gerar um arquivo .xlsx de cada tabela do zabbix e um para a tabela final com os dados consolidados.

Foi bem legal, porque eu precisei pensar na ordem correta de consulta dessas tabelas, usando conceitos de lógica e de análise de dados, embora não tenha usado SQL fiz consultas e precisei entender uma tabela de bancos de dados relacionais e mais algumas estratégia da linguagem de programação Python.

O dataframe final está entregue, mas ainda precisa de refinamento para podermos na próxima versão filtrar os Hosts pelo GroupID principal, a fim de evitar duplicatas e permitir a geração de relatórios individuais para cada cliente.

Share
Recommended for you
Suzano - Python Developer #2
Suzano - Python Developer
Heineken - Inteligência Artificial Aplicada a Dados com Copilot
Comments (0)