基于PushProx实现Prometheus的分布式监控

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

背景

​ 最近公司需要部署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)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值