在我们正在构建的系统中,我们需要使用Prometheus监视在k8s集群中运行的组件(Kafka Connect,Spark..etc)。
由于k8s集群在不同的网络中运行,因此Prometheus服务器无法直接抓取这些组件。
为此,我们将在k8s集群中运行PushGateWay。
我想出了以下设计:
- 定制的“推送代理”组件读取“ kube-api-service”以获取我们要监视的每个组件的Pod列表。(还定期检查Pod的运行状况/检查新的Pod..etc)
- “推送代理”会定期在每个吊舱中刮除出口商。 (调用每个Pod的/ metrics端点)。
将这些刮擦的矩阵存储在缓冲区中。
- “推送代理”会定期将缓冲的矩阵推送到PushGateWay。
- 可从Prometheus访问此PushGateWay。 Prometheus定期从PushGW刮取矩阵。
问题是:
- 是否有我们计划构建的类似“推送代理”的组件?
- 这是处理此问题的有效设计。