Prometheus 基于标签过滤 - 错误

Posted

技术标签:

【中文标题】Prometheus 基于标签过滤 - 错误【英文标题】:Prometheus filtering based on Labels - error 【发布时间】:2022-01-12 10:51:31 【问题描述】:

我们使用此查询来获取 cpu 指标的 pod/namespace,并使用 kube_pod_labels 根据标签获取 pod 名称。

max(kube_pod_labelslabel_workflow_instance_id="$workflow_instance_id", label_workflow_vertex_id=~"$workflow_vertex_id", pod=~".+"  * on(pod) group_left sum by(pod) (label_replace(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_iratenamespace="pipeline-worker", container_name!="POD","pod", "$1", "pod_name", "(.+)")) * on(pod) group_left kube_pod_status_phasephase="Running") by(label_workflow_vertex_id)

能够看到空的查询结果。我们正在 EKS 上建立集群(附上 grafana UI 截图)enter image description here

这里的任何帮助都会高度相关(比如我在这里做错了什么)

【问题讨论】:

【参考方案1】:

在www.asserts.ai,我们使用以下记录规则记录容器CPU Metric

看起来您正在使用 kube_mixin,所以 mixin_pod_workload 的记录规则可能已经存在于您的环境中

sum by (pod, container, namespace, node, job, workload, asserts_env, asserts_site) (
            rate(container_cpu_usage_seconds_total container != "POD", image != "", container != ""[5m])
            * on (pod, namespace, asserts_env, asserts_site) group_left(workload)
            mixin_pod_workload
            * on (pod, namespace, asserts_env, asserts_site) group_left()
            group by (pod, namespace, asserts_env, asserts_site) (kube_pod_labels)
          )

【讨论】:

我做错了吗?顺便说一句,我们在 kSM 版本 2.2.0 上,我觉得 kube_pod_labels 舞会指标没有 pod 标签。我正在经历这个并试图添加属性 - --metric-labels-allowlist=pods=[*] 但这似乎对我来说也不起作用。这里有什么建议吗?

以上是关于Prometheus 基于标签过滤 - 错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在prometheus中按两个标签过滤?

“模板语法错误:过滤器无效:”;基于 django 文档的自定义 django 模板过滤器损坏,但模板标签有效

Prometheus 正则表达式匹配不同的标签

五分钟搭建基于 Prometheus + Grafana 实时监控系统

使用 metric 值查询 prometheus 标签值

Prometheus 警报总和 1 个标签但输出 2 个标签