Grok过滤器无法匹配JSON格式响应,请求技术解决方案
正确的Grok过滤器配置方案
问题分析
你之前的Grok过滤器未匹配日志中的键名(如"timestamp":"、"status":)及引号、逗号的准确位置,导致无法匹配目标日志结构。
可行的Grok表达式
针对你提供的日志内容,正确的Grok过滤器需要完整匹配键值对的结构:
^Response : \"timestamp\":\"%{TIMESTAMP_ISO8601:timestamp}\",\"status\":%{NUMBER:response_code},\"error\":\"%{DATA:error}\",\"path\":\"%{DATA:path}\"$
表达式拆解
^Response ::匹配日志开头的固定前缀(注意冒号后的两个空格)\"timestamp\":\"%{TIMESTAMP_ISO8601:timestamp}\":匹配"timestamp":"前缀,提取符合ISO8601格式的时间戳到timestamp字段,\"status\":%{NUMBER:response_code}:匹配,"status":前缀,提取数字类型的状态码到response_code`字段,\"error\":\"%{DATA:error}\":匹配,"error":"前缀,提取错误信息(包含空格)到error`字段,\"path\":\"%{DATA:path}\":匹配,"path":"前缀,提取请求路径到path`字段$:匹配日志结尾,确保完整匹配无多余内容
补充说明
如果你的日志中没有开头的Response : 前缀,可使用简化版:
\"timestamp\":\"%{TIMESTAMP_ISO8601:timestamp}\",\"status\":%{NUMBER:response_code},\"error\":\"%{DATA:error}\",\"path\":\"%{DATA:path}\"
内容的提问来源于stack exchange,提问作者Ashish Pathak
相关产品推荐
相关产品推荐

