Integrando o zabbix com o Downdetector

Downdetector

O Downdetector é um poderosa ferramenta que monitora em tempo real a queda de serviços através de reports de seus usuários. O nosso objetivo aqui nesse post é integrar algumas de suas funções no zabbix, para posteriormente integrarmos em alguma ferramenta de fácil visualização seja por relatório, dashboards ou integração com outras ferramentas como o Grafana.

Vamos utilizar o script criado e disponibilizado no github do remontti, todos os créditos do script ao devido criador.

https://github.com/remontti/downdetector_zbx_grafana

Preparando o ambiente

Como forma obrigatória é necessário ter no mesmo ambiente do zabbix os seguintes pacotes:

Python 3 beautifulsoup4 cloudscraper requests openssl 1.1.1

Na maioria dos sistemas linux os comandos abaixo vai resolver as dependências necessárias

apt install python3-pip
pip3 install bs4
pip3 install requests
pip3 install cloudscraper

Observação: Pode ser necessário adicionar a palavra “sudo” antes de cada comando dependendo do seu sistema operacional.

Observação²: Se algum comando acima usando o pip3 der o erro:

Você pode ter que executar o pip forçando o diretório que ele indicar nessa mensagem, por exemplo, se der esse erro ao tentar instalar o “requests”, você pode tentar o comando alternativo abaixo (lembre-se de editar o caminho que ele te indicar)

pip3 install --target=/usr/lib/python3/dist-packages --upgrade requests

Observação³: Caso tiver tendo algum problema com o pip e seus comandos como o PIP 3.5 ou superior requerido, você pode fazer os comandos abaixo antes de continuar, caso tenha instalado normal, não faça nada e vá para a instalação do open ssl.

apt-get install xz-utils
wget https://www.python.org/ftp/python/3.5.0/Python-3.5.0rc3.tgz
tar -zxvf Python-3.5.0rc3.tgz
cd Python-3.5.0rc3
./configure
make
make test
make install

pip install --upgrade pip

pip install cloudscraper
pip install requests
pip install bs4

Caso já tenha o pip instalado, poderá usar o comando abaixo para instalar as dependências, caso tenha dado certo a instalação do pip com os comandos acima, não é necessário executar, é só um passo a mais em caso de erro.

pip install requirements.txt

apt-get install wget vim
wget https://www.openssl.org/source/openssl-1.1.1a.tar.gz
tar -zxf openssl-1.1.1a.tar.gz && cd openssl-1.1.1a
./config
make
mv /usr/bin/openssl ~/tmp
make install
ln -s /usr/local/bin/openssl /usr/bin/openssl
ldconfig

Observação: Pode ser necessário executar o comando “apt install make gcc” antes de executar o comando “make

openssl version

Observação: A saída deve ser algo como “OpenSSL 1.1.1a 20 Nov 2018


Configurações

cd /tmp/
apt-get install unzip
wget https://github.com/remontti/downdetector_zbx_grafana/archive/refs/heads/master.zip
unzip master.zip
cd downdetector_zbx_grafana-master/
mv downdetectorDiscovery.py /usr/lib/zabbix/externalscripts
mv downdetectorlist.list /usr/lib/zabbix/externalscripts
mv downdetector.py /usr/lib/zabbix/externalscripts
chown zabbix. /usr/lib/zabbix/externalscripts/downdetector*
chmod a+x /usr/lib/zabbix/externalscripts/downdetector*.py

Os comandos acima foram todos para mover os arquivos de script para o diretório do zabbix. Agora necessitamos configurar o responsável por consultar direto do site do Downdetector, para isso vamos continuar:

vim /usr/lib/zabbix/externalscripts/downdetectorlist.list

E agora, edite as linhas que correspondem ao serviço que vai querer monitorar, é necessário editar somente o primeiro número, sendo 0 para não consultar e 1 para consultar, vou fazer o teste com os seguintes serviços: Algar, Sicoob, Whatsapp, Gmail

Fica algo como os exemplos abaixo

Para ver a lista completa, poderá consultar aqui


Template

Após a edição, vamos importar o template para a integração ao Zabbix

Caso não tenha baixado uma cópia para o seu computador do github, baixe aqui

Descompacte o arquivo .zip, logue no zabbix na versão web como usuário com acesso de administrador, e navegue por: Configuração > Templates > Importar, selecione o arquivo “zbx_export_templates.xml

Observação: Esse script só funciona na versão 4.4 ou posterior do Zabbix.

Após a importação o nome do template será: RR DownDetector Discovery

Teste rápido

Segundo a explicação no GitHub você pode testar se está funcionando com o comando: ./downdetector.py {serviço}, então vamos testar com o whatsapp

cd /usr/lib/zabbix/externalscripts
./downdetector.py whatsapp

O resultado sem erro deverá ser algo como:

0,1,2 ou 3
Sendo 0: Não está sendo possível verificar no momento
Sendo 1: Está normal
Sendo 2: Está com intermitências
Sendo 3: Está com alguma instabilidade no serviço

Caso tenha dado o erro do Cloudflare, como o exemplo abaixo, não se preocupe, o problema é que o Cloudflare que é a proteção de ataque DDOS e antibot não deixa o script continuar por necessitar de uma verificação antibot.

Para resolver esse problema faça o seguinte procedimento:

cd /usr/lib/zabbix/externalscripts/
vim downdetector.py

Agora basta alterar o source para https://downdetector.com/fora-do-ar/ ou seja tirando o .BR o cloudflare não vai mais interferir no acesso ao site, porém vale resaltar que quando você tira o .br do link, você está recebendo dados do downdetector dos Estados Unidos e não do Brasil, então alguns serviços como correios e outros nacionais podem não funcionar como deveriam por não ter no exterior #ficaAdica.

Cadastrando o HOST

Uma vez todos os procedimentos acima feitos e realizado o teste com sucesso, vamos partir para configurar o host dentro do zabbix, acesse o Zabbix na versão web como super-administrador e navegue até Configuração > Hosts > Criar host, e crie conforme as especificações abaixo, ou modificando a sua necessidade, menos na interface.

A partir de agora, o zabbix já vai começar a monitorar através do script anteriormente configurado.

Logo o sistema carregará o zabbix com os dados recolhidos, você pode observar através do menu Monitoramento > Dados Recentes > E filtrar pelo template “Downdetector“, começara a ver algo como o exemplo abaixo

O próximo post será a criação de um mapa em forma gráfica usando os dados do Downdetector, em breve posto no Blog, bye (Ta abaixo)

4 Comments

  1. Ao executar downdetector.py vivo tive este problema:
    cloudscraper.exceptions.CloudflareCaptchaProvider: Cloudflare Captcha detected, unfortunately you haven’t loaded an anti Captcha provider correctly via the ‘captcha’ parameter.
    consigo resolver removendo o .br no programa, mas nao consigo consultar sites br, como você fez para resolver?

    1. Estranho, eu não fiz nenhum passo a mais, tenta reiniciar todo o servidor, para reiniciar por garantia todos os serviços.

      Não sei se tem algo relacionado também ao provedor de internet que pode interferir ou não, no ambiente que testei foi Algar a internet.

      1. O que ele quer dizer, você trouxe como integrar o downdetector com o Zabbix, mas não o Brasileiro. COmo faz pra resolver para conseguirmos consultar as disponibilidades dos serviços brasileiros?

Deixe uma resposta