监控数据(在即时查询 Table 视图里)为何一会能查到一会查不到?

关键字 频率 时序库参数

即时查询页面我们通过PromQL查询一个指标时,在Table视图(即时查询,instant query)中可能会出现机器标识出现类似不可重复读(原来是A,现在却变为了B,再查变A和B或者都没有了)的现象发生,不过要是切换到Graph视图(范围查询,range query)中可以看到数据上报稳定正常,原因通常和两个因素有关:

  1. 采集数据频率
  2. 时序库参数(回溯窗口,数据缺失情况可以最多回溯多久数据作为匹配结果,VM中是-search.maxStalenessInterval XX,prometheus中是--query.lookback-delta=XX

假设数据上报如下图所示,这是一个采集数据上报的时间轴,+点表示上报数据,_点表示查询时间点,如图所示,采集频率15s,其中如果时序库参数设置10s(VM中是 -search.maxStalenessInterval 10s,prometheus中是--query.lookback-delta=10s),则图上XX表示的时间段就是即时查询中数据缺失的时间段。因为 00:30 上报了数据,从这开始,一直到 00:40 这 10s 内都可以查到数据,因为向后查找窗口是 10s,但是 00:40~00:45 这 5s 内的数据就查不到了。如果时序库最大失效窗口参数设置为 15s,那么就可以查到 00:40~00:45 这 5s 内的数据了。

  1. 00:40
  2. ------+---------+---------+--_----_XX+---------+---------+------->
  3. |
  4. |
  5. 00:00 00:15 00:30| 00:45 01:00 01:15
  6. |
  7. 00:35