解析JSON格式日志
如果ECI采集的标准输出日志为原生K8s日志,每行日志前增加了时间戳、来源等信息,则配置日志解析可能会失败。例如:如果标准输出日志为JSON格式,添加前缀后,JSON解析就会失败。本文介绍如何通过阿里云日志服务SLS的Processor能力解决日志的JSON格式解析问题。
问题现象
ECI底层组件记录的标准输出日志与原生K8s日志格式一致,在每行标准输出日志前会增加时间戳、来源等信息,这可能会破坏您原生的日志格式,导致系统无法正常解析JSON格式日志。示例如下:
2020-04-02T15:40:05.440500764+08:00 stdout F {"key1":"val1","key2":"val2"}
2020-04-02T15:40:07.442412564+08:00 stdout F {"key1":"val1","key2":"val2"}
2020-04-02T15:40:09.442774495+08:00 stdout F {"key1":"val1","key2":"val2"}
2020-04-02T15:40:11.443799303+08:00 stdout F {"key1":"val1","key2":"val2"}
2020-04-02T15:40:13.445099622+08:00 stdout F {"key1":"val1","key2":"val2"}
2020-04-02T15:40:15.445934358+08:00 stdout F {"key1":"val1","key2":"val2"}
2020-04-02T15:40:17.447064707+08:00 stdout F {"key1":"val1","key2":"val2"}
2020-04-02T15:40:19.448112987+08:00 stdout F {"key1":"val1","key2":"val2"}
2020-04-02T15:40:21.449393263+08:00 stdout F {"key1":"val1","key2":"val2"}
解决方法
您通过阿里云日志服务SLS的Processor能力来解决日志的JSON格式解析问题。操作步骤如下:
登录日志服务控制台。
在Project列表区域,找到目标Project,单击名称。
找到目标Logstore,单击
图标,然后单击logtail配置。
单击目标Logtail配置,然后单击界面右上角的修改。
修改Logtail配置,增加processors相关配置,然后单击保存。
模式选择极简模式,并打开启用插件处理,在插件配置中添加processors相关配置。
processors相关配置的内容如下:
{ "processors": [ { "type": "processor_anchor", "detail": { "SourceKey": "content", "Anchors": [ { "Start": "stdout F ", "Stop": "", "FieldName": "json_content", "FieldType": "string", "ExpondJson": false } ] } }, { "type": "processor_json", "detail": { "SourceKey": "json_content", "KeepSource": false, "ExpandConnector": "" } } ] }
保存Logtail配置后,等待一段时间后,您可以看到正常解析的日志内容。