You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用LogQL查询Loki中缺失的日志以判断系统未运行?

如何通过LogQL查询“缺失的日志”判断系统未运行?

下图展示了通过以下LogQL查询生成的系统日志活动:

sum(count_over_time({job="ET10"} |= "Station 1" [1m]))

当系统因故障停止运行时,不会生成相应的日志行,但日志活动会随之终止。
系统日志活动图

我尝试过两种查询方式,但都没达到预期:

  • 将活动转为布尔值查询:
sum(count_over_time({job="ET10"} |= "Station 1" [1m])) > bool 0

布尔值查询结果图

  • 对上述查询取反:
sum(count_over_time({job="ET10"} |= "Station 1" [1m])) < bool 1

这个查询没达到预期,因为大约2:30之后无日志产生,所以没有返回结果;仅在有日志的时段(如绿色条之间)有响应,这不是我想要的。

我期望得到的效果如下:
期望结果图


解决方案

要实现检测日志缺失的效果,可直接使用LogQL的absent_over_time函数,它专门用于检测指定时间窗口内是否无匹配日志序列。

核心查询语句:

absent_over_time({job="ET10"} |= "Station 1" [1m])
  • 原理:该函数会在每个时间间隔内检查匹配日志:
    • 窗口内无符合条件的日志时,返回值为1
    • 窗口内有日志时,返回空(不生成数据点)

匹配期望图表的优化查询:

如果需要更直观的布尔值展示(1表示系统未运行,0表示运行中),可结合or操作补充正常时段的数值:

absent_over_time({job="ET10"} |= "Station 1" [1m]) or vector(0)

这样系统正常运行时返回0,停止运行时返回1,完全匹配你期望的图表效果。

内容的提问来源于stack exchange,提问作者user2366975

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 02:09:10