Olá pessoal, quanto tempo não é verdade.
Já estava com saudades de escrever os artigos, mas graças a Deus, e um bom planejamento as demandas se estabilizaram na empresa, então posso ajudar contribuindo um pouco mais com a comunidade.
Mas para que serve isso?
Assim surge uma perguntar crucial, qual o motivo de usar isso? Um agente instalado não seria melhor?
Ok, jovem! Como um professor meu falava: “ cada caso é um caso.”
Realmente se a intenção é realizar monitoramento de infra estrutura clássica (servidores, rede, etc), não faz sentido a principio.
Porém, imagine a seguinte situação, você possui uma aplicação em Python que faz alguma rotina (exemplo comparação de dados), e ao final ela devolve um valor (ok, not ok), e é necessário ter esse retorno de uma forma muito rápida.
Imaginando isso, seria inviável salvar essa informação em um Banco de dados e em seguida para criar um sensor na ferramenta e ler o dado, indo mais além, criar mais um step na aplicação que poderia ser uma API para ler o valor do banco e na sequência usar o Zabbix para chamar o endpoint e aí sim ter a métrica.
Nesta situação, é o que uso no Zabbix Sender é interessante, porque você elimina diversos steps e manda a informação direto para o monitoramento.
“Para quem tem mais conhecimento em rede o Sender se assemelha a um Trap SNMP”
Depois da explicação “básica”, vamos ao que interessa, que é: Zabbix Sender com Python. 🙂
Primeiro temos que criar um host no Zabbix (Não é necessário configurações especiais)
O próximo passo é criar um item conforme as imagens abaixo:

Clique em create item

Para as configurações:
Name: Coloque o nome do item que vai monitorar, aqui estou usando Trapper Item
Type: Zabbix trapper
Key: Coloque um identificador de fácil compreensão sem espaços (essa informação será usada mais tarde no python, anote!), no meu caso usei: sendertrap.
Perfeito! Já possuimos tudo o que precisamos, agora vamos ao nosso grande pequeno script.
Aqui vou utilizar o VSCode mas pode usar a IDE que achar melhor 🙂
Primeiramente vamos instalar os módulos necessários com o comando:
pip install py-zabbix
Agora importe o modulo da seguinte forma:
from pyzabbix import ZabbixMetric, ZabbixSender
Para enviar a métrica faça isso:
packet = [ ZabbixMetric(‘NOME_DO_HOST_CRIADO’, ‘sendertrap’, valor),]
Neste estágio você pode observar que passei uma variável “valor”, isso porque não vou passar o dado fixo, claro se quiser fazer isso basta trocar a variável pelo valor de sua preferência.
Por fim vamos encaminhar os dados para o Zabbix:
result = ZabbixSender(zabbix_server=’192.168.120.96′, zabbix_port=10051, use_config=None, chunk_size=250, socket_wrapper=None, timeout=10).send(packet)
Observe que não existe segredos aqui passamos o endereço do Server Zabbix ou Zabbix Proxy (no meu caso é um Zabbix Proxy, que é a melhor opção sempre).
Observe que não existe segredos aqui, passamos o endereço do Server Zabbix ou Zabbix Proxy (no meu caso é um Zabbix Proxy, que é a melhor opção sempre).
O Script inteiro fica dessa forma:
O Script inteiro fica dessa forma:

Se prestar atenção vai observar que tem uma adição que entrega o valor 8 (1+8) para a variável “valor”, vou fazer algumas execuções com valores maiores e menores para ver o resultado.


Bem é isso ai pessoal, tudo funcionando.
Espero que as dicas de hoje possam ajudar e qualquer duvida fiquem a vontade para perguntar.
Link para fonte no github: https://github.com/rafapil/zabbix_sender
No responses yet