You need to enable JavaScript to run this app.
导航

使用 LogCollector 插件处理日志

最近更新时间2023.11.13 16:31:32

首次发布时间2022.10.14 11:41:16

通过 LogCollector 采集文本日志时,可以通过 LogCollector 插件对采集到的日志数据指定字段进行采集后处理,例如某个字段的正则模式解析等。本文档介绍使用 LogCollector 插件处理日志的操作步骤。

背景信息

对于日志结构复杂、格式不固定等复杂场景,配置文本日志的 LogCollector 采集规则时,可以开启插件功能,填写用于处理日志的插件配置,日志服务处理采集到的日志数据时,会根据插件配置依次执行对应的处理逻辑,对采集到的日志数据指定字段进行采集后处理,例如某个字段的正则模式解析等。
在这种场景下创建采集配置时,可以通过各种采集模式对原始日志的外层结构进行初次拆分和解析,再通过 LogCollector 插件指定字段进行再次拆分和解析。支持添加一个或多个插件,LogCollector 将按照填写插件配置的顺序依次执行。

前提条件

操作步骤

1 填写采集配置

  1. 登录日志服务控制台
  2. 在顶部导航栏中选择日志服务所在的地域。
  3. 在左侧导航栏中选择日志服务 > 日志项目管理,并单击指定的日志项目名称。
  4. 在左侧导航栏中单击日志接入
  5. LogCollector日志采集区域,根据业务需求及日志类型、结构,选择合理的采集模式,并填写相关采集规则。
    根据采集模式设置初始配置,并填写规则名称、采集路径、采集模式,并确认高级设置。其中,插件配置的设置方式请参考2 填写插件配置。 不同采集模式的基础设置请参考以下文档。

2 填写插件配置

创建采集配置并填写采集规则时,在插件配置区域选择启动,并填写插件配置。
插件配置格式为 JSON,请填写一个完整的 JSON 对象。其中 key 固定为 processors,value 基础为 JSON Object 数组,数组的每个 Object 代表一个 LogCollector 插件配置。LogCollector 支持的插件列表及其配置方式请参考插件列表
图片

日志样例

例如某应用的原始日志如下:

Click Here&&36&&bold&&text1&&250&&100&&#center#&&sun1.opacity = (sun1.opacity / 100) * 90;

通过单行全文模式采集以上单行日志时,日志服务会对日志全文进行字段封装,最终保存在服务端的日志数据为:

__content__:Click Here&&36&&bold&&text1&&250&&100&&#center#&&sun1.opacity = (sun1.opacity / 100) * 90;
__path__:net/log/net_log_event.log
__source__:192.0.0.1

其中 __content__ 字段可以通过分隔符进行二次拆分,即可以开启插件处理,并指定通过 delimiter 插件使用分隔符模式提取 __content__ 字段中的内容。
插件配置如下:

{
    "processors":[
        {
            "delimiter": {
                "field": "__content__",
                "delimiter": "&&",
                "keys": [
                    "data",
                    "size",
                    "style",
                    "name",
                    "hOffset",
                    "vOffset",
                    "alignment",
                    "onMouseUp"
                ],
                "trim_values": {
                    "mode": "all",
                    "chars": "#"
                },
                "allow_overwrite_keys": true,
                "allow_empty_values": true
            }
        }
    ]
}

__content__ 字段的处理结果如下:

"data": "Click Here"
"size": "36"
"style": "bold"
"name": "text1"
"hOffset": "250"
"vOffset": "100"
"alignment": "center"
"onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"