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
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:
Requirement already satisfied: requests in /usr/lib/python3/dist-packages (2.21.0)
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
Code language: JavaScript (javascript)
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
Code language: JavaScript (javascript)
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
Code language: CSS (css)
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
Code language: JavaScript (javascript)
Observação: Pode ser necessário executar o comando “apt install make gcc” antes de executar o comando “make“
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
Code language: PHP (php)
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
Code language: PHP (php)
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
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.
cloudscraper.exceptions.CloudflareChallengeError: Detected a Cloudflare version 2 Captcha challenge, This feature is not available in the opensource (free) version.
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.
Infelizmente, perdi as imagens originais, mas é o apontamento interno para o servidor.
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“
O próximo post será a criação de um mapa em forma gráfica usando os dados do Downdetector