【发布时间】:2020-07-24 09:58:14
【问题描述】:
我正在运行一个带有两个容器的 pod:global-metrics-generator 和 collectd-statsd。在容器global-metrics-generator 中,我将python 脚本作为cron 运行,该脚本负责获取k8s 集群中的所有Pod,并将与Pod cpu 和内存相关的指标推送到localhost:28125,@987654326 内运行的collectd 进程正在监听@987654326 @ 容器。我在脚本中使用 python statsd 客户端将这些指标从 global-metrics-generator 推送到 collectd-statsd 容器。
我已经使用这个设置将近 1 年了,它一直在无缝运行。但最近我在我的系统中引入了一个 nginx-ingress pod,尽管我看到 python 脚本将 nginx-ingress pod 的 cpu/内存指标发送到 collectd,但该指标并未收集在 collectd-statsd 容器中的 /var/lib/collectd/ 文件夹中.对于我的 k8s 集群中的任何其他 pod,它都按预期工作。
奇怪的事情:
当我将 nginx-ingress 的 pod 名称更改为任何其他名称以使其中没有单词 ingress 例如:nginx-ingres(注意单个 s)时,我看到该指标被收集在 @ 987654335@文件夹。
带有自定义标签的最终指标的结构如下所示:
什么有效 - [container=nginx-ingres,name=nginx-ingres-6bf8b67bb7-ndmjn,replicaset=nginx-ingres-6bf8b67bb7,ip=100.101.28.65,host_ip=10.36.40.229,Namespace=nginx-ingress]container.cpu.usage
什么不起作用 - [container=nginx-ingress,name=nginx-ingress-599c78d7b6-psxns,replicaset=nginx-ingress-599c78d7b6,ip=100.102.33.199,Namespace=nginx-ingress,host_ip=10.36.40.170]container.cpu.usage
我在网上找不到与此相关的任何内容,但在 collectd/statsd 中保留了 ingress 这个词吗?如果是这样,那么知道为什么我能够将Namespace=nginx-ingress 标记与指标一起传递?
【问题讨论】:
-
有趣的问题。显然
ingress可能是像here 这样的保留字,其中ingress(作为入站的同义词)用于度量名称。但这只是我的猜测。如果文档中没有提到,可能只能通过分析其代码找到答案。你也可以考虑在你正在使用的这个特定项目的 GitHub 上创建一个新问题。但有趣的是ingres有效而ingress无效。 :)
标签: kubernetes nginx-ingress statsd amazon-eks collectd