如何用LogQL过滤coverCurrency与premiumCurrency相等的JSON日志?
解决LogQL筛选嵌套JSON中字段相等的问题
你的原查询问题出在两次json解析的处理方式上:使用line_format替换整个日志行后,会丢失外层解析的上下文信息,且第二次json解析未明确指定要解析嵌套的RequestContent字段,导致字段识别异常。
修正后的查询语句如下:
{namespace="calculation-engine"} | json | __error__="" | json field=RequestContent | __error__="" | premiumCurrency == coverCurrency
关键调整说明:
- 第一次
| json:解析外层JSON结构,同时过滤掉解析失败的日志(__error__="") | json field=RequestContent:明确指定解析嵌套在RequestContent字段中的JSON内容,避免替换整个日志行,保留所有上下文字段- 第二次
| __error__="":过滤嵌套JSON解析失败的日志条目 - 最后
premiumCurrency == coverCurrency:筛选两个字段值完全相等的日志
如果coverCurrency和premiumCurrency本身就在外层JSON中(而非RequestContent嵌套结构里),可以简化为:
{namespace="calculation-engine"} | json | __error__="" | premiumCurrency == coverCurrency
额外排查点:
- 确认字段名称拼写完全一致(LogQL字段区分大小写)
- 检查字段值格式:如果是字符串类型,确保没有多余的引号或空格;如果是数值类型,确保格式统一
内容的提问来源于stack exchange,提问作者Rico-E
相关产品推荐
相关产品推荐

