Prometheus在Kubernetes上的多容器Pod

16

我在我的Kubernetes部署中有一个多容器Pod:

  • Java
  • Redis
  • Nginx

每个容器都有一个带有Prometheus出口程序的容器。

问题是,如果注释部分仅支持每个Pod一个端口,那么我该如何将这些端口暴露给Prometheus?

annotations:
  prometheus.io/scrape: 'true'
  prometheus.io/port: 'xxxx'

但我需要类似这样的东西:

annotations:
  prometheus.io/scrape: 'true'
  prometheus.io/port_1: 'xxxx'
  prometheus.io/port_2: 'yyyy'
  prometheus.io/port_3: 'zzzz'
也许有其他方法可以从我的多容器Pod中获取所有指标?提前感谢任何帮助。
2个回答

12

这是一个用于Prometheus的示例作业。将其放入您自己的配置文件中。

接下来,添加:

annotations:
   prometheus.io/scrape: 'true'

更新您的Pod元数据。

在每个提供/metrics给prometheus的容器上,创建一个名为metrics的适当端口。

就是这样。 Prometheus将仅抓取这些端口,并且不会出现像您的redis实例在其6379端口上收到http请求的情况。


请明确一点:在部署的yaml文件中添加 containerPort: "metrics",并在代码本身中将Prometheus服务器设置为在“metrics”端口上启动?Dockerfile还需要具有 EXPOSE metrics - north.mister
通过你的应用dockerfile公开带有Prometheus指标的端口,将- name: metrics containerPort: 1234添加到部署中的容器,并在此Pod元数据中添加annotations: prometheus.io/scrape: 'true'。就这样,你不需要设置Prometheus服务器以在“metrics”端口上启动 - d.ansimov
抱歉,我指的是内部的Prometheus度量报告器(在代码中启动以将度量报告回主服务器)。感谢澄清。 - north.mister
4
一个示例的 YAML 文件会非常有帮助。 - himanshu
@himanshu 你有拿到示例吗? - user9920500

0

您提出的注释应该是有效的。为每个端口注释创建一个scrape_config,仅保留与相应注释端口名称匹配的目标。


谢谢你的建议,伙计。看起来如果我只设置annotations: prometheus.io/scrape: 'true',Prometheus就会在所有公开端口上进行抓取。所以,这对我来说已经足够了。 - d.ansimov
嗨,d.ansimov,这对你有效吗?我指的是你提出的语法? - user9920500
@OlivierDulac,现在这个问题的优先级不高,我正在寻找解决方法。 - user9920500

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接