我遇到了一个奇怪的问题,过去几天我一直在研究它。
设置
我有一个在 Docker 中运行的 Iperf3 服务器,运行于以下内部地址和端口:10.10.2.2:5201
我还在 Docker 中运行 Prometheus 和 Grafana,以监控不同的服务。
一切正常,包括用于 HTTP 和 HTTPS 的 Prometheus Endpoint 导出器和 Prometheus Blackbox 导出器。
但是,我还想使用带有 Blackbox 导出器的简单 TCP 探测器监控此 Iperf3 服务器。
以下是我为 Prometheus 和 Blackbox 导出器设置的配置文件。
Prometheus.yml
:(抓取配置下的黑盒作业)
- job_name: 'blackbox-tcp'
scrape_interval: 60s
metrics_path: /probe
params:
module: [tcp_connect] # Look for TCP response
static_configs:
- targets:
- http://10.10.2.2:5201 # Iperf3 server
- http://10.10.2.4:9201 # Portainer agent
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 10.10.2.4:9095 # The blackbox exporter's real hostname:port.
Blackbox.yml
:(定义模块)
modules:
http_2xx:
prober: http
http:
method: GET
http_post_2xx:
prober: http
http:
method: POST
tcp_connect:
prober: tcp
timeout: 5s
pop3s_banner:
prober: tcp
tcp:
query_response:
- expect: "^+OK"
tls: true
tls_config:
insecure_skip_verify: false
ssh_banner:
prober: tcp
tcp:
query_response:
- expect: "^SSH-2.0-"
icmp:
prober: icmp
为了表明 Prometheus 已启动并正在运行,以下是与导出器连接的 HTTP 和 TCP 探测器的一部分:
最后,我能够通过 Netcat 和 Telnet 探测 TCP,以确认服务10.10.2.2:5201
确实正在运行:
$ if nc -w 3 -z 10.10.2.2 5201; then echo "1"; fi
1
$ if echo -e '\x1dclose\x0d' | telnet 10.10.2.2 5201 > /dev/null; then echo "1"; fi
1
问题
问题就在这里:当我尝试10.10.2.2:5201
在 Grafana 中监控目标时,它显示查询值为0
,又名 Down。
此外,当我尝试运行查询检查器或直接在 Prometheus 中运行查询时,我会确认它返回一个值0
。
我相信我已经按照文件要求做了所有事情,并且此主题还确认我的配置对于 TCP 探测来说是正确的。
我只是不明白如何让 Prometheus 返回查询值1
,以表明端口已打开并且在这种情况下 Iperf3 服务正在运行?
我一直想知道是否需要在下添加一些send
和命令,但一直没有找到。非常感谢任何意见和帮助!expect
Blackbox.yml
query_response
答案1
我遇到了完全相同的问题,直到我意识到我必须http://
从目标中移除该部件。下面的方法应该对你有用。
- job_name: 'blackbox-tcp'
scrape_interval: 60s
metrics_path: /probe
params:
module: [tcp_connect] # Look for TCP response
static_configs:
- targets:
- 10.10.2.2:5201 # Iperf3 server
- 10.10.2.4:9201 # Portainer agent
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 10.10.2.4:9095 # The blackbox exporter's real hostname:port.