O exportador de caixa preta permite a investigação de terminais em caixa preta por HTTP, HTTPS, DNS, TCP, ICMP e gRPC.
Baixe o binário mais adequado na guia de lançamentos
Então:
./blackbox_exporter
Nota: você pode querer habilitar o ipv6 na configuração do docker
docker run --rm
-p 9115/tcp
--name blackbox_exporter
-v $(pwd):/config
quay.io/prometheus/blackbox-exporter:latest --config.file=/config/blackbox.yml
Visitar http://localhost:9115/probe?target=google.com&module=http_2xx retornará métricas para uma investigação HTTP em google.com. A métrica probe_success
indica se a investigação foi bem-sucedida. Adicionar um parâmetro debug=true
retornará informações de depuração para esse teste.
As métricas relativas ao funcionamento do próprio exportador estão disponíveis no endpoint http://localhost:9115/metrics.
O Blackbox Exporter oferece suporte a TLS e autenticação básica. Isto permite um melhor controle dos vários pontos de extremidade HTTP.
Para usar TLS e/ou autenticação básica, você precisa passar um arquivo de configuração usando o parâmetro --web.config.file
. O formato do arquivo está descrito no repositório do exporter-toolkit.
Observe que as configurações de TLS e de autenticação básica afetam todos os endpoints HTTP: /metrics para raspagem, /probe para sondagem e a UI da web.
make
Após uma construção local bem-sucedida:
docker build -t blackbox_exporter .
O exportador Blackbox é configurado por meio de um arquivo de configuração e sinalizadores de linha de comando (como qual arquivo de configuração carregar, em qual porta escutar e o formato e nível de registro).
O exportador Blackbox pode recarregar seu arquivo de configuração em tempo de execução. Se a nova configuração não estiver bem formada, as alterações não serão aplicadas. Um recarregamento de configuração é acionado enviando um SIGHUP
para o processo exportador Blackbox ou enviando uma solicitação HTTP POST para o endpoint /-/reload
.
Para visualizar todos os sinalizadores de linha de comando disponíveis, execute ./blackbox_exporter -h
.
Para especificar qual arquivo de configuração carregar, use o sinalizador --config.file
.
Além disso, um exemplo de configuração também está disponível.
HTTP, HTTPS (através do probe http
), DNS, soquete TCP, ICMP e gRPC (consulte a seção de permissões) são atualmente suportados. Módulos adicionais podem ser definidos para atender às suas necessidades.
O tempo limite de cada investigação é determinado automaticamente a partir do scrape_timeout
na configuração do Prometheus, ligeiramente reduzido para permitir atrasos na rede. Isso pode ser ainda mais limitado pelo timeout
no arquivo de configuração do exportador Blackbox. Se nenhum for especificado, o padrão será 120 segundos.
O exportador Blackbox implementa o padrão de exportador multi-target, por isso aconselhamos a leitura do guia Compreendendo e usando o padrão de exportador multi-target para ter uma ideia geral sobre a configuração.
O exportador de caixa preta precisa receber o alvo como parâmetro, isso pode ser feito com nova rotulagem.
Configuração de exemplo:
scrape_configs :
- job_name : ' blackbox '
metrics_path : /probe
params :
module : [http_2xx] # Look for a HTTP 200 response.
static_configs :
- targets :
- http://prometheus.io # Target to probe with http.
- https://prometheus.io # Target to probe with https.
- http://example.com:8080 # Target to probe with http on port 8080.
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 # The blackbox exporter's real hostname:port.
- job_name : ' blackbox_exporter ' # collect blackbox exporter's operational metrics.
static_configs :
- targets : ['127.0.0.1:9115']
As sondagens HTTP podem aceitar um parâmetro hostname
adicional que definirá o cabeçalho Host
e o SNI TLS. Isto pode ser especialmente útil com dns_sd_config
:
scrape_configs :
- job_name : blackbox_all
metrics_path : /probe
params :
module : [ http_2xx ] # Look for a HTTP 200 response.
dns_sd_configs :
- names :
- example.com
- prometheus.io
type : A
port : 443
relabel_configs :
- source_labels : [__address__]
target_label : __param_target
replacement : https://$1/ # Make probe URL be like https://1.2.3.4:443/
- source_labels : [__param_target]
target_label : instance
- target_label : __address__
replacement : 127.0.0.1:9115 # The blackbox exporter's real hostname:port.
- source_labels : [__meta_dns_name]
target_label : __param_hostname # Make domain name become 'Host' header for probe requests
- source_labels : [__meta_dns_name]
target_label : vhost # and store it in 'vhost' label
A investigação ICMP requer privilégios elevados para funcionar:
net.ipv4.ping_group_range
, o recurso CAP_NET_RAW
ou o usuário root.net.ipv4.ping_group_range
por padrão em /etc/sysctl.conf
ou similar. Caso contrário, você pode definir net.ipv4.ping_group_range = 0 2147483647
para permitir que qualquer usuário possa usar o ping.setcap cap_net_raw+ep blackbox_exporter