全部产品
Search
文档中心

容器服务 Kubernetes 版 ACK:解析JSON格式日志

更新时间:Sep 15, 2023

如果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格式解析问题。操作步骤如下:

  1. 登录日志服务控制台

  2. 在Project列表区域,找到目标Project,单击名称。

  3. 找到目标Logstore,单击展开图标图标,然后单击logtail配置

  4. 单击目标Logtail配置,然后单击界面右上角的修改

  5. 修改Logtail配置,增加processors相关配置,然后单击保存

    模式选择极简模式,并打开启用插件处理,在插件配置中processors相关配置。

    JSON日志解析

    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配置后,等待一段时间后,您可以看到正常解析的日志内容。

    JSON