emp*_*188 10 grafana prometheus
我想计算一些独特的标签值.有一些像
select count (distinct a) from hello_info
Run Code Online (Sandbox Code Playgroud)
例如,如果我的度量标准'hello_info'具有标签a和b.我想要计算一个独特的数量.对于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")
Run Code Online (Sandbox Code Playgroud)
bri*_*zil 22
count(count by (a) (hello_info))
Run Code Online (Sandbox Code Playgroud)
首先,您希望聚合器具有每个值的结果a,然后您可以对它们进行计数.
val*_*ala 10
相当于count(count(hello_info) by (a))以下 SQL:
SELECT
time_bucket('5 minutes', timestamp) AS t,
COUNT(DISTINCT a)
FROM hello_info
GROUP BY t
Run Code Online (Sandbox Code Playgroud)
请参阅time_bucket()函数说明。
例如,它默认返回a每个间隔的标签的不同值的数量-有关 5 分钟间隔的详细信息,请参阅陈旧文档。5-minute
a如果您需要计算自定义时间间隔(例如,最后一天)内标签的唯一值数量,则必须使用以下 PromQL 查询:
count(count(last_over_time(hello_info[1d])) by (a))
Run Code Online (Sandbox Code Playgroud)
自定义间隔 -1d在上面的情况下 - 可以更改为任意值 - 请参阅这些文档以获取可能的值,可以在那里使用。
此查询使用last_over_time()函数来选择最后一天处于活动状态的所有时间序列。时间序列可以随时停止接收新样本并变为不活动状态。此类时间序列不会count(...) by (a)在 5 分钟不活动后简单地捕获。Kubernetes 中的新部署和水平 Pod 自动缩放是大量不活动时间序列(又称高流失率)的最常见来源。
小智 9
其他示例:如果您想根据标签的不同值(例如:app)计算部署在 kubernetes 集群中的应用程序数量:
count(count(kube_pod_labels{app=~".*"}) by (app))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10998 次 |
| 最近记录: |