Kubernetes 普罗米修斯对库伯·克朗乔布斯的多对多问题
好了 我正在尝试配置Kubernetes Cronjobs监控和警报与普罗米修斯。我觉得这很有帮助 但我总是得到一个不允许的多对多匹配:匹配标签的一侧必须是唯一的错误 例如,这是触发此错误的PromQL查询:Kubernetes 普罗米修斯对库伯·克朗乔布斯的多对多问题,kubernetes,prometheus,promql,kube-state-metrics,Kubernetes,Prometheus,Promql,Kube State Metrics,好了 我正在尝试配置Kubernetes Cronjobs监控和警报与普罗米修斯。我觉得这很有帮助 但我总是得到一个不允许的多对多匹配:匹配标签的一侧必须是唯一的错误 例如,这是触发此错误的PromQL查询: max( 工作状态开始时间 *在(职务名称)组右()上 kube_job_labels{label_cronjob!=“”) )按(作业名称、标签和作业) 查询本身会产生这些指标 kube\u作业状态\u开始时间: kube_工作状态开始时间{app=“kube state metri
max(
工作状态开始时间
*在(职务名称)组右()上
kube_job_labels{label_cronjob!=“”)
)按(作业名称、标签和作业)
查询本身会产生这些指标
kube\u作业状态\u开始时间:
kube_工作状态开始时间{app=“kube state metrics”,chart=“kube-state-metrics-0.12.1”,heritage=“Tiller”,instance=“REDACTED”,job=“kubernetes服务端点”,job_name=“test-1546295400”,kubernetes_name=“kube state metrics”,kubernetes_namespace=“monitoring”,kubernetes_node=“REDACTED”,namespace=“test develop”,release=“kube state metrics”}
kube\u job\u标签{label\u cronjob!=''}:
kube_-job_标签{app=“kube-state-metrics”,chart=“kube-state-metrics-0.12.1”,heritage=“Tiller”,instance=“REDACTED”,job=“kubernetes服务端点”,job_name=“test-1546295400”,kubernetes_-name=“kube-state-metrics”,kubernetes_命名空间=“监控”,kubernetes_节点=“REDACTED”,label_cronjob=“test”,label_-environment=“test开发”,命名空间=“测试开发”,release=“kube state metrics”}
这里有我遗漏的东西吗?我在指南中尝试的每个查询都会出现相同的多对多错误。
即使是我自己从头开始建造,也会导致同样的错误。
希望您能在这里帮助我:)我深入研究了这个问题,我想它的根本原因在于一对多向量匹配表达式:
kube_job_status_start_time * ON(job_name) GROUP_RIGHT() kube_job_labels{label_cronjob!=""}
组修饰符“group_RIGHT()”表示,左侧的每个向量元素(kube_job_status_start_time)可以基于公共标签(job_name)与右侧的多个元素(kube_job_label)匹配。问题是,我们在这里处理的是多对多匹配,因为右侧的每个向量元素也可以匹配左侧向量的多个元素:
我认为我们这里缺少的是唯一地识别普罗米修斯从K8S导出的工作对象的方法。这篇博文的作者在他的设置中提到了这个功能:
…普罗米修斯通过包含
原始度量值的标签作为导出的作业标签
在我的情况下,当通过helm(stable/Prometheus operator)安装时,我没有从普罗米修斯那里得到这个额外的标签。将
kube\u作业状态\u开始时间
替换为max(kube\u作业状态\u开始时间)
将聚合出所有重复项,并应解决错误
结果查询如下所示
max(
max(kube_job_status_start_time) by (job_name)
* ON(job_name) GROUP_RIGHT()
kube_job_labels{label_cronjob!=""}
) BY (job_name, label_cronjob)
在我的情况下,当通过helm(stable/Prometheus operator)安装时,我没有从普罗米修斯那里获得额外的标签
你需要在普罗米修斯中配置它。它调用:荣誉标签:false
# If honor_labels is set to "false", label conflicts are resolved by renaming
# conflicting labels in the scraped data to "exported_<original-label>" (for
# example "exported_instance", "exported_job") and then attaching server-side
# labels.
# Setting honor_labels to "true" is useful for use cases such as federation and
# scraping the Pushgateway, where all labels specified in the target should be
# preserved
无论如何,如果我有这样的(我现在已经导出了_作业),仍然无法进行正确的查询,但我猜仍然是因为我的LHS
Error executing query: found duplicate series for the match group
{exported_job="kube-state-metrics"} on the left hand-side of the operation:
[{__name__=
在遵循此介质的指导时,我在我的Prometheus sandbox env中观察到相同的
多对多
错误。对我来说,这些错误是随机发生的。我的意思是,在某些情况下,相同的查询成功完成,另一次失败。我遇到了相同的问题,作业没有导出的作业标签。你找到了导出此作业的方法吗_同时通过更改任何配置来添加作业标签?