普罗米修斯查询,用于计算一段时间内的唯一标签



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

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

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

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

如果您知道样本之间的间隔(也称为 Prometheus 生态系统中的scrape_interval(,那么以下查询应返回唯一标签集的数量(又名unique time series- 有关 Prometheus 中常用技术术语的更多详细信息,请参阅本文(以及过去 7 天内>=1的值(如果scrape_interval=30s(:

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

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

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

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

最新更新