Bootstrap

blackbox_exporter 如何检测端口

blackbox_exporter 可以通过 TCP 探测模块 来检测目标主机的端口是否开放。以下是配置和使用的详细步骤。


1. 配置 blackbox_exporter

1) 编辑配置文件

打开 blackbox_exporter 的配置文件 blackbox.yml,添加或修改 TCP 探测模块。

示例配置:

modules:
  tcp_connect:
    prober: tcp
    timeout: 5s
    tcp:
      preferred_ip_protocol: "ip4"  # 优先使用 IPv4
      query_response:               # 可选:发送和验证 TCP 数据
        - expect: "SSH-2.0-OpenSSH" # 期望的响应(例如 SSH 服务)
2) 启动 blackbox_exporter
./blackbox_exporter --config.file=blackbox.yml

2. 配置 Prometheus 集成

1) 修改 Prometheus 配置文件

编辑 Prometheus 的配置文件 prometheus.yml,添加 TCP 探测任务。

示例配置:

scrape_configs:
  - job_name: 'blackbox_tcp'
    metrics_path: /probe
    params:
      module: [tcp_connect]  # 使用 tcp_connect 模块
    static_configs:
      - targets:
          - example.com:22   # 检测 example.com 的 22 端口(SSH)
          - example.com:80   # 检测 example.com 的 80 端口(HTTP)
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: <your-blackbox-exporter-ip>:9115  # blackbox_exporter 的地址
2) 重启 Prometheus
sudo systemctl restart prometheus

3. 验证

  1. 访问 Prometheus 的 Web UI(默认地址:http://<your-prometheus-ip>:9090)。

  2. 查询 probe_success 指标,检查端口探测结果:

    probe_success{job="blackbox_tcp"}
    
    • 如果值为 1,表示端口开放且探测成功。
    • 如果值为 0,表示端口关闭或探测失败。
  3. 查询 probe_duration_seconds 指标,查看探测耗时:

    probe_duration_seconds{job="blackbox_tcp"}
    

4. (可选)配置告警规则

在 Prometheus 中添加告警规则,当端口不可用时触发告警。

示例告警规则:

groups:
  - name: tcp_port_alerts
    rules:
      - alert: PortDown
        expr: probe_success{job="blackbox_tcp"} == 0
        for: 1m
        labels:
          severity: critical
        annotations:
          summary: "Port is down on {{ $labels.instance }}"
          description: "Port {{ $labels.instance }} is not responding for 1 minute."

5. 总结

通过以上步骤,你已经成功配置了 blackbox_exporter 的 TCP 探测模块,并可以检测目标主机的端口状态。如果有其他问题,请随时告诉我!

;