Blackbox prober exporter 允许通过 HTTP、HTTPS、DNS、TCP、ICMP 和 gRPC 对端点进行黑盒探测。

运行这个软件

使用二进制文件

从软件发布界面下载最合适的二进制文件:https://github.com/prometheus/blackbox_exporter/releases

然后:

./blackbox_exporter <flags>
使用Docker镜像

注意:您可能希望在 docker 配置中启用 ipv6

docker run --rm \
  -p 9115/tcp \
  --name blackbox_exporter \
  -v $(pwd):/config \
  quay.io/prometheus/blackbox-exporter:latest --config.file=/config/blackbox.yml

检查结果

访问 http://localhost:9115/probe?target=google.com&module=http_2xx 将返回针对 google.com 的 HTTP 探测的指标。该 probe_success 指标指示探测是否成功。添加debug=true参数将返回该探测器的调试信息。

  • TLS 和基本身份验证

Blackbox Exporter 支持 TLS 和基本身份验证。这样可以更好地控制各种 HTTP 端点。

要使用 TLS 和/或基本身份验证,您需要使用参数传递配置文件–web.config.file。该文件的格式 在 exporter-toolkit 存储库中进行了描述。

请注意,TLS 和基本身份验证设置会影响所有 HTTP 端点:/metrics 用于抓取,/probe 用于探测,以及 Web UI。

配置 Blackbox exporter

Blackbox exporter 通过配置文件和命令行标志进行配置(例如加载什么配置文件、监听什么端口以及日志记录格式和级别)。

Blackbox 导出器可以在运行时重新加载其配置文件。如果新配置格式不正确,则不会应用更改。SIGHUP 通过向 Blackbox 导出器进程发送 a 或向端点发送 HTTP POST 请求来触发配置重新加载 /-/reload

要查看所有可用的命令行标志,请运行 ./blackbox_exporter -h.

要指定要加载的配置文件--config.file,请使用标志。

此外,还提供示例配置。

http 当前支持HTTPHTTPS(通过探测器)DNSTCP 套接字ICMPgRPC(参见权限部分)。可以定义其他模块以满足您的需要。

每个探测的超时是从Prometheus 配置scrape_timeout中自动确定的,稍微减少以允许网络延迟。这可以通过Blackbox 导出器配置文件中的进一步限制。如果两者均未指定,则默认为 120 秒。timeout

Prometheus 配置

Blackbox exporter 实现了多目标导出器模式,因此我们建议阅读指南理解和使用多目标导出器模式 以获得有关配置的一般概念。

Blackbox exporter 需要将目标作为参数传递,这可以通过重新标记来完成。

示例配置:

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.

HTTP 探测可以接受一个附加hostname参数,该参数将设置Host标头和 TLS SNI。这对于以下情况特别有用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

权限

ICMP 探测需要提升的权限才能运行:

  • Windows:需要管理员权限。
  • Linux:需要拥有组的用户 net.ipv4.ping_group_rangeCAP_NET_RAW 能力root 用户
  • 您的发行版可能 net.ipv4.ping_group_range 默认配置为 /etc/sysctl.conf 或类似的。如果不是,您可以设置 net.ipv4.ping_group_range = 0 2147483647允许任何用户使用 ping 的能力。
  • 或者,可以通过执行来设置功能 setcap cap_net_raw+ep blackbox_exporter
  • BSD:需要 root 用户。
  • OS X:不需要额外的权限。
作者:Jeebiz  创建时间:2023-02-19 21:07
最后编辑:Jeebiz  更新时间:2024-01-24 21:48