Integrando o Zabbix com Downdetector - Cleidijane/Integrando-o-zabbix-com-Downdetector GitHub Wiki

PREPARANDO O AMBIENTE

Antes de iniciar, é imprescindível ter os seguintes pacotes instalados no mesmo ambiente do Zabbix:

Python 3
Beautiful Soup 4
Cloudscraper
Requests
OpenSSL 1.1.1

A maioria dos sistemas Linux pode satisfazer as dependências necessárias com os comandos abaixo:

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

[!NOTA] Pode ser necessário adicionar a palavra “sudo” antes de cada comando dependendo do seu sistema operacional.

[!IMPORTANTE] Se algum comando acima usando o pip3 der o erro:

Requirement already satisfied: requests in /usr/lib/python3/dist-packages (2.21.0)

É possível que você precise usar o comando "pip" especificando o diretório indicado por essa mensagem. Por exemplo, se você encontrar esse erro ao tentar instalar o pacote "requests", uma alternativa é utilizar o seguinte comando (lembre-se de ajustar o caminho que for mencionado na mensagem original).

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

Se estiver enfrentando problemas com os comandos do pip, como a solicitação de PIP 3.5 ou uma versão superior, é recomendado executar os seguintes comandos antes de prosseguir. No entanto, se a instalação ocorreu sem problemas, ignore esta etapa e siga diretamente para a instalação do OpenSSL.

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

Se você já possui o pip instalado, pode utilizar o seguinte comando para instalar as dependências. Porém, se a instalação do pip foi bem-sucedida com os comandos mencionados anteriormente, não é necessário executar este passo adicional; ele está disponível apenas como uma medida em caso de erros.

pip install requirements.txt

Instalando o Open SSL 1.1.1

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

[!NOTA] Pode ser necessário executar o comando “apt install make gcc” antes de executar o comando “make“

Checando o Open SSL

openssl version

[!NOTA] A saída deve ser algo como “OpenSSL 1.1.1a 20 Nov 2018“

CONFIGURAÇÕES

Movendo os arquivos necessários

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 passos anteriores tinham como objetivo transferir os arquivos de script obtidos no repositório do GitHub do Remontti, criador do script de integração, para o diretório do Zabbix. Agora, é hora de configurar o componente encarregado de realizar consultas diretamente ao site do Downdetector. Para continuar, siga as orientações abaixo:

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

Agora, você deve editar as linhas relacionadas aos serviços que deseja monitorar. É necessário modificar somente o primeiro número, atribuindo o valor 0 para não realizar consulta e 1 para efetuar a consulta. Para fins de teste, vou utilizar os seguintes serviços: Algar, Sicoob, Whatsapp e Gmail.

O resultado ficará semelhante aos exemplos abaixo:

Lista

VERIFICAÇÃO RÁPIDA

Você pode realizar um teste para verificar se está funcionando corretamente usando o comando: ./downdetector.py {serviço}. Vamos fazer um teste de funcionamento utilizando o WhatsApp como exemplo.

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

O resultado esperado, sem erros, deve ser o seguinte:

0, 1, 2 ou 3

O significado de cada valor é:

0: Não é possível verificar no momento.

1: Serviço está operando normalmente.

2: O serviço apresenta intermitências.

3: Há alguma instabilidade no serviço.

Quando os valores sempre retornam como 0 em todas as aplicações, isso pode ser devido à política de Compartilhamento de Recursos entre Origens (CORS, na sigla em inglês) no site do Downdetector. O CORS é uma medida de segurança implementada pelos navegadores da web para prevenir que scripts maliciosos possam realizar solicitações a partir de um domínio e acessar recursos em outro domínio, sem permissão. Isso ajuda a evitar ataques e protege a privacidade dos usuários.

No entanto, o CORS pode ocasionalmente interferir com as tentativas de acessar recursos de diferentes domínios, como pode estar acontecendo no seu caso com o Downdetector. Para resolver isso, é possível acessar o arquivo "downdetector.py" e substituir o prefixo "HTTPS" na URL do site "https://downdetector.com.br/fora-do-ar/" por "HTTP". Isso pode permitir que a requisição seja bem-sucedida ao contornar restrições CORS.

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

Lembre-se de que, embora essa solução possa contornar temporariamente o problema, ela pode não ser a abordagem mais segura em todos os cenários, pois o uso de "HTTP" em vez de "HTTPS" pode impactar a segurança e a integridade dos dados transmitidos entre o cliente e o servidor. É aconselhável usar essa solução com cautela e, se possível, entrar em contato com o suporte do Downdetector para obter orientações mais específicas sobre como resolver o problema de CORS.

TEMPLATE

Após concluir a edição necessária, é hora de importar o template para a integração no Zabbix.

Caso ainda não tenha baixado uma cópia do GitHub de Remontti para o seu computador, você pode fazer o download aqui.

Após baixar o arquivo, descompacte o conteúdo do arquivo .zip. Em seguida, faça login na versão web do Zabbix como um usuário com privilégios de administrador. Navegue até a seção: Configuração > Templates > Importar. A partir daí, selecione o arquivo "zbx_export_templates.xml" para iniciar o processo de importação.

[!NOTA] Em algumas versões do Zabbix você precisa criar um Grupo de Hosts com o nome Templates RR para que seja possível importar o template

Lista

[!IMPORTANTE] 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

CADASTRANDO O HOST

Completada a sequência de procedimentos mencionados anteriormente e tendo obtido sucesso no teste, estamos prontos para configurar o host dentro do Zabbix. Siga os passos abaixo:

Acesse a interface web do Zabbix como super-administrador. Navegue até Configuração > Hosts > Criar host. Crie o host seguindo as especificações abaixo, ou faça as modificações necessárias, exceto na interface.

Hosts

A partir deste ponto, o Zabbix iniciará o monitoramento utilizando o script previamente configurado.

Consequentemente, o sistema começará a exibir os dados coletados no Zabbix. Você pode verificar isso navegando até o menu Monitoramento > Dados Recentes e aplicando um filtro para o Host "Downdetector". Nesse momento, você começará a visualizar informações semelhantes ao exemplo abaixo:

Dados

Com a conclusão dos passos descritos, conseguimos integrar com sucesso o Zabbix ao Downdetector. Essa integração oferece aos Provedores de Serviço de Internet uma ferramenta valiosa para monitorar a estabilidade dos serviços. Ao combinar o poder de monitoramento do Zabbix com os insights do Downdetector, é possível agir rapidamente diante de possíveis interrupções, melhorando a qualidade dos serviços oferecidos. Em resumo, essa integração fornece uma abordagem eficaz para manter os serviços online e garantir a satisfação dos usuários.