Como criar Discovery com Zabbix

Publicado por Rafael Mendonça em 02/06/2014

[ Hits: 13.173 ]

Blog: http://rafaelmendonca.tk

 


Como criar Discovery com Zabbix



Abordaremos o recurso de Low-Level Discovery do Zabbix.

Um recurso muito importante e interessante para qualquer ambiente de monitoramento. Com ele, podemos automatizar o cadastro de novos itens, triggers e gráficos de maneira automática.

No Zabbix 2.2.3, temos suporte a 3 tipos de suportes ao Low-Level Discovery;
  • Discovery de sistema de arquivos;
  • Discovery de interfaces de rede;
  • Discovery de SNMP OID.

E agora, não existe o suporte ao Discovery que você precisa? Crie seu próprio Discovery usando userparameter!

Imagine o seguinte cenário: você quer monitorar todos os arquivos de log do diretório /var/log/ do servidor de aplicação.

Teoricamente, teríamos que cadastrar cada arquivo como um ITEM no front-end do Zabbix, exemplo:

logrt[/var/log/syslog,,,300]

Para não ter que cadastrar item a item, iremos criar um Discovery desses itens e cadastrar automaticamente no front-end. Usaremos um Shell Script gerando uma saída no formato JSON reconhecido pelo Zabbix e iremos configurar o script como userparameter no arquivo de configuração do agente do Zabbix.

O formato JSON é como se fosse um XML para uma resposta, no nosso caso, irá gerar um array com a localização dos arquivos de logs e o Zabbix tem a inteligência de interpretar esse JSON e cadastrar os itens no host, de acordo com o protótipo de item.

Passos

1. Criar um Shell Script:

Script no GitHub: https://github.com/rafaelmendonca/Zabbix

# vi /etc/zabbix/discovery_files_logs.sh

#!/bin/sh
# Rafael Mendonca
# Qui Mai 29 17:24:32 BRT 2014
#
# Script para gerar saída no formato JSON
#
# Variables
#


FIND=$(which find)
DIRLOG="/var/log/"

# Begin
for log in $(${FIND} ${DIRLOG} -type f | egrep -v "*.gz.*|*.[0,1].*" | xargs file | grep -v data$ | awk -F\: '{print $1}'); do
    # Aramzena o valor no ARRAY.
    logfile="$logfile,"'{"{#LOGFILE}":"'$log'"}'
done
echo '{"data":['${logfile#,}' ]}'

1.1: Adicione a permissão de execução e altere o dono e grupo do arquivo:

# chmod 750 /etc/zabbix/discovery_files_logs.sh
# chown zabbix:zabbix /etc/zabbix/discovery_files_logs.sh


1.2: Executando o script:

Dica.: para validar o JSON gerado pelo script, instale o utilitário do Python para fazer o parse do JSON:

# apt-get install python-simplejson

Executando o script e gerando o JSON:
Obs.: caso a saída seja semelhante ao resultado abaixo, ocorreu tudo certo:

# /etc/zabbix/discovery_files_logs.sh | python -mjson.tool
{
    "data": [
        {
            "{#LOGFILE}": "/var/log/zabbix/zabbix_proxy.log"
        },
        {
            "{#LOGFILE}": "/var/log/zabbix/zabbix_agentd.log"
        },
        {
            "{#LOGFILE}": "/var/log/syslog"
        },
        {
            "{#LOGFILE}": "/var/log/daemon.log"
        },
        {
            "{#LOGFILE}": "/var/log/news/news.notice"
        },
        {
            "{#LOGFILE}": "/var/log/news/news.err"
        },
        {
            "{#LOGFILE}": "/var/log/news/news.crit"
        },
        {
            "{#LOGFILE}": "/var/log/fsck/checkroot"
        },
        {
            "{#LOGFILE}": "/var/log/fsck/checkfs"
        },
        {
            "{#LOGFILE}": "/var/log/installer/syslog"
        },
        {
            "{#LOGFILE}": "/var/log/installer/status"
        },
        {
            "{#LOGFILE}": "/var/log/installer/partman"
        },
        {
            "{#LOGFILE}": "/var/log/installer/hardware-summary"
        },
        {
            "{#LOGFILE}": "/var/log/installer/cdebconf/questions.dat"
        },
        {
            "{#LOGFILE}": "/var/log/installer/cdebconf/templates.dat"
        },
        {
            "{#LOGFILE}": "/var/log/installer/lsb-release"
        },
        {
            "{#LOGFILE}": "/var/log/mail.warn"
        },
        {
            "{#LOGFILE}": "/var/log/dmesg"
        },
        {
            "{#LOGFILE}": "/var/log/apt/history.log"
        },
        {
            "{#LOGFILE}": "/var/log/apt/term.log"
        },
        {
            "{#LOGFILE}": "/var/log/auth.log"
        },
        {
            "{#LOGFILE}": "/var/log/mail.log"
        },
        {
            "{#LOGFILE}": "/var/log/user.log"
        },
        {
            "{#LOGFILE}": "/var/log/mail.info"
        },
        {
            "{#LOGFILE}": "/var/log/lpr.log"
        },
        {
            "{#LOGFILE}": "/var/log/dpkg.log"
        },
        {
            "{#LOGFILE}": "/var/log/kern.log"
        },
        {
            "{#LOGFILE}": "/var/log/aptitude"
        },
        {
            "{#LOGFILE}": "/var/log/messages"
        },
        {
            "{#LOGFILE}": "/var/log/mail.err"
        },
        {
            "{#LOGFILE}": "/var/log/debug"
        },
        {
            "{#LOGFILE}": "/var/log/alternatives.log"
        }
    ]
}


2. Configurar o userparameter no agente do Zabbix.

Dica: userparameter é um recurso do Zabbix que permite executar scripts do lado do agente para coletar valores específicos.

# vi /etc/zabbix/zabbix_agentd.conf

Acrescente a seguinte linha:

userparameter=discovery.logfile,/etc/zabbix/discovery_files_logs.sh

2.1: Após a configuração, faça um restart no agente do Zabbix:

# /etc/init.d/zabbix-agentd restart

3. Feito isso, acesse o front-end do Zabbix e crie o Discovery.

4. Agora, crie o protótipo de item.

Conclusão

É isso aí, pessoal!
Mais um tutorial trivial para quem trabalha com monitoramento

* Lembrando que usei como exemplo, o monitoramento de arquivos de log. Ficou um pouco incompleto, pois não montei a trigger, que não era o foco desta dica.

Maiores detalhes em: http://rafaelmendonca.tk

Fiquem à vontade para entrar em contato.

Até a próxima! ;)

Rafael Mendonça
Consultoria, Projetos & Treinamentos
rafaelmendonca3f[at]gmail.com
http://rafaelmendonca.tk
LPI 3 e PCP-201

Outras dicas deste autor

Como conquistar a LPI 1

Configurando Wireless no GNU/Linux

Leitura recomendada

Como atribuir um rótulo a um pendrive no Linux (ou outro dispositivo USB)

Bloqueando 889.898 sites pornográficos no seu computador

Validando checksum MD5 de arquivos

Acertando os ponteiros do seu Linux

Como trocar chave de segurança entre servidores

  

Comentários
[1] Comentário enviado por millinux em 02/06/2014 - 14:24h

Muito bom

[2] Comentário enviado por elvispompeu em 04/07/2014 - 08:49h

Esse é meu garoto HUSKOSEHU =D

[3] Comentário enviado por diegotesch em 15/03/2016 - 16:04h

legal o tutorial, mas o discovery no zabbix que voce se propos a mostrar não encontra-se no tutorial.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts