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

Loki日志查询报错:求AuthFilterTime平均值语法错误求助

Loki查询AuthFilterTime平均值报错排查

问题背景

我的Loki中有如下日志信息:

2023-02-13 12:20:08.675  INFO 30937 --- [lettuce-epollEventLoop-5-1] c.g.poc.Filter.AuthenticationFilter      : [ requestId : 904c1292-66, AuthFilterTime : 15 ms ]
2023-02-13 12:16:32.100  INFO 30937 --- [lettuce-epollEventLoop-5-1] c.g.poc.Filter.AuthenticationFilter      : [ requestId : f84a572f-65, AuthFilterTime : 4 ms ]
2023-02-13 12:16:31.427  INFO 30937 --- [lettuce-epollEventLoop-5-1] c.g.poc.Filter.AuthenticationFilter      : [ requestId : 904c1292-64, AuthFilterTime : 10 ms ]

想要获取AuthFilterTime的平均值,但执行以下查询语句时出现报错:

"parse error at line 5, col 6: syntax error: unexpected NUMBER"

原查询语句:

sum by (filename)(
  avg_over_time(
    {filename="/path/to/the/log/file"} |= "AuthFilterTime.*ms" |
    regexp `AuthFilterTime\s*:\s*(\d+) ms` |
    $1
  )[24h]
)

错误原因

  1. 语法不符合LogQL规范:直接使用$1引用正则捕获组是错误的,Loki需要通过line_format指令将捕获的内容输出为新的日志行,而非直接引用分组变量。
  2. 未转换数值类型:正则提取出的数字是字符串格式,avg_over_time仅支持处理数值流,必须显式转换为数值类型才能进行计算。
  3. 聚合逻辑不合理:sum by (filename)包裹avg_over_time的逻辑不符合需求,通常需要先计算时间窗口内的平均值,再按维度聚合(或直接计算整体平均值)。

正确查询语句

场景1:计算过去24小时内所有AuthFilterTime的平均值

avg_over_time(
  {filename="/path/to/the/log/file"} |= "AuthFilterTime" 
  | regexp `AuthFilterTime\s*:\s*(\d+) ms` 
  | line_format "{{.1}}" 
  | to_number
)[24h:]

场景2:按filename聚合(多日志文件场景)

avg by (filename) (
  avg_over_time(
    {filename="/path/to/the/log/file"} |= "AuthFilterTime" 
    | regexp `AuthFilterTime\s*:\s*(\d+) ms` 
    | line_format "{{.1}}" 
    | to_number
  )[24h:]
)

语句说明

  • | regexp AuthFilterTime\s*:\s*(\d+) ms``:匹配日志中的AuthFilterTime字段,精准捕获时间数字部分
  • | line_format "{{.1}}":将正则捕获的第一个分组(目标数字)作为新的日志内容输出
  • | to_number:将字符串格式的数字转换为数值类型,让avg_over_time可以执行数值计算
  • avg_over_time(...)[24h:]:计算过去24小时内所有数值的平均值,:表示将时间窗口对齐到当前时间

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 17:01:13