Monitore seu site com Blackbox Exporter, Prometheus e Grafana: Guia completo!

Foto do autor

By luis

Monitorando Sites com Blackbox Exporter, Prometheus e Grafana

Se você já utiliza o Grafana para observar as métricas do seu servidor, certamente apreciará o Blackbox Exporter para monitorar seus sites! Este guia prático mostrará como instalar o Blackbox Exporter no CentOS/RHEL e como integrá-lo com Prometheus e Grafana para acompanhar o desempenho e a disponibilidade do seu site.

O que é o Blackbox Exporter?

O Blackbox Exporter, desenvolvido pelo projeto Prometheus, é uma ferramenta que realiza sondagens em diferentes tipos de endpoints, como HTTPS, HTTP, TCP, DNS e ICMP. Após a configuração do endpoint, o Blackbox Exporter gera uma variedade de métricas que podem ser visualizadas no Grafana. A capacidade de medir o tempo de resposta é um dos seus principais recursos.

O Blackbox Exporter é uma solução que você instala e gerencia. Se busca algo semelhante, mas em formato SaaS ou baseado na nuvem, o Grafana Cloud oferece o worldPing.

Pré-requisitos

Para seguir este tutorial, você precisa ter o Prometheus e o Grafana previamente instalados. Caso ainda não tenha, siga este artigo para instalá-los.

Instalação do Blackbox Exporter

Vamos começar com a instalação do Blackbox Exporter:

Passo 1: Download do Blackbox Exporter

Acesse a página oficial para baixar a versão mais recente do pacote Linux AMD64. Neste exemplo, usaremos o arquivo blackbox_exporter-0.16.0.linux-amd64.tar.gz.

  • Transfira o arquivo para o seu servidor.
  • Extraia os arquivos do pacote.
tar -xzf blackbox_exporter-0.16.0.linux-amd64.tar.gz

Verifique os arquivos dentro da pasta extraída:

cd blackbox_exporter-0.16.0.linux-amd64/
ls -l

Você verá algo como:

total 16672
-rwxr-xr-x. 1 centos centos 17050332 Nov 11 2019 blackbox_exporter
-rw-r--r--. 1 centos centos 629 Nov 11 2019 blackbox.yml
-rw-r--r--. 1 centos centos 11357 Nov 11 2019 LICENSE
-rw-r--r--. 1 centos centos 94 Nov 11 2019 NOTICE

Os arquivos blackbox_exporter e blackbox.yml são os mais importantes aqui:

  • blackbox_exporter: É o executável que inicia o serviço.
  • blackbox.yml: Arquivo YAML com as configurações do Blackbox Exporter, incluindo os endpoints a serem monitorados e os módulos a serem executados.

O comando abaixo exibe todos os parâmetros que podem ser usados com o Blackbox Exporter:

./blackbox_exporter -h

Você verá uma saída com os parâmetros disponíveis, como:

usage: blackbox_exporter [<flags>]

Flags:
-h, --help Show context-sensitive help (also try --help-long and --help-man).

--config.file="blackbox.yml"
Blackbox exporter configuration file.
--web.listen-address=":9115"
The address to listen on for HTTP requests.

--timeout-offset=0.5 Offset to subtract from timeout in seconds.

--config.check If true validate the config file and then exit.

--history.limit=100 The maximum amount of items to keep in the history.

--web.external-url=<url>
The URL under which Blackbox exporter is externally reachable (for example, if Blackbox exporter is served via a
reverse proxy). Used for generating relative and absolute links back to Blackbox exporter itself. If the URL has a
path portion, it will be used to prefix all HTTP endpoints served by Blackbox exporter. If omitted, relevant URL
components will be derived automatically.

--web.route-prefix=<path>
Prefix for the internal routes of web endpoints. Defaults to path of --web.external-url.

--log.level=info Only log messages with the given severity or above. One of: [debug, info, warn, error]

--log.format=logfmt Output format of log messages. One of: [logfmt, json]
--version Show application version.

Etapa 2: Criar Usuário para o Blackbox

Este passo é opcional, mas recomendado. Você pode criar um usuário dedicado para o Blackbox ou utilizar um usuário existente do Prometheus.

Atribua as permissões e a propriedade dos arquivos ao novo usuário:

sudo useradd -rs /bin/false blackbox
sudo chmod -R 777 /home/centos/blackbox_exporter-0.16.0.linux-amd64
sudo chown -R blackbox:blackbox /home/centos/blackbox_exporter-0.16.0.linux-amd64

Etapa 3: Configurar o Serviço Blackbox

Agora, configure o Blackbox Exporter como um serviço do systemd. Crie um arquivo blackbox.service e adicione o seguinte conteúdo (ajustando os caminhos conforme necessário):

sudo gedit /etc/systemd/system/blackbox.service

Cole o seguinte:

[Unit]
Description=Blackbox Exporter Service
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
User=blackbox
Group=blackbox
ExecStart=/home/centos/blackbox_exporter-0.16.0.linux-amd64/blackbox_exporter --config.file=/home/centos/blackbox_exporter-0.16.0.linux-amd64/blackbox.yml

[Install]
WantedBy=multi-user.target

Certifique-se de substituir o caminho pelo local onde você extraiu o Blackbox Exporter.

Passo 4: Inicie o Blackbox Exporter

Use os seguintes comandos para iniciar o serviço:

sudo systemctl daemon-reload
sudo systemctl start blackbox.service
sudo systemctl status blackbox.service

Se tudo estiver correto, você verá uma saída semelhante a esta:

● blackbox.service - Blackbox Exporter Service
Loaded: loaded (/etc/systemd/system/blackbox.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2020-06-13 17:28:40 EDT; 1s ago
Main PID: 30427 (blackbox_export)
Tasks: 5
CGroup: /system.slice/blackbox.service
└─30427 /usr/local/bin/blackbox_exporter --config.file=/etc/blackbox.yml

Jun 13 17:28:40 etechpt.com.linuxvmimages.com systemd[1]: Started Blackbox Exporter Service.
Jun 13 17:28:40 etechpt.com.linuxvmimages.com blackbox_exporter[30427]: level=info ts=2020-06-13T21:28:40.283Z caller=main.go:212 msg="Starting b...b9a9)"
Jun 13 17:28:40 etechpt.com.linuxvmimages.com blackbox_exporter[30427]: level=info ts=2020-06-13T21:28:40.283Z caller=main.go:213 msg="Build cont...SSING)
Jun 13 17:28:40 etechpt.com.linuxvmimages.com blackbox_exporter[30427]: level=info ts=2020-06-13T21:28:40.283Z caller=main.go:225 msg="Loaded config file"
Jun 13 17:28:40 etechpt.com.linuxvmimages.com blackbox_exporter[30

O Blackbox Exporter agora está em execução e acessível em http://localhost:9115/.

Integrando o Blackbox com o Prometheus

Para começar a coletar as métricas, vamos integrar o Blackbox Exporter com o Prometheus.

sudo gedit /etc/prometheus/prometheus.yml

Adicione as seguintes linhas:

- job_name: 'blackbox'
  metrics_path: /probe
  params:
    module: [http_2xx] # Busca uma resposta HTTP 200
  static_configs:
    - targets:
      - https://www.telegraph.co.uk
  relabel_configs:
    - source_labels: [__address__]
      target_label: __param_target
    - source_labels: [__param_target]
      target_label: instance
    - target_label: __address__
      replacement: 127.0.0.1:9115 # Endereço real do blackbox exporter

Reinicie o serviço do Prometheus para aplicar as alterações:

sudo systemctl restart prometheus.service
  • Acesse a interface do Prometheus em http://localhost:9090/targets. Você verá o novo job blackbox em execução, monitorando o endpoint que você definiu.
  • Na interface de consulta do Prometheus, execute a consulta probe_http_duration_seconds para verificar os dados monitorados.

Agora, vamos visualizar os dados no Grafana.

Visualizando no Grafana

Uma forma rápida de começar é importar um painel pré-configurado, como o Prometheus Blackbox Exporter.

  • No painel do Grafana, clique no sinal + e selecione Importar.
  • Em Import via grafana.com, insira o ID 7587 e clique em Load.
  • Selecione a fonte de dados Prometheus e clique em Importar.

  • O painel do Prometheus Blackbox Exporter será importado.
  • Você verá métricas como a duração geral da sondagem, status, duração do HTTP, média da duração da sondagem, pesquisa média de DNS, validade do SSL e mais.

No painel, explore as diferentes visualizações. Por exemplo, o painel HTTP Duration exibe o tempo gasto em diferentes etapas da requisição HTTP: conexão, processamento, resolução de DNS, handshake TLS e transferência de dados.

Você pode ajustar o intervalo de tempo e a frequência de atualização. Para isso, clique na seta para baixo ao lado de Duração HTTP e selecione Editar.

Na aba Consulta, você pode visualizar e editar a consulta que está gerando o gráfico (probe_http_duration_seconds neste caso).

  • Existem muitas outras métricas que você pode visualizar e adicionar ao seu painel conforme sua necessidade.

  • Você também pode alterar o tipo de visualização. Por exemplo, a média da duração da sondagem é exibida como texto por padrão. No painel de visualização, clique em Medidor para exibir o valor em um gráfico de medidor.

  • O resultado será a mudança da visualização.

Conclusão

Este guia oferece uma visão geral de como monitorar sites com Prometheus Blackbox e Grafana. Explore as diversas opções e experimente as configurações. Se você deseja se aprofundar no Grafana, este curso online pode ser útil.

Gostou do artigo? Compartilhe com outras pessoas!