繁体   English   中英

Prometheus 查询以计算一段时间内的唯一标签

[英]Prometheus query to count unique labels over a timeframe

我需要计算给定时间范围内普罗米修斯指标的唯一标签集的数量。 例如,“在过去 7 天内的某个时间点,有多少个唯一标签集的值为 1”。

我已经使用countcount_over_time进行了调查,但count仅对即时向量进行操作,这意味着我可以及时获取一个实例的唯一标签集的数量,但不能在一个时间范围内汇总。 count_over_time返回没有用的值的数量,因为我需要知道标签集的数量而不是每个标签集有多少个值。

基本上我想要像count((metric_name >= 1)[7d])这样的东西。 这是一个非常容易在 PromQL 之外解决的问题,只需在 7 天内进行范围查询metric_name >= 1 ,然后计算响应结果字段中的系列数,但如果可能,我想在 PromQL 中执行此查询.

如果您知道样本之间的间隔(又名 Prometheus 生态系统unique time series scrape_interval ),那么以下查询应该返回值>=1如果scrape_interval=30s则过去 7 天为>=1次:

count(count_over_time((metric >= 1)[7d:30s])

此查询使用 PromQL 的子查询功能

如果事先不知道scrape_interval ,则无法使用 PromQL 解决该任务。 但它可以通过 MetricsQL 中的count_gt_over_timecount_eq_over_time函数来解决

count(count_gt_over_time(metric[7d], 1) or count_eq_over_time(metric[7d], 1))

弄清楚了。 count(count_over_time(metric[range]))给出我想要的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM