写点什么

Prometheus Exporter (五)BlackBox Exporter

作者:耳东@Erdong
  • 2021 年 11 月 20 日
  • 本文字数:1896 字

    阅读完需:约 6 分钟

本文已经收录在 Prometheus 合集 Prometheus 都可以采集那些指标?-- 常用 Exporter 合集 中。


BlackBox Exporter 允许通过 HTTP、HTTPS、DNS、TCP 和 ICMP 对接口进行黑盒探测监控。


BlackBox Exporter 是 Prometheus 官方维护的 Exporter,官方仓库地址是https://github.com/prometheus/blackbox_exporter


BlackBox Exporter 支持在 Windows 和类 Unix 上运行,当前最新版本是 v0.19.0 ,在 2021.05.10 发布。

安装

下载操作系统对应的 BlackBox Exporter 以后,直接执行二进制文件就可以运行,


./blackbox_exporter <flags>
复制代码


如果使用 Docker 来运行,需要准备好配置文件 blackbox.yml ,可以使用如下命令:


docker run -d \  -p 9115:9115 \  --name blackbox_exporter \  -v `pwd`:/config \  prom/blackbox-exporter:master \  --config.file=/config/blackbox.yml
复制代码


在运行 ICMP 功能的时候需要赋予相对于的权限才行。


  • Windows 系统:系统提供 Administrator 管理员权限

  • Linux 系统:这个用户的组要在 net.ipv4.ping_group_range,并且具有 CAP_NET_RAW 权限或者是 root 用户。

  • BSD 系统:需要提供 root 用户

  • OS X 系统:不需要提供额外的权限。

BlackBox Exporter 配置

BlackBox Exporter 的配置是通过配置文件和命令行参数来实现的,命令行参数控制哪个配置文件会被加载、监听端口是哪个,日志输出的格式和级别等等。


BlackBox Exporter 可以在运行时重新加载它的配置文件。如果新的配置文件格式错误,那么这个文件是不会生效的,正常运行的程序会以最后一次正确格式的配置文件运行。通过向 BlackBox Exporter 进程发送 SIGHUP 信号或向进程的 /-/reload 接口发送 HTTP POST 请求都可以触发配置文件的重新加载。


BlackBox Exporter 指定配置文件使用 --config.file 参数,格式是 --config.file=/config/blackbox.yml ,配置文件格式要求是 YAML 格式。


Blackbox exporter 支持下面这 4 个模块的配置,


  • [ http: <http_probe> ]

  • [ tcp: <tcp_probe> ]

  • [ dns: <dns_probe> ]

  • [ icmp: <icmp_probe> ]


详细的配置文件示例开参考这个链接https://github.com/prometheus/blackbox_exporter/blob/master/CONFIGURATION.md


官方提供了一个示例的配置文件可以参考。https://github.com/prometheus/blackbox_exporter/blob/master/example.yml

Prometheus 配置

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


我们来看这个示例文件,


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.
复制代码


其他 BlackBox Exporter 是经常搭配服务发现来进行工作的,比如搭配基于 DNS 的服务发现来进行。HTTP 监控可以接受附加的主机名参数,该参数将设置主机头和 TLS SNI。


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
复制代码

小结

BlackBox Exporter 其实在监控系统中非常实用,尤其是 HTTP 监控和 ICMP 监控。结合 DNS 可以监控公司的所有域名状态。

发布于: 5 小时前阅读数: 7
用户头像

耳东@Erdong

关注

还未添加个人签名 2020.05.24 加入

主要研究分享运维技术,专注于监控、CICD、操作系统、云原生领域,公众号【耳东学堂】,知识星球同名,坚持原创,希望能和大家在运维路上结伴而行 邮箱:erdong@mail.erdong.site

评论

发布
暂无评论
Prometheus Exporter (五)BlackBox Exporter