Usando o Zabbix Sender

Compartilhe:


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:

Link GitHub

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

Compartilhe:


Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *