day_of_year() 函数是一个向量函数,用于提取时间戳向量中每个样本日期所在的年中的第几天。该函数返回一个向量,其中每个样本的值都是该样本时间戳所在年份的日数(从1月1日开始的天数)。
day_of_year() 函数通常用于时间序列分析,特别是当你想要根据一年中的哪一天来聚合、计算或触发警报时。
day_of_year() 函数的语法如下:
day_of_year(v instant-vector)
参数说明:
v instant-vector: 是你想要提取年中日数的瞬时向量。
假设你有一个记录每日用户活跃度的指标 prometheus_http_requests_total,你想要知道一年中哪一天的用户活跃度最高。你可以使用 day_of_year() 函数来实现这个需求:
user_activity_count group_left(day_of_year) by (day_of_year=day_of_year(timestamp)) sum()
在这个查询中,我们使用 day_of_year(timestamp) 来提取每个 user_activity_count 样本的时间戳所在年份的日数,并使用 group_left() 函数按照这个日数进行分组。然后,我们对每个分组的活跃度进行求和,从而得到一年中每一天的总活跃度。
示例:
注意:day_of_year() 函数仅适用于具有时间戳的样本,并且返回的是样本时间戳所在年份的日数,而不是当前时间的日数。如果你想要获取当前时间的年中日数,你应该使用 Prometheus 服务器本身的当前时间,而不是样本的时间戳。