日志服务 日志结构化-单行文本

某用户将日志采集到日志服务(Cloud Log Service,CLS),是单行文本格式。现在用户想将日志结构化,从文本中提取日志时间、日志级别、requestid 等信息,便于后续的检索分析。

相关产品
日志服务 产品页,含版本规格、价格与购买入口。

一、场景分析

梳理用户的加工需求,加工思路如下:

1. {…}中的内容是操作的详情,可以通过正则提取。

2. 使用正则提取日志时间、日志级别、URL。

二、原始日志

{ "content": "[2021-11-24 11:11:08,232][328495eb-b562-478f-9d5d-3bf7e][INFO] curl -H 'Host: ' http://abc.com:8080/pc/api -d {\\"version\\": \\"1.0\\",\\"user\\": \\"CGW\\",\\"password\\": \\"123\\"}"}

三、加工结果

{"level":"INFO","password":"123","requestid":"328495eb-b562-478f-9d5d-3bf7e","time":"2021-11-24 11:11:08,232","user":"CGW","version":"1.0"}

四、DSL 加工函数

ext_regex("content", regex="\\[(\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2},\\d{3})\\]\\[(\\w+-\\w+-\\w+-\\w+-\\w+)\\]\\[([A-Z]{4})\\].*(\\{[^\\}]+\\})", output="time,requestid,level,msg")ext_json("msg")fields_drop("content","msg")

五、DSL 加工函数详解

1. 使用正则键值提取函数 ext_regex,提取时间、请求、日志级别、消息等信息,并将相关的内容保存至 time、requestid、level 和 msg 字段中。

ext_regex("content", regex="\\[(\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2},\\d{3})\\]\\[(\\w+-\\w+-\\w+-\\w+-\\w+)\\]\\[([A-Z]{4})\\].*(\\{[^\\}]+\\})", output="time,requestid,level,msg")

2. 使用 ext_json 对 msg 字段进行平铺,msg 的值是{\\"version\\": \\"1.0\\",\\"user\\": \\"CGW\\",\\"password\\": \\"123\\"}。

ext_json("msg")

3. 丢弃 content 和 msg 字段。

fields_drop("content","msg")

赞 (0)
上一篇 4天前
下一篇 4天前