UserParameter: Utilizando SpeedTest-Cli junto ao Zabbix.

By | 7 de março de 2016

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.

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

Terá um retorno como este. Indicando que a instalação foi realizada com sucesso.imageCaso já a tenha instalado, mais apenas precisa realizar o upgrade da ferramenta, utilize o comando abaixo.

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

O retorno será igual este abaixo.imagePodemos notar as taxas de Download e Upload sendo mostradas.
Caso queira visualizar o resultado em bytes, digite:

imagePodemos 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.

imageHá várias combinações a serem feitas e N funcionalidades para esta ferramenta, aconselho a darem uma olhada no seu 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.imageComo 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.

imageSalve 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:

Edite o zabbix agentd.

imageFeito o procedimento acima, reinicie o agent do zabbix.

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

imageNosso 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. imageDepois repita o passo para o Upload. imageBasta aguardar o update programado que aparecerá o valor no Zabbix.imageEsse foi apenas um exemplo do que pode ser feito utilizando o UserParameter do Zabbix, podendo ser utilizado para diversas finalidades, conforme sua necessidade.

9 thoughts on “UserParameter: Utilizando SpeedTest-Cli junto ao Zabbix.

  1. Milton Dias Junior

    Parabéns pelo post, muito bom! Fiz no meu Zabbix 2.4.4 e funcionou perfeitamente.

    Reply
  2. João de Faria Jr

    Bernardo bem legal, porém fiquei com uma duvida;

    Se eu preciso saber o resultado do speedtest na hora qual a vantagem de colocar ele pra medir de madrugada (ou qualquer outra hora)?

    Reply
    1. blankheet Post author

      Olá João. Eu fiz de madrugada por ser um horário em que não há nenhum usuário utilizando a internet, pois pode have uma inconformidade no resultado. Mais nada impeça que você coloque para fazer de hora em hora.

      Reply
  3. Rafael Marcelo

    No Debian 8.4 São os mesmos procedimentos? Eu fiz e na hora que digito zabbix_get -s 127.0.0.1 -p 10050 -k “download” me retorna que arquivo ou o diretorio não foi encontrado.

    Reply
    1. blankheet Post author

      Olá rafael, no Debian é o mesmo procedimento, pode ser que seu Userparameter não esteja configurado corretamente, já tentou refaze-lo?

      Reply

Deixe uma resposta