Zabbix e passagem de parâmetros

ntrodução:
O objetivo deste tutorial é demostrar que através de um único script podemos ter coletas diversas, dinâmicas e sem a necessidade de alteração do script original e reinicialização de serviços (zabbix_agentd e/ou zabbix_proxy).

Entendendo a passagem de parâmetros:
Primeiro uma pequena aula de Shell Script para demonstrar o uso de parâmetros.

Nossos scripts aceitam um numero “ilimitado” de paramentros, basta executar o $*, para comprovarmos esse detalhe:
# cd /usr/local/etc/

# vi zabbix_parametros.sh
#!/bin/bash

echo $*

# ./zabbix_parametros.sh 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20

Na execução acima foram passados 20 parametros e foram exibidos os 20 parametros.

Neste segundo exemplo, demonstro que podemos referenciar apenas 9 parametros por vez:
# vi zabbix_parametros.sh
#!/bin/bash

echo $1 $2 $3 $4 $5 $6 $7 $8 $9
echo $10

# ./zabbix_parametros.sh 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
01 02 03 04 05 06 07 08 09
010

Na execução acima ao passar o parametro $10, ele reconheceu $1 seguido de 0, por isso o resultado foi 010, que é o primeiro parâmetro (01), seguido de 0, ou seja 010.

Mas usando o shift para eliminar um número X de parâmetros da memória podemos referenciar todos.
# vi zabbix_parametros.sh
#!/bin/bash

echo $1 $2 $3 $4 $5 $6 $7 $8 $9
shift 9
echo $1 $2 $3 $4 $5 $6 $7 $8 $9
shift 9
echo $1 $2

# ./zabbix_parametros.sh 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
01 02 03 04 05 06 07 08 09
10 11 12 13 14 15 16 17 18
19 20

Como pode ser observado na execução acima, exibi os 9 primeiros parâmetros, eliminei os 9 primeiros parametros da memória (shift 9), exibi os nove primeiros parametros dos que restam na memória, eliminei os 9 primeiros parametros da memoria (shift 9) e exibi os dois primeiros parametros que restam na memória.

Script versão final:
Após essa pequena “aula” de Shell e compreendido como trabalhar com parametros, vamos entender o quanto essa abordagem pode ser produtiva no Zabbix. Vamos a versão final do nosso script:
# vi zabbix_parametros.sh

#!/bin/bash

case $1 in

quant_arq)cd $2
ls -la | grep ^- | wc -l;;

tam_dir)cd $2
du -khs | tr “\t” ” ” | cut -d” ” -f1;;

tam_arq)ls -lh $2 | cut -d ” ” -f5;;

esac

Primeiramente vamos testar a execução das opções do script:
# ./zabbix_parametros.sh quant_arq /etc
137

# ./zabbix_parametros.sh quant_arq /var/log
51

# ./zabbix_parametros.sh tam_dir /var
24G

# ./zabbix_parametros.sh tam_dir /etc
30M
# ./zabbix_parametros.sh tam_arq /etc/passwd
1.9K

# ./zabbix_parametros.sh tam_arq /var/log/messages
2.0K

Alguns detalhes importantes que temos que observar:
Possuo um único script com 3 funções (quant_arq, tam_dir e tam_arq), mas poderiam ser inumeras funções, de acordo com a necessidade.
Como podemos observar nas funções, graças a passagem de parametros, elas se tornam dinâmicas, podendo retornar a quantidade de arquivos, tamanho de diretório e o tamanho de arquivo, de qualquer arquivo/diretório que nos interesse.

Colocando o Script no Zabbix:
O primeiro passo é alterar o proprietário e grupo do script:
#chown zabbix:zabbix /usr/local/etc/zabbix_parametros.sh

Para utilizar o script no Zabbix, vamos utilizar o UserParamenter:
# cat /usr/local/etc/zabbix_agentd.conf
UserParameter=parametros[*],/usr/local/etc/zabbix_parametros.sh $1 $2 $3 $4 $5 $6 $7 $8 $9

Reinicie o serviço do agente:
# service zabbix_agentd restart
Shutting down zabbix agent:               [  OK  ]
Starting zabbix agent:                    [  OK  ]

Testando a leitura das informações:
# zabbix_get -s IP -k parametros[quant_arq,/etc]
137

# zabbix_get -s IP -k parametros[quant_arq,/var/log]
51

# zabbix_get -s IP -k parametros[tam_dir,/var]
24G

# zabbix_get -s IP -k parametros[tam_dir,/etc]
20M

# zabbix_get -s IP -k parametros[tam_arq,/etc/passwd]
1.9K

# zabbix_get -s IP -k parametros[tam_arq,/var/log/messages]
2.0K

Conclusão:
Além da vantagem óbvia que é o fato do script se tornar dinâmico,  a outra vantagem, como dito no início, é que eu preciso criar o UserParameter uma única vez, pois o nome do script não muda, apenas o seu conteúdo, logo não preciso reiniciar o agente ou o proxy toda vez que alterar o script.

Basta criar os itens no Zabbix utilizando como chave o que foi passado no comando zabbix_get na opção -k (de Key – Chave em inglês).

Fonte: andredeo

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: