技术交流群
欢迎各位大牛加入云原生技术交流群,群内不定时分享技术文档!下面二维码为院长私人微信,请扫码添加微信邀请加入交流群!如果二维码失效,请查看最新文章内的二维码或者通过公众号私信邀请加入技术群。Blackbox Exporter 是 Prometheus 生态系统中的一个工具,用于通过主动探测(Probe)的方式来监控外部 endpoints(如 HTTP 接口、TCP 端口、ICMP ping 等)的可用性和性能,并将探测结果提供给 Prometheus 进行采集和告警。
为什么需要它?它解决了什么问题?
Prometheus 默认采用的是 “拉取(Pull)”模型,即由 Prometheus 服务器主动从被监控目标(称为 targets
)上暴露的 HTTP API(通常是 /metrics
)抓取指标。
但这种模型在某些场景下会遇到问题:
“从外部看”的视角缺失:你的应用内部指标(如 CPU、内存)可能一切正常,但用户却无法访问。因为你缺少一个从外部用户角度来检查服务是否真正可用的手段。
监控“黑盒”服务:你需要监控一些你无法在其内部安装 Exporter 的服务或资源。
Blackbox Exporter 就是为了解决这些问题而生的。它引入了一种 “主动探测” 的机制。
Blackbox Exporter 是如何工作的?
它的工作流程可以分为四步:
配置探测:你在 Blackbox Exporter 的配置文件中定义各种探测模块(Modules)。每个模块指定了如何进行检查(例如:使用 HTTP 协议、期望状态码为 200、检查 SSL 证书是否过期等)。
发起探测请求:
Prometheus 不是直接拉取指标,而是根据 scrape_config
中的配置,向 Blackbox Exporter 发出一个 HTTP 请求,请求它去探测某个目标。
这个请求中包含两个关键参数:target
(要探测谁)和
module
(使用哪个探测模块)。
示例 Prometheus 请求:http://blackbox-exporter:9115/probe?target=https://example.com&module=http_2xx
执行探测:Blackbox Exporter 接收到请求后,会根据指定的模块参数,主动去探测目标(target
),例如访问 https://example.com
。
返回指标:探测完成后,Blackbox Exporter 会生成一系列标准化的指标,并通过 HTTP 响应返回给 Prometheus。
主要功能和用途
HTTP/HTTPS 监控:
可用性:服务是否返回成功的状态码(如 2xx, 3xx)?
内容校验:响应体中是否包含或不包含某个特定字符串?(例如:检查网页是否被篡改或出现了错误信息)
SSL/TLS 证书监控:证书是否有效?还有多少天过期?
HTTP 性能:请求耗时(Duration)、DNS 解析耗时、TLS 握手耗时等。
TCP 监控:
ICMP 监控(Ping):
检查主机是否在线(通过 Ping 命令)。
监控网络延迟和丢包率。
DNS 监控:
查询指定的 DNS 记录并验证其结果是否正确。
检查 DNS 解析耗时。
核心输出指标示例
Blackbox Exporter 返回的指标非常直观,例如:
probe_success
:最关键的指标。探测是否成功(1 表示成功,0 表示失败)。
probe_duration_seconds
:整个探测过程耗费了多少秒。
probe_http_status_code
:HTTP 探测返回的状态码。
probe_ssl_earliest_cert_expiry
:SSL 证书最早的过期时间(Unix 时间戳)。
probe_icmp_duration_seconds
:Ping 的往返时间。
这些指标可以直接用于 Grafana 绘图和 Prometheus 告警规则。
总结
| |
---|
角色 | |
模型 | 由 Prometheus 触发,Blackbox 执行主动探测(Active Probing) |
视角 | 外部视角(Synthetic Monitoring) |
监控对象 | 任何可以通过网络协议访问的端点(HTTP, TCP, ICMP, DNS) |
核心价值 | |
简单来说,Blackbox Exporter 就像是 Prometheus 派出的一个“侦察兵”,它可以代替用户去尝试访问你的服务,并告诉你访问体验到底怎么样。 它是构建完整监控系统不可或缺的一环,弥补了单纯内部指标监控的不足。
安装Docker
curl -sSL https://get.docker.com/ | sh
docker run -d \
--name=blackbox_exporter \
-p 9115:9115 \
--restart=unless-stopped \
docker.m.daocloud.io/prom/blackbox-exporter
Web访问
http://IP:9115
🎉购买院长书籍,做技术大牛🎉
院长书籍链接:
https://deanit.cn/DeanBooks/