Prometheus 查询以计算唯一标签值

Posted

技术标签:

【中文标题】Prometheus 查询以计算唯一标签值【英文标题】:Prometheus query to count unique label values 【发布时间】:2019-01-23 17:08:11 【问题描述】:

我想计算唯一标签值的数量。有点像

select count (distinct a) from hello_info

例如,如果我的指标“hello_info”有标签 a 和 b。我想计算唯一 a 的数量。对于 a = "1"、"2"、"3",这里的计数为 3。

hello_info(a="1", b="ddd")
hello_info(a="2", b="eee")
hello_info(a="1", b="fff")
hello_info(a="3", b="ggg")

【问题讨论】:

【参考方案1】:
count(count by (a) (hello_info))

首先,您需要一个聚合器,每个值的结果为 a,然后您可以计算它们。

【讨论】:

似乎对我不起作用,第一个计数返回一个度量矩阵(其中每个值也是一个向量),并且对其运行计数返回一个无意义的值,例如 "1.3" 。 ..有什么想法吗? 我认为这个查询返回的是一个时间序列,而不是为特定标签记录的所有值的数量。【参考方案2】:

其他示例: 如果要根据标签的不同值(例如:app)来统计Kubernetes集群中部署的应用数量:

count(count(kube_pod_labelsapp=~".*") by (app))

【讨论】:

以上是关于Prometheus 查询以计算唯一标签值的主要内容,如果未能解决你的问题,请参考以下文章

根据 pod 标签动态更新 prometheus scrape 配置

Prometheus 查询和区分大小写

在 Prometheus 查询中选择最大的标签值

使用 metric 值查询 prometheus 标签值

Grafana 查询以获取唯一的标签值

无法使用 docker (prom/prometheus) 加载 prometheus.yml 配置文件