首页/云/可观测性速查/offset 与 @:时间平移查询
Prometheus 与采集64 条

offset 与 @:时间平移查询

offset 把查询窗口整体前移(如 offset 1w 看上周同期),@ 把查询固定到某个时间点(如 @ end() 对齐查询区间结束);两者常配合使用。

可观测性速查云更新于 2026-10-13

offset 与 @ 是什么

两个时间修饰符用来改变查询的时间语义:offset 把查询窗口整体前移(如 offset 1w 看上周同一时刻),@ 把查询固定到某个时间点(如 @ end() 对齐查询区间的结束时间)。它们常用于同期对比与多面板对齐,写对位置是关键。

基本信息

offset 语法指标[区间] offset 时长
offset 作用窗口整体前移,可写 1w、1d、5m
@ 语法@ <Unix 秒> / @ start() / @ end()
@ 作用固定求值时间点,忽略查询时刻
书写位置都写在区间选择器之后
常见用途同期对比、多面板时间对齐

典型使用场景

  • 对比本周与上周同一时刻的流量与错误率
  • 大促期间把当天曲线与历史峰值日对齐观察
  • 多块面板使用 @ end() 让数据点落在同一时刻,避免拼接错觉
  • 做容量对比时把去年同期数据拉到同一张图上
  • 复盘时固定到故障发生的时间点取快照数值
  • 跨时区团队协作时用 @ 固定时间点统一口径

常见用法

常见用法
# 与上周同一时刻对比
sum(rate(http_requests_total[5m] offset 1w))

# 固定到某个时间戳
sum(rate(http_requests_total[5m] @ 1755000000))

# @ end():对齐到查询区间的结束时间
sum(rate(http_requests_total[5m] @ end()))

# offset 写在区间选择器之后
node_load1 offset 1d

修饰符对照

写法含义典型用途
offset 1w窗口前移一周与上周同期对比
offset 1d窗口前移一天日同比
@ end()固定到区间结束时间多面板对齐
@ <Unix 秒>固定到指定时刻复盘取快照
@ 的数值是 Unix 秒;与看板的时间联动变量混用时注意语义差异,否则会得到固定的历史值而不是当前值。
offset 必须写在区间选择器之后:http_requests_total[5m] offset 1w,位置写错会直接报错。
子查询中同时使用 @ 与 offset 时语义较绕,建议先用简单查询验证结果再嵌入告警规则,避免规则长期给出错误判断。
offset 会查询更早的数据:若保留期短于回溯时长,结果会为空,排查时先确认 TSDB 里是否还有那段时间的数据。

易错点

  • offset 必须写在区间选择器之后:http_requests_total[5m] offset 1w,位置写错直接报错
  • 子查询中同时使用 @ 与 offset 时语义较绕,先用简单查询验证再嵌入告警规则
  • @ 与看板时间变量混用会让面板永远显示某个历史点,看起来像「数据不更新」
  • 回溯时长超出保留期时结果为空,误判为指标缺失而反复排查采集配置
  • 在告警规则里用 @ 固定时间会让判定脱离当前时刻,规则长期不触发或长期触发

数据来源与参考

  • Prometheus 文档 · Modifiers(offset / @)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌