Loki解析含转义字符的JSON并求和dml_affected_rows/row_count求助
解决JSON转义问题并实现字段求和统计
先清理转义字符
日志里的JSON带大量转义符(比如\"、\\),这是解析失败的核心原因。直接在模式解析后加一步字符串替换:把所有\\换成\,再把\"换成",把转义后的JSON还原成标准格式。比如原串是"{\"dml_affected_rows\":{\"row_count\":5}}",替换后就能得到正常的{"dml_affected_rows":{"row_count":5}}。验证JSON格式
清理完后,用工具自带的JSON校验功能(或在线校验器)确认结构合法,别留着多余逗号、未闭合括号这类问题,不然解析还是会崩。正确提取目标字段
格式没问题后,用工具的JSON解析函数抓字段:- 要是用ELK,用
json处理器解析后,直接通过dml_affected_rows.row_count提取数值(如果字段名真的带斜杠,就用["dml_affected_rows/row_count"]这种方式引用); - 要是用Grafana Loki,就在查询里加
| json "dml_affected_rows.row_count",字段带斜杠就改成| json "dml_affected_rows/row_count"。
- 要是用ELK,用
统计24小时总和
拿到row_count字段后,用聚合功能求和:- Kibana里建可视化,度量选“求和”,字段挑
row_count,时间范围设最近24小时; - Loki+Grafana的话,查询末尾加
| sum by (),时间范围选最近24小时就行。
- Kibana里建可视化,度量选“求和”,字段挑
踩坑排查
- 如果还是报错,检查是不是有漏处理的转义字符(比如
\n、\t),针对性替换掉; - 确认
row_count是数值类型,要是存成字符串了,得先转成数值再求和(比如Kibana用convert处理器转成long型)。
- 如果还是报错,检查是不是有漏处理的转义字符(比如
内容的提问来源于stack exchange,提问作者DataScienceAmateur
相关产品推荐
相关产品推荐

