Prometheus: Blackbox Exporter

如何使用 Prometheus Blackbox Exporter 探测 HTTP 和 ICMP(ping)端点

👋 欢迎查阅 Stackhero 文档!

Stackhero 提供了一个完全托管的 Prometheus cloud 平台,专为高可靠性与简便性设计:

  • 内置 Alert Manager,可将告警直接发送到 SlackMattermostPagerDuty 及其他主流平台。
  • 配备专用邮件服务器,支持发送无限量邮件告警,无需额外配置。
  • 集成 Blackbox,可对 HTTPICMPTCP 等协议进行探测,实现全面监控。
  • 通过在线配置文件编辑器,快速完成实例配置,无需手动管理 YAML 文件。
  • 一键升级,Stackhero 自动为您处理升级流程,最大限度减少停机和人工干预。
  • 依托专属私有基础设施,内置高性能与强大安全性。

大约 5 分钟即可完成部署。Stackhero 负责所有初始化设置,让您专注于监控本身,无需为维护分心。欢迎体验 Stackhero 的 Prometheus cloud hosting,让您的监控与告警流程更加高效便捷。

Prometheus Blackbox Exporter 是一个强大的工具,可以使用多种协议探测端点,包括 HTTP、HTTPS、DNS、TCP 和 ICMP。这种灵活性允许全面监控基础设施和服务的不同方面。

例如,在探测 HTTP 和 HTTPS 端点时,您可以:

  • 通过检查 2xx HTTP 状态码来验证网站的可用性。
  • 确保返回特定内容,例如将网页标题与预期文本匹配。
  • 通过检索 TLS 证书的到期日期来验证证书,帮助您防止意外的续订问题。
  • 通过评估 DNS 解析时间和 TLS 握手的持续时间来衡量性能。

使用 ICMP,您可以确认服务器响应 ping 请求并测量其响应时间。此外,DNS 探测提供回复时间的见解,而 TCP 探测允许您连接到服务以验证 SSH 服务器横幅的内容和版本。

Stackhero for Prometheus 的大图Stackhero for Prometheus 的大图

设置 Blackbox Exporter 涉及两个关键文件:用于核心设置的 blackbox-exporter.yml 和定义 Prometheus 如何从导出器抓取数据的 prometheus.yml

blackbox-exporter.yml 文件中找到的核心配置,指定支持哪些协议以及如何监控它们。

Stackhero for Prometheus 上,此文件预配置为支持 ICMP 监控和 HTTP/HTTPS 监控(通过 GET 和 POST 请求)。如果您需要为更高级的场景定制此文件,可以查看 Blackbox Exporter 仓库中的配置示例,并查阅官方文档以获取更多指导。

大部分配置将在 prometheus.yml 文件中进行,您可以像其他导出器一样指示 Prometheus 从 Blackbox Exporter 抓取数据。

例如,考虑下面的配置,它每 15 秒检查一次 prometheus.iografana.com 的 ICMP(ping)响应(由 scrape_interval 定义)。您可以将此块添加到 prometheus.yml 文件的 scrape_configs 部分,并更新 targets 数组以包含您希望监控的域名或 IP 地址:

  - job_name: "blackbox-icmp"
    metrics_path: "/blackbox-exporter/probe"
    params:
      module: [ "icmp" ]
    relabel_configs:
      - source_labels: [ "__address__" ]
        target_label: "__param_target"
      - source_labels: [ "__param_target" ]
        target_label: "instance"
      - target_label: "__address__"
        replacement: "prometheus-blackbox-exporter:9115"
    static_configs:
      - targets: [ "prometheus.io", "grafana.com" ]

类似地,下面的配置监控 HTTP 服务器。在此设置中,如果 HTTP 响应状态不在 2xx 范围内,则目标被标记为错误。您可以将此块插入到 prometheus.yml 文件的 scrape_configs 部分,并更新 targets 数组以包含您希望监控的 URL:

  - job_name: "blackbox-http"
    metrics_path: "/blackbox-exporter/probe"
    params:
      module: [ "http_2xx" ]
    relabel_configs:
      - source_labels: [ "__address__" ]
        target_label: "__param_target"
      - source_labels: [ "__param_target" ]
        target_label: "instance"
      - target_label: "__address__"
        replacement: "prometheus-blackbox-exporter:9115"
    static_configs:
      - targets: [ "https://prometheus.io/", "https://grafana.com/" ]

配置好抓取任务后,您可以在 Blackbox UI 中查看调试日志。UI 的链接在您的 Stackhero 仪表板上可用,提供有关探测结果的宝贵见解。

Blackbox UI 显示最后一次抓取的结果Blackbox UI 显示最后一次抓取的结果

Grafana 使创建可视化 Blackbox Exporter 收集的性能和可用性指标的仪表板变得简单。只需点击几下,您就可以设置动态仪表板,使您的 Prometheus 数据栩栩如生。有关将 Grafana 与 Prometheus 集成的更多详细信息,您可以探索 Grafana 的文档

由 Grafana 生成的仪表板示例,基于 Prometheus Blackbox Exporter 数据由 Grafana 生成的仪表板示例,基于 Prometheus Blackbox Exporter 数据