我第一次尝试使用矢量匹配时,我收到一条错误消息,提示“不允许多对多匹配:匹配标签在一侧必须是唯一的”,我不明白为什么。
这是我的表达:
sum(rate(container_cpu_usage_seconds_total{image!="",pod_name=~"sentry.*",container_name!="POD"}[5m])) by (container_name)
* on (container_name) group_left(container)
avg by (container) (kube_pod_container_resource_requests_cpu_cores{container=~"sentry.*"})
两个向量的结果是
sum(rate(container_cpu_usage_seconds_total{image!=“”,pod_name=~“sentry.*“,container_name!=“POD”}[5m])) by (pod_name, namespace,container_name)
{container_name="sentry-web",namespace="infrastructure",pod_name="sentry-web-65757bf8f6-cgmsw"}
{container_name="sentry-statsds",namespace="infrastructure",pod_name="sentry-statsd-849699fb56-jnljm"}
{container_name="sentry-k8s",namespace="infrastructure",pod_name="sentry-k8s-66b9b88758-stn5x"}
{container_name="sentry-cron",namespace="infrastructure",pod_name="sentry-cron-7dcdfc5688-qh55k"}
{container_name="redis-exporter",namespace="infrastructure",pod_name="sentry-redis-exporter-779f4f85cb-clmc7"}
{container_name="rds-exporter",namespace="infrastructure",pod_name="sentry-rds-exporter-54bb4dcd8d-h5rh5"}
{container_name="nginx-exporter",namespace="infrastructure",pod_name="sentry-web-75959bc475-4dpg2"}
{container_name="nginx-exporter",namespace="infrastructure",pod_name="sentry-web-65757bf8f6-cgmsw"}
{container_name="nginx",namespace="infrastructure",pod_name="sentry-web-75959bc475-4dpg2"}
avg by (container) (kube_pod_container_resource_requests_cpu_cores{container=~“sentry.*“})
{container="sentry-k8s"} 0.1
{container="sentry-statsds"} 0.1
{container="sentry-cron"} 0.1
{container="sentry-workers"} 0.5
{container="sentry-web"} 1
第二个向量有 uniq 标签,为什么我会收到这个错误?有任何想法吗 ?
最佳答案
RHS 都有相同的 container_name
标签,因为他们没有 container_name
标签,所以这最终成为多对多匹配。您可能想要在这里做的是使用 label_replace
重命名标签,或修复标签的来源以具有一致的命名。
关于普罗米修斯 - 不允许多对多匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52625815/