在普罗米修斯中按年/月/日分组数据
Posted
技术标签:
【中文标题】在普罗米修斯中按年/月/日分组数据【英文标题】:Group data by year/month/day in prometheus 【发布时间】:2019-02-10 00:20:20 【问题描述】:正如标题所说,我正在寻找一种方法来获取时间序列的最大值,该时间序列每天都会重置。完成此任务后,我想对这些值进行总和,以获得每月/每年的值。在 Prometheus 中实现这一目标的最佳方法是什么?
【问题讨论】:
【参考方案1】:正如我在 prometheus-developers 上的帖子中所述,这是一个可能的选项,尽管它远非可读:
upjob="prometheus" + ignoring(year, month, day) group_right
count_values without() ("year", year(timestamp(
count_values without() ("month", month(timestamp(
count_values without() ("day", day_of_month(timestamp(
upjob="prometheus"
)))
)))
))) * 0
用您需要的任何系列选择器替换 upjob="prometheus"
的两个实例。不过,不知道这有多有效。 :o)
【讨论】:
您能解释一下这背后的想法吗?无论如何感谢您的解决方案count_values_without(...)
块的全部意义在于获得具有相同标签的时间序列,加上 year
、month
和 day
作为原始时间序列(和一个垃圾值) .然后您执行+ ignoring(year, month, day) group_right <timeseries_with_year_month_day> * 0
以将year
、month
和day
标签附加到原始时间序列的值。现在这个新的时间序列具有标识每一天的标签,您可以通过按这些标签过滤以任何您想要的方式按天聚合。
如果我们假设upjob="prometheus"
是一个计数器...我可以将上面的内容包裹在sum(increase( what-you-have-above ))
周围以绘制它吗?当我这样做时......我收到一个错误Error executing query: invalid parameter 'query': 2:3: parse error: expected type range vector in call to function "increase", got instant vector
我应该说“用 date. So you'd need
sum(increase(your_counter[5m]))` 聚合的任何 表达式 替换 upjob="prometheus"
的两个实例在上面的查询中出现两次(替换upjob="prometheus"
)。以上是关于在普罗米修斯中按年/月/日分组数据的主要内容,如果未能解决你的问题,请参考以下文章
MySQL按年/月/周/日/小时分组查询排序limit判空用法