首次搭建Prometheus联邦,跨网络防火墙的两台服务器如何通信
问题解答
核心结论:跨防火墙隔离的两台服务器通信,必须同时配置防火墙规则 + 正确编写Prometheus配置,二者缺一不可
1. 通信逻辑与防火墙配置要求
Prometheus采用主动拉取的方式采集指标,无论你是采集node-exporter指标还是部署联邦集群拉取子Prometheus数据,都是Prometheus服务端主动向目标端发起请求,防火墙配置规则如下:
- 目标端(运行node-exporter或子Prometheus的服务器)必须配置入站防火墙规则,放通源端Prometheus服务器的IP访问对应端口的权限:node-exporter默认端口为9100,Prometheus默认端口为9090。如果是云服务器还要同步配置云平台安全组的入站规则,避免只配置了系统防火墙漏配平台侧规则。
- 源端Prometheus服务器默认出站规则都是全开状态,仅当你的环境有严格的出站限制时,才需要额外配置到目标端IP+端口的出站权限,多数场景下仅配置目标端入站规则即可。
2. 现有配置验证步骤
你当前提供的Prometheus配置已经正确填写了目标端node-exporter的地址,接下来优先验证网络连通性:
在Prometheus所在的服务器上执行命令 curl http://18.230.81.178:9100/metrics,如果能正常返回指标文本,说明网络已经通,只需要等待Prometheus刷新采集状态即可;如果提示超时/连接被拒绝,说明防火墙/网络策略没有配置正确,此时修改Prometheus配置不会生效。
3. 联邦集群额外配置说明
如果你要搭建联邦集群,现有配置还需要补充联邦采集Job,参考配置如下:
scrape_configs: # 省略你已有的prometheus、node采集Job - job_name: 'federate' scrape_interval: 15s honor_labels: true metrics_path: '/federate' params: 'match[]': - '{job=~".+"}' # 可按需调整匹配规则,避免全量拉取占用过多资源 static_configs: - targets: - '子Prometheus服务器的IP:9090'
内容的提问来源于stack exchange,提问作者LG MM
相关产品推荐
相关产品推荐

