blackbox_exporter
可以通过 TCP 探测模块 来检测目标主机的端口是否开放。以下是配置和使用的详细步骤。
1. 配置 blackbox_exporter
1) 编辑配置文件
打开 blackbox_exporter
的配置文件 blackbox.yml
,添加或修改 TCP 探测模块。
示例配置:
modules:tcp_connect:prober: tcptimeout: 5stcp:preferred_ip_protocol: "ip4" # 优先使用 IPv4query_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: /probeparams: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. 验证
-
访问 Prometheus 的 Web UI(默认地址:
http://<your-prometheus-ip>:9090
)。 -
查询
probe_success
指标,检查端口探测结果:probe_success{job="blackbox_tcp"}
- 如果值为
1
,表示端口开放且探测成功。 - 如果值为
0
,表示端口关闭或探测失败。
- 如果值为
-
查询
probe_duration_seconds
指标,查看探测耗时:probe_duration_seconds{job="blackbox_tcp"}
4. (可选)配置告警规则
在 Prometheus 中添加告警规则,当端口不可用时触发告警。
示例告警规则:
groups:- name: tcp_port_alertsrules:- alert: PortDownexpr: probe_success{job="blackbox_tcp"} == 0for: 1mlabels:severity: criticalannotations:summary: "Port is down on {{ $labels.instance }}"description: "Port {{ $labels.instance }} is not responding for 1 minute."
5. 总结
通过以上步骤,你已经成功配置了 blackbox_exporter
的 TCP 探测模块,并可以检测目标主机的端口状态。如果有其他问题,请随时告诉我!