背景
最近公司需要部署node_exporter到各ECS中收集节点级别的指标数据,并暴露给集中式的prometheus-server抓取。但由于不同项目的ECS处于不同的VPC中,存在网络隔离。因此,可使用PushProx这个项目来完成指标流量的代理。
PushProx是一个客户端工具和代理,它允许Prometheus穿越NAT和其他类似的网络拓扑,同时仍然遵循Prometheus中的pull模型。
项目地址: https://github.com/prometheus-community/PushProx
工作方式

它适用于以下网络环境:
- Prometheus无法直接访问客户端ECS;
- Prometheus可以访问客户端所在VPC中的ECS(下称为PushProx代理),可通过内网穿透或者暴露公网的方式使其可达PushProx代理;
- 客户端ECS和PushProx代理处于同一VPC;
每个客户端由其fqdn标识,Prometheus通过PushProx抓取目标fqdn-x时,执行以下的操作过程:
- 客户端轮询代理,以获取抓取请求,并将其fqdn包含在轮询中(1);客户端发送POST请求到代理端,此时代理未响应;
- Prometheus尝试通过代理,抓取主机名为fqdn-x的目标(2)。Prometheus发送GET请求到代理端,代理根据fqdn-x路由到正确的客户端,此时代理未响应;
- 抓取请求位于轮询中的,代理发送给客户端的响应报文中,以响应步骤1中的客户端POST请求(3);
- 抓取请求由客户端执行(4);
- 抓取到的数据包含指标的响应(5),并且发布到代理中(6)

本文介绍了如何在存在网络隔离的环境中,利用PushProx工具让Prometheus收集分布在不同VPC中的ECS节点指标数据。首先,详细解释了PushProx的工作原理和适用场景,然后逐步展示了PushProx代理端和客户端的配置过程,包括编译PushProx可执行文件、设置DNS服务器、部署node_exporter、启动PushProx服务以及配置Prometheus。最后,验证了Prometheus是否能成功抓取到客户端数据,从而实现跨VPC的监控。
最低0.47元/天 解锁文章
2534

被折叠的 条评论
为什么被折叠?



