UserParameter: Utilizando SpeedTest-Cli junto ao Zabbix.

Nesse procedimento demonstrarei como podemos utilizar scripts junto com o Zabbix através de UserParameter. Ire utilizar como exemplo o SpeedTest-cli para realizar teste de download e upload.

Utilizaremos UserParameter, na qual podemos executar vários script ou linhas de comando remotamente utilizando o zabbix, é utilizado quando precisamos de algumas informações que o próprio zabbix não forneça, podemos usar comandos e scripts sem nos preocuparmos se o zabbix suportará, poderemos criar nossas próprias chaves e buscar informações que o zabbix não conseguiria sozinho nos fornecer, deste modo abre N possibilidades para serem feitas com a ferramenta. Este recurso serve para quando não existir algum tipo de checagem nos Templates, ou para realizar uma tarefa no qual o zabbix não possui, utilizamos para executar algum comando no servidor pelo agente do Zabbix e a resposta deste comando é enviada para o zabbix Server.

Nesse Laboratório utilizarei um Ubuntu Server 14.04
Zabbix 3.0 instalado nesse mesmo sistema operacional
Cliente SpeedTest 0.3.4
Esse procedimento é bom ser realizado em um horário em que sua conexão não esteja sendo utilizada.

1-Realizando a instalação do SpeedTest-Cli

Precisaremos instalar do pacote python-pip, para isso execute o comando abaixo.

apt-get install python-pip

Apos o término, realize a instalação do script do SpeedTest.

pip install speedtest-cli

Terá um retorno como este. Indicando que a instalação foi realizada com sucesso.

Caso já a tenha instalado, mais apenas precisa realizar o upgrade da ferramenta, utilize o comando abaixo.

pip install speedtest-cli — upgrade

Vamos realizar um teste nesse momento utilizando o script para realizar a leitura da velocidade de internet. Utilize o comando a seguir.

speedtest-cli

O retorno será igual este abaixo.

Podemos notar as taxas de Download e Upload sendo mostradas.
Caso queira visualizar o resultado em bytes, digite:

speedtest-cli — bytes

Podemos notar que agora o resultado é mostrado em Mbytes.
Também é possível realizar um teste simples, mostrando apenas a taxa de ping, download e upload e salvar ainda em um arquivo TXT. Para isso execute.

speedtest-cli — bytes — simple > /tmp/speedtest.txt

Há várias combinações a serem feitas e N funcionalidades para esta ferramenta, aconselho a darem uma olhada no seu Help.

speedtest –help

Pronto o script já está instalado e pronto para ser utilizado.

2-Criando o agendamento da execução do script.
Como o script possui um delay um pouco grande, em torno de 50 segundos para gerar os resultados, não poderíamos apenas rodá-lo com zabbix e pegar os resultados com o zabbix. O Zabbix possui um timeout de 30segundos para scripts externos. Logo uma forma que achei para funcionar o procedimento foi agendar a execução do script via Crontab. Recomendo ler um pouco mais sobre Crontab.

Como o speedtest utiliza uma banda da internet para realizar os testes, logo não podemos colocar para rodá-lo de hora em hora ou a cada minuto, uma dica que dou é configurá-lo para rodar de madrugada, em um horário onde não tenha consumo em seu link, deixando o resultado do teste mais confiável. Nesse exemplo agendarei para que o speedteste rode todos os dias as 3:10 da manha.

Edite o arquivo do contrab. E vamos inserir a linha conforme o exemplo abaixo, lembrando que esse comando é o mesmo que testamos logo acima. Apenas iremos agendá-lo para ser executado.

nano /etc/crontab

Salve o arquivo e pronto, agora todo os dias será realizado o teste as 3:10 da manha e os resultados serão salvos em /tmp/speedtest.txt.

3-Criando o UserParameter.
Como o script do speedtest está instalado no próprio zabbix, teremos que configurar o UserParameter no Agent do próprio zabbix Server. Adicione as linhas abaixo em /etc/zabbix/zabbix-agentd.conf:

UserParameter=upload[*],cat /tmp/speedtest.txt | grep “Upload:” | cut -d “ “ -f2
UserParameter=download[*],cat /tmp/speedtest.txt | grep “Download:” | cut -d “ “ -f2

Edite o zabbix agentd.

nano /etc/zabbix/zabbix_agentd.conf

Feito o procedimento acima, reinicie o agent do zabbix.

service zabbix-agent restart

Utilize o zabbixget para verificar se a chave está funcionando.

zabbix_get -s 127.0.0.1 -p 10050 -k “download”
zabbix_get -s 127.0.0.1 -p 10050 -k “upload”

Nosso UserParameter está funcionando certinho. Ate o momento já temos o speedtest-cli instalado, uma tarefa criada para executá-lo todos os dias as 3:10 da manha e, por fim, um UserParameter para ler as informações contidas dentro do nosso arquivo speedtest.txt.

4-Criando Item no Zabbix.
Basta nesse momento criarmos os dois itens no zabbix, um para a chave download e outro para a chave upload.
Como comentei logo acima, criaremos um item com a checagem agendada para as 3:10 da manha, para ficar um teste mais preciso e ficar fora do horário de utilização dos usuários da rede.
Em Key defina a chave que criamos la no agente.
Em Update Interval limpe o campo, irá substituir para zero não há problema.
Em Custom Intervals selecione scheduling e informe o intervalo h3m10 (todos dias as 3h e 10min)
Podemos encontrar mais sobre Custom Intervals aqui.

Depois repita o passo para o Upload.

Basta aguardar o update programado que aparecerá o valor no Zabbix.

Esse foi apenas um exemplo do que pode ser feito utilizando o UserParameter do Zabbix, podendo ser utilizado para diversas finalidades, conforme sua necessidade.

Originally published at https://www.bernardolankheet.com.br on March 7, 2016.

Monitoring, DevOps Student and content creation!

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store