首页/云/可观测性速查/LogQL 解析器:json / logfmt / regexp / pattern
日志平台52 条

LogQL 解析器:json / logfmt / regexp / pattern

解析器把行内结构化:json 与 logfmt 直接提取字段用于过滤与聚合,regexp/pattern 面向自定义格式;提取的字段可继续参与条件。

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

LogQL 解析器是什么

LogQL 解析器把日志行结构化:json 与 logfmt 从标准格式里直接提取字段,regexp 与 pattern 面向自定义格式。提取出来的字段是临时字段,可以继续参与过滤与聚合,也能在指标查询里做标签使用,是「先取标签、再解析、后过滤」链路里的第二环。

基本信息

常用解析器json / logfmt / regexp / pattern
输出临时字段,可参与后续过滤
失败标记解析失败加 __error__ 标签
适用对象结构化与半结构化日志行
常用搭配比较运算过滤、count_over_time 聚合
性能提示regexp 越复杂 CPU 越高

典型使用场景

  • JSON 日志按 level 与 status 过滤,快速筛出 5xx 请求
  • logfmt 日志里按耗时字段筛慢请求
  • 自定义文本用 regexp 提取方法与路径做统计
  • 用 pattern 处理结构固定但非标准格式的日志
  • 解析后按字段计数,把日志量转成时间序列做告警
  • 定位日志格式不统一的问题,先看是否大量出现解析失败标记

解析与过滤

解析与过滤
# JSON 日志解析
{app="api"} | json | level="error" and status >= 500

# logfmt 解析 + 数值过滤
{app="api"} | logfmt | duration_ms > 1000

# regexp 提取命名分组
{app="api"} | regexp "(?P<method>GET|POST) (?P<path>[^ ]+)"

# pattern 解析固定分隔格式
{app="api"} | pattern "<_> <level> <msg>"

# 解析后聚合:每分钟错误条数
sum(count_over_time({app="api"} | json | level="error" [1m]))

解析器对照

解析器适用格式特点
jsonJSON 行字段直接可用,最推荐
logfmtkey=value 行轻量,常见于 Go 应用
regexp自定义文本灵活但 CPU 开销高
pattern固定分隔结构比 regexp 更快更好读
解析出的字段是「临时标签」,可用于过滤与指标查询;不要把它们再注册成流标签,否则又会造成标签基数膨胀。
解析失败的行默认会带 __error__ 标签,先查该标记的数量,能快速判断日志格式是否统一。
对大段文本用 regexp 提取复杂分组会明显增加查询 CPU;格式固定时 pattern 或先做行过滤能省下大量开销。
字段名里的点号与中划线在 LogQL 里可能需要特殊处理,遇到解析成功但过滤不生效时先核对字段名写法。

易错点

  • 解析失败默认加 __error__ 标签,先查格式是否统一再断言结果
  • 对大段文本用 regexp 提取复杂分组会明显增加查询 CPU
  • 把解析出的字段再注册成流标签会重新引入高基数问题
  • 解析器与日志格式不匹配时不会报错,只会提取不到字段导致过滤结果为空
  • 先用贵解析器扫描全量日志会放大查询成本,应先做行过滤再解析

数据来源与参考

  • Grafana 官方文档 · LogQL parsers
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌