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. 验证
-
访问 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_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 探测模块,并可以检测目标主机的端口状态。如果有其他问题,请随时告诉我!