UserParameter vs
Zabbix Sender
Quem sou eu
André (Luis Boni) Déo
Fundador da Comunidade Zabbix Brasil
Co-Autor do Livro de A a Zabbix
Administrador de Redes, Professor Universitário, Membro da Comunidade
OpenSource, Mestrando em Eng. Elétrica – PUC Campinas.
@deoandre andredeo@gmail.com
http://andredeo.blogspot.com
UserParameter
Visão geral
Preciso monitorar algo que nativamente não existe no
Zabbix
Já possuo um script / comando que retorna exatamente
o dado que eu preciso
UserParameter
Sintaxe
No arquivo zabbix_agentd.conf:
UserParameter=<chave>,<comando>
UserParameter
Exemplos
UserParameter=dir_c,dir c:
UserParameter=conectados,who | wc -l
UserParameter
Testando a leitura dos dados
# zabbix_get -s <IP> -k dir_c
# zabbix_get -s <IP> -k conectados
UserParameter
Utilizando UserParameter com Passagem de parâmetros
#!/bin/bash
case $1 in
minuto) echo "`date +%M`%2" | bc;;
arquivos) ls -l $2 | grep ^- | wc -l;;
tam.dir) du -s $2 | cut -f1;;
conectados) who | wc -l;;
esac
/Scripts_Zabbix/geral.sh
UserParameter
Exemplos
UserParameter=menu[*],/Scripts_Zabbix/geral.sh $1 $2
$3 $4 $5 $6 $7 $8 $9
# zabbix_get -s <IP> -k menu[arquivos,/etc]
# zabbix_get -s <IP> -k menu[tam.dir,/var]
$1 $2
UserParameter
Pré-requisitos
O usuário zabbix deve possuir permissão de execução
no script, nos comandos invocados e nos diretórios
envolvidos.
No caso do Windows, é o usuário que inicia o serviço do
Zabbix Agent
UserParameter
Pré-requisitos
O script não pode demorar mais de 30 segundos para
ser executado!!
UserParameter
### Option: Timeout
# Spend no more than Timeout seconds
on processing
#
# Mandatory: no
# Range: 1-30
# Default:
# Timeout=3
UserParameter
E agora?
Desenvolva um script que crie um txt
Agende o script no crontab / agendador de tarefas
Faça um UserParameter apenas para dar um cat / type
no txt gerado pelo script
Zabbix Sender
Visão Geral
zabbix_sender é um utilitário de linha de comando para
envio de dados para um servidor Zabbix
No servidor Zabbix o item deve ser do tipo Zabbix
trapper
Zabbix Sender
Visão Geral
A chave criada para o item deve ser a mesma utilizada
no comando
O item só aceita receber dados de quem é o responsável
pelo host:
Se o host é monitorado via Proxy, o
zabbix_sender deve partir do Proxy!
Zabbix Sender
Sintaxe
zabbix_sender -z <IP_Server> -s <Nome_do_Host> -k
<Chave> -o <Valor>
Zabbix Sender
Exemplos
# zabbix_sender -z 192.168.56.101 -s "Linux
Cliente" -k dolar.compra -o 3.22
# zabbix_sender -z 192.168.56.101 -s "Linux
Cliente" -k dolar.venda -o 3.23
Zabbix Sender
Vantagens na Utilização
Em situações onde o tempo de execução do script pode
variar bastante:
Consulta a banco de dados;
Backup;
Consulta de dados na web/sistemas de terceiros.
#!/bin/bash
Server=192.168.56.101
Cliente=“Linux Cliente”
$A=`instruções 1`
$B=`instruções 2`
...
/usr/local/bin/zabbix_sender -z $Server -s
"$Cliente" -k dolar.compra -o $A
/usr/local/bin/zabbix_sender -z $Server -s
"$Cliente" -k dolar.venda -o $B
Zabbix Sender
# crontab -e
# Envia cotaçao do dolar para o Zabbix
*/5 * * * *
/Scripts/Scripts_Zabbix/dolar.sh
Zabbix Sender
Aqui o tempo varia de acordo com o Script, poderia ser
1 vez ao dia, por exemplo.
Zabbix Sender
Visão Geral – Envio de dados em lote
Podemos enviar dados em lote especificando a data e
hora, inclusive no passado, utilizando o formato Unix
timestamp1
Excelente recurso para migração / integração de
soluções e envio de dados em grandes quantidades
1 https://www.epochconverter.com
Zabbix Sender
Sintaxe
zabbix_sender -z <IP_Server> -T -i <Arquivo_de_Dados>
Cada linha do arquivo contém os seguintes campos,
delimitados por espaço em branco:
<hostname> <chave> <timestamp> <valor>
Zabbix Sender
Visão Geral - Bibliotecas
O Zabbix Sender pode ser implementado via bibliotecas,
por exemplo em Python2
Aumenta ainda mais as possibilidades!!
2 https://github.com/adubkov/py-zabbix
Zabbix Sender
Sintaxe
...
# Importa as bibliotecas
from pyzabbix import ZabbixSender,ZabbixMetric
...
# Define as chaves dos itens no Zabbix
L1=["temperatura", "umidade", "RSSIu", "RSSId"]
# Define as variáveis do Script que alimentarão os itens
L2=[AD0,AD1,RSSIu,RSSId]
Zabbix Sender
# Faz um loop para enviar cada valor de métrica para cada item
no Zabbix
x = 0
while x<len(L1):
# Envia os valores para o Zabbix
metrics = []
m = ZabbixMetric('Zabbix server', L1[x], L2[x])
metrics.append(m)
zbx = ZabbixSender(zabbix_server='192.168.56.101',
zabbix_port=10051, use_config=None)
zbx.send(metrics)
x+=1
Zabbix Sender
Visão Geral – Zabbix Sender no Android
O MIT App Invetory3 permite criar aplicações para
Android utilizando blocos de programação
Já que o Zabbix Sender pode ser implementado através
de bibliotecas...
3 http://appinventor.mit.edu/explore
Zabbix Sender
Zabbix Sender
Zabbix Sender
https://goo.gl/iNTm79
Dúvidas ?

UserParameter vs Zabbix Sender - 2º ZABBIX MEETUP DO INTERIOR-SP