配置ICAgent结构化解析
云日志服务LTS支持通过ICAgent结构化解析对日志进行结构化处理。在创建日志接入时设置ICAgent结构化解析规则,支持单行-全文日志、多行-全文日志、JSON、分隔符、单行-完全正则、多行-完全正则、组合解析,您可以根据日志内容选择合适的解析规则。日志采集成功后,将结构化解析后日志发送到指定的日志流上,您就可以对日志进行搜索与分析。
ICAgent只支持RE2风格的正则表达式,详细请参考语法。
配置结构化解析
支持以下日志结构化解析规则:
类型 |
说明 |
---|---|
使用换行符\n作为一条日志的结束符,并将每一条日志保存在一个默认的键值content中。 |
|
适用于一条完整的日志数据跨占多行(例如Java程序日志)的原始日志。为了能让日志系统明确区分开每条日志,采用首行正则的方式进行匹配,当某行日志匹配上预先设置的正则表达式,就认为是一条日志的开头,而下一个行首出现作为该条日志的结束标识符。 |
|
适用于日志文本中每行内容为一条原始日志,且每条日志可按JSON解析规则提取为多个key-value键值对的日志解析模式。 |
|
适用于日志文本中每行内容为一条原始日志,且每条日志可根据指定的分隔符提取为多个key-value键值对的日志解析模式。 |
|
适用于日志文本中每行内容为一条原始日志,且每条日志可按正则表达式提取为多个key-value键值对的日志解析模式。 |
|
适用于日志文本中一条完整的日志数据跨占多行(例如Java程序日志),且可按正则表达式提取为多个key-value键值对的日志解析模式。 |
|
当您的日志结构太过复杂,涉及多种解析模式,单种解析模式(如完整正则模式、JSON模式等)无法满足日志解析需求时,您可以使用组合解析规则解析日志,在插件配置下方输入插件语法(JSON格式)用来定义日志解析的流水线逻辑。您可添加一个或多个插件配置,ICAgent会根据处理配置顺序逐一执行。 |
单行-全文日志
单行-全文日志解析规则是使用换行符\n作为一条日志的结束符,并将每一条日志保存在一个默认的键值content中。日志数据本身不进行日志结构化处理,也不会提取日志字段,日志属性的时间项由日志采集的时间决定。
设置操作:
- 选择单行-全文日志。
- 日志过滤默认关闭。如果需要从海量的日志数据中筛选出符合特定条件的记录,开启日志过滤开关,参考如下操作添加白名单规则或黑名单规则,白名单规则或黑名单规则添加上限为20个。
图1 日志过滤规则
- 设置白名单规则。添加的过滤规则为命中规则,即匹配上正则表达式的日志才会被采集上报。
样例展示:
在结构化解析配置中选择“单行-全文日志”模式,日志上报到LTS后,原始日志样例如下所示,经结构化处理后的日志数据上报到LTS的展示效果如图3所示。
- 原始日志样例:
[2025-06-05_09:53:34] [WARNING] [MODULE_Mf0s2] - iZ4:f=t.+CU)dSPGRU<1r^IGt!,8SD ibP!wd.ey5S19V:yZRVD_3-GCX%c(h [2025-06-05_09:53:34] [WARNING] [MODULE_yPRzp] - ,+iaHEYx+(H-w7g.19s13XSK%ksNe4 [2025-06-05_09:53:34] [INFO] [MODULE_TfNKq] - ):21:1^V)G%)X8A8zPE!iC$_m<z3H^ KDhA7(W_iyeXk1)g3tm%c,m%!2!OeH !WwY4dIMBAz-U.ph@r!RxPvFNYKCyh [2025-06-05_09:53:34] [ERROR] [MODULE_naV0b] - fR5PxhHm(A5s5co-c)!PD%mWer37ww zZ3@(^vC#CELo;(BR=f_AhzJADlpR@ V;ZLg3c)N,q-K5t,*ke7jPnY)s#5i2 [2025-06-05_09:53:34] [INFO] [MODULE_5fMUb] - 6i%B0qSI.yDP3.o)C&U+dE%-Sabony G.7Pfr7xcx/NrX3SV%*ZVWgW+CGD;( -lJHB4ckm(=OQ,rx8zeYFGNtcK/Z)x
- 结果展示:
多行-全文日志
多行-全文日志是指一条完整的日志数据跨占多行(例如Java程序日志)。在这种情况下,以换行符\n为日志的结束标识符就显得有些不合理,为了能让日志系统明确区分开每条日志,采用首行正则的方式进行匹配,当某行日志匹配上预先设置的正则表达式,就认为是一条日志的开头,而下一个行首出现作为该条日志的结束标识符。
使用多行-全文日志解析规则采集日志也会设置一个默认的键值content用于存放多行日志,且日志数据本身不进行日志结构化处理,也不会提取日志字段,日志属性的时间项由日志采集的时间决定。
设置操作:
- 选择多行-全文日志。
- 从“从已有日志中选择”或“从剪切板中粘贴”选择日志样例。
- 从已有日志中选择:单击“从已有日志中选择”,在弹出框中通过选择不同时间段筛选日志,根据业务需求选择待操作的日志,单击“确定”。
- 从剪切板中粘贴:单击“从剪切板中粘贴”,可将您剪切的日志内容复制到示例日志框中。
- 在“首行正则表达式”下方支持自动生成或手动输入正则表达式。首行正则表达式需要匹配首行完整内容,注意并非首行的开头内容。
图4 首行正则表达式
- 日志过滤默认关闭。如果需要从海量的日志数据中筛选出符合特定条件的记录,开启日志过滤开关,参考如下操作添加白名单规则或黑名单规则,白名单规则或黑名单规则添加上限为20个。
图5 日志过滤规则
- 设置白名单规则。添加的过滤规则为命中规则,即匹配上正则表达式的日志才会被采集上报。
样例展示:
在结构化解析配置中选择“多行-全文日志”模式,日志上报到LTS后,原始日志样例如下所示,经结构化处理后的日志数据上报到LTS的展示效果如图7所示。
- 原始日志样例:
[2025-06-05_09:59:45] [INFO] [MODULE_sNRWl] - eTp=hE17db6x_x-j4#ORu*O+7L#VWJ m2k(:E#,O_y@cO:M5gWvaDKE__+oRk vYvVY%&Y6Pl#MOl6@pN*Hm3hn^z#0M [2025-06-05_09:59:45] [INFO] [MODULE_lCg34] - ZiP/4Rzw*)jqf9&huZ(ZgT<g%BbJDG qPg.<(+I&JlVxmxcrMp<v:6u6y$@:_ (;4pz5eJ$PV_AQw5vMu%I0t6n9w!@0 [2025-06-05_09:59:45] [WARNING] [MODULE_463OX] - rkuHw.uepcTV_9OL!x09:DW#ol2xb1 [2025-06-05_09:59:45] [WARNING] [MODULE_nmcyS] - *;cX$zspP)b0n:FcSf4#^zX.UMH8$/ o0T10%bQIEn)tSo==FATOt&D)5epr_ [2025-06-05_09:59:45] [INFO] [MODULE_iv5YJ] - 7k4rca7(N:q3kzulcASLI%k;:hKJFr
首行正则表达式:^\[\d{4}-\d{2}-\d{2}_\d{2}:\d{2}:\d{2}\]
- 结果展示
JSON
JSON解析规则适用于日志文本中每行内容为一条原始日志,且每条日志可按JSON解析规则提取为多个key-value键值对的日志解析模式。若不需要提取key-value,可以参考多行-全文日志配置。
设置操作:
- 选择JSON格式。
- 日志过滤默认关闭。如果需要从海量的日志数据中筛选出符合特定条件的记录,开启日志过滤开关,参考如下操作添加白名单规则或黑名单规则,白名单规则或黑名单规则添加上限为20个。
图8 日志过滤规则
- 设置白名单规则。添加的过滤规则为命中规则,即匹配上正则表达式的日志才会被采集上报。
- 上传原始日志。
- 上传解析失败日志。
- 关于开启或关闭“上传原始日志”和“上传解析失败日志”时,日志上报参考如下。
图10 结构化解析
表2 日志上报说明 参数
日志上报说明
- 开启“上传原始日志”
- 开启“上传解析失败日志”
- 解析成功:上报解析后日志和原始日志content字段。
- 解析失败:上报原始日志content字段和_content_parse_fail_字段。
- 开启“上传原始日志”
- 关闭“上传解析失败日志”
- 解析成功:上报解析后日志和原始日志content字段。
- 解析失败:上报原始日志content字段。
- 关闭“上传原始日志”
- 开启“上传解析失败日志”
- 解析成功:上报解析后日志。
- 解析失败:上报_content_parse_fail_字段。
- 关闭“上传原始日志”
- 关闭“上传解析失败日志”
- 解析成功:上报解析后日志。
- 解析失败:仅上报内置字段和label字段。
- 自定义日志时间。
开启后可指定某一字段作为日志时间,或关闭此项使用日志被采集时间作为日志时间。
- json解析层数。增加json解析层数配置,取值范围为1~4,只能整数,默认值为1。
将json格式日志的字段展开,例如原始日志为{"key1":{"key2":"value"}},解析1层日志为:{"key1":{"key2":"value"}},解析2层日志为:{"key1.key2":"value"}。
- json字符串解析:默认关闭。开启后支持解析转义后的json字符串为json对象,例如{"key1":"{\"key2\":\"value\"}"}解析为key1.key2: value。
样例展示:
在结构化解析配置中选择“JSON”模式,日志上报到LTS后,原始日志样例如下所示,经结构化处理后的日志数据上报到LTS的展示效果如图11所示。
- 原始日志样例:
{"timestamp":"2025-06-05_10:32:08","level":"INFO","module":"MODULE_eJvyE","msg":"P^I^CBHYyIEo98@#R1gp5.io5jU:i!"} {"timestamp":"2025-06-05_10:32:08","level":"WARNING","module":"MODULE_ADPxy","msg":"/DfP7p=^w.rx<$,ep+oLrg@QVe<p0%"} {"timestamp":"2025-06-05_10:32:08","level":"WARNING","module":"MODULE_pEzEl","msg":"rPe%_T(vo_=b#PUrBXa&Sx9KYR2Y%y"} {"timestamp":"2025-06-05_10:32:08","level":"DEBUG","module":"MODULE_zk5l0","msg":"(c)PC<H.,wdlSG%=//hDZ=o5u/(a47"} {"timestamp":"2025-06-05_10:32:08","level":"INFO","module":"MODULE_stz3u","msg":"L@J3+_icq%2w_Vc,):hGbQ/b0i1oy+"}
- 结果展示:
分隔符
分隔符解析规则适用于日志文本中每行内容为一条原始日志,且每条日志可根据指定的分隔符提取为多个key-value键值对的日志解析模式。若不需要提取key-value,可以参考多行-全文日志配置。
设置操作:
- 选择分隔符。
- 根据原始日志内容选择分隔符,或自定义其他需要的特殊字符作为分隔符。
- 从“从已有日志中选择”或“从剪切板中粘贴”选择日志样例,单击“验证”,在提取结果下方查看结果。
- 从已有日志中选择:单击“从已有日志中选择”,在弹出框中根据业务需求选择待操作的日志,单击“确定”。通过选择不同时间段筛选日志。
- 从剪切板中粘贴:单击“从剪切板中粘贴”,可直接自动将您剪切的日志内容复制到示例日志框中。
图12 分隔符 - 日志过滤默认关闭。如果需要从海量的日志数据中筛选出符合特定条件的记录,开启日志过滤开关,参考如下操作添加白名单规则或黑名单规则,白名单规则或黑名单规则添加上限为20个。
图13 日志过滤规则
- 设置白名单规则。添加的过滤规则为命中规则,即匹配上正则表达式的日志才会被采集上报。
- 上传原始日志。
- 上传解析失败日志。
- 关于开启或关闭“上传原始日志”和“上传解析失败日志”时,日志上报参考如下。
图15 结构化解析
表3 日志上报说明 参数
日志上报说明
- 开启“上传原始日志”
- 开启“上传解析失败日志”
- 解析成功:上报解析后日志和原始日志content字段。
- 解析失败:上报原始日志content字段和_content_parse_fail_字段。
- 开启“上传原始日志”
- 关闭“上传解析失败日志”
- 解析成功:上报解析后日志和原始日志content字段。
- 解析失败:上报原始日志content字段。
- 关闭“上传原始日志”
- 开启“上传解析失败日志”
- 解析成功:上报解析后日志。
- 解析失败:上报_content_parse_fail_字段。
- 关闭“上传原始日志”
- 关闭“上传解析失败日志”
- 解析成功:上报解析后日志。
- 解析失败:仅上报内置字段和label字段。
- 自定义日志时间。
开启后可指定某一字段作为日志时间,或关闭此项使用日志被采集时间作为日志时间。
样例展示:
在结构化解析配置中选择“分隔符”模式,日志上报到LTS后,原始日志样例如下所示,经结构化处理后的日志数据上报到LTS的展示效果如图16所示。
- 原始日志样例:
[2025-06-05_10:04:26] [WARNING] [MODULE_vlQR1] - _4xi&#$Um2Ua*M.VHv1_L#CQzas-nC [2025-06-05_10:04:26] [WARNING] [MODULE_RzMii] - Bdp3_*Erlyun:pluL-BdU#y=MgN++7 [2025-06-05_10:04:26] [DEBUG] [MODULE_q9161] - oxUZ#q#xn!oc5WS-<98IB*aH,:FLoj [2025-06-05_10:04:26] [DEBUG] [MODULE_Ze3vY] - L-g;ZQ%*n/ORiFSYM:#T)z;XxKjpVv [2025-06-05_10:04:26] [DEBUG] [MODULE_5ZCwd] - e)!6:CZk/MufokE)A5Kr<rBf9o=9x;
在日志样例下方输入日志,选择空格分隔符,单击“验证”,提取key-value键值对,根据需要修改key值。
[2025-06-05_09:53:34] [WARNING] [MODULE_yPRzp] - ,+iaHEYx+(H-w7g.19s13XSK%ksNe4
- 结果展示:
单行-完全正则
单行-完全正则解析规则适用于日志文本中每行内容为一条原始日志,且每条日志可按正则表达式提取为多个key-value键值对的日志解析模式。若不需要提取key-value,可以参考多行-全文日志配置。
设置操作:
- 选择单行-完全正则。
- 从“从已有日志中选择”或“从剪切板中粘贴”选择日志样例。
- 从已有日志中选择:单击“从已有日志中选择”,在弹出框中根据业务需求选择待操作的日志,单击“确定”。通过选择不同时间段筛选日志。
- 从剪切板中粘贴:单击“从剪切板中粘贴”,可直接自动将您剪切的日志内容复制到示例日志框中。
- 在“提取正则表达式”下方输入要提取日志的正则表达式,单击“验证”,在提取结果下方查看结果。
或者单击“正则表达式自动生成”,在新打开的页面根据日志样例提取字段,输入key值,单击“确定”即可自动生成正则表达式,设置完成后,单击“确定”。
图17 提取正则表达式 - 日志过滤默认关闭。如果需要从海量的日志数据中筛选出符合特定条件的记录,开启日志过滤开关,参考如下操作添加白名单规则或黑名单规则,白名单规则或黑名单规则添加上限为20个。
图18 日志过滤规则
- 设置白名单规则。添加的过滤规则为命中规则,即匹配上正则表达式的日志才会被采集上报。
- 上传原始日志。
- 上传解析失败日志。
- 关于开启或关闭“上传原始日志”和“上传解析失败日志”时,日志上报参考如下。
图20 结构化解析
表4 日志上报说明 参数
日志上报说明
- 开启“上传原始日志”
- 开启“上传解析失败日志”
- 解析成功:上报解析后日志和原始日志content字段。
- 解析失败:上报原始日志content字段和_content_parse_fail_字段。
- 开启“上传原始日志”
- 关闭“上传解析失败日志”
- 解析成功:上报解析后日志和原始日志content字段。
- 解析失败:上报原始日志content字段。
- 关闭“上传原始日志”
- 开启“上传解析失败日志”
- 解析成功:上报解析后日志。
- 解析失败:上报_content_parse_fail_字段。
- 关闭“上传原始日志”
- 关闭“上传解析失败日志”
- 解析成功:上报解析后日志。
- 解析失败:仅上报内置字段和label字段。
- 自定义日志时间。
开启后可指定某一字段作为日志时间,或关闭此项使用日志被采集时间作为日志时间。
样例展示:
在结构化解析配置中选择“单行-完全正则”模式,日志上报到LTS后,原始日志样例如下所示,经结构化处理后的日志数据上报到LTS的展示效果如图21所示。
- 原始日志样例:
[2025-06-05_10:10:45] [DEBUG] [MODULE_qqQeu] - +XPLj#eMaBGoL.kF*e@E7OcWzihN=F [2025-06-05_10:10:45] [WARNING] [MODULE_6Fjpv] - 60QkLDc-53A^<!e_FJ#FW9)x0C00%7 [2025-06-05_10:10:45] [ERROR] [MODULE_mK3Ib] - J$7DqL.dR&7^CG(qPSjY2vprb+2nfm [2025-06-05_10:10:45] [INFO] [MODULE_73x94] - rs3yPQ!(lJ9^$zZQW8U1-3YQRu,3;@ [2025-06-05_10:10:45] [WARNING] [MODULE_JczuV] - Wsc9Q@L%7itQF3SUallKEd3vQS1&E)
输入提取正则表达式,单击“验证”,提取key-value键值对,根据日志内容修改key值方便识别。
^\[(\S*)\]\s\[(\S*)\]\s\[(\S*)\]\s-\s(.*)
- 结果展示:
多行-完全正则
多行-完全正则解析规则适用于日志文本中一条完整的日志数据跨占多行(例如Java程序日志),且可按正则表达式提取为多个key-value键值对的日志解析模式。若不需要提取key-value,可以参考多行-全文日志配置。 配置多行-完全正则模式时,您需要先输入日志样例,使用首行正则表达式匹配首行完整内容,自定义提取正则表达式。
设置操作:
- 选择多行-完全正则。
- 从“从已有日志中选择”或“从剪切板中粘贴”选择日志样例。
- 从已有日志中选择:单击“从已有日志中选择”,在弹出框中根据业务需求选择待操作的日志,单击“确定”。通过选择不同时间段筛选日志。
- 从剪切板中粘贴:单击“从剪切板中粘贴”,可直接自动将您剪切的日志内容复制到示例日志框中。
- 在“首行正则表达式”下方支持自动生成或手动输入正则表达式。首行正则表达式需要匹配首行完整内容,注意并非首行的开头内容。
“首行正则表达式”用于识别多行日志的行首,例如以下日志示例:
2024-10-11 10:59:07.000 a.log:1 level:warn no.1 log 2024-10-11 10:59:17.000 a.log:2 level:warn no.2 log
完整的多行是:
2024-10-11 10:59:07.000 a.log:1 level:warn no.1 log
首行则是:
2024-10-11 10:59:07.000 a.log:1 level:warn
首行正则示例:^\d{4}-\d{2}-\d{2}\d{3}:\d{2}:\d{2}\.\d{3}$,由于每个首行的日期是唯一的,因此可以根据日期来生成首行正则。
- 在“提取正则表达式”下方输入要提取日志的正则表达式,单击“验证”,在提取结果下方查看结果。
或者单击“正则表达式自动生成”,在新打开的页面根据日志样例提取字段,输入key值,单击“确定”即可自动生成正则表达式,设置完成后,单击“确定”。
提取结果显示的是“提取正则表达式”执行的结果,而不是“首行正则表达式”执行的结果,“首行正则表达式”执行的结果需要到目标日志流查看。
如果“首行正则表达式”手动输入的正则表达式有误,则会导致无法查看上报的日志流数据。
图22 设置正则表达式 - 日志过滤默认关闭。如果需要从海量的日志数据中筛选出符合特定条件的记录,开启日志过滤开关,参考如下操作添加白名单规则或黑名单规则,白名单规则或黑名单规则添加上限为20个。
图23 日志过滤规则
- 设置白名单规则。添加的过滤规则为命中规则,即匹配上正则表达式的日志才会被采集上报。
- 上传原始日志。
- 上传解析失败日志。
- 关于开启或关闭“上传原始日志”和“上传解析失败日志”时,日志上报参考如下。
图25 结构化解析
表5 日志上报说明 参数
日志上报说明
- 开启“上传原始日志”
- 开启“上传解析失败日志”
- 解析成功:上报解析后日志和原始日志content字段。
- 解析失败:上报原始日志content字段和_content_parse_fail_字段。
- 开启“上传原始日志”
- 关闭“上传解析失败日志”
- 解析成功:上报解析后日志和原始日志content字段。
- 解析失败:上报原始日志content字段。
- 关闭“上传原始日志”
- 开启“上传解析失败日志”
- 解析成功:上报解析后日志。
- 解析失败:上报_content_parse_fail_字段。
- 关闭“上传原始日志”
- 关闭“上传解析失败日志”
- 解析成功:上报解析后日志。
- 解析失败:仅上报内置字段和label字段。
- 自定义日志时间。
开启后可指定某一字段作为日志时间,或关闭此项使用日志被采集时间作为日志时间。
样例展示:
在结构化解析配置中选择“多行-完全正则”模式,日志上报到LTS后,原始日志样例如下所示,经结构化处理后的日志数据上报到LTS的展示效果如图26所示。
- 原始日志:
[2025-06-05_10:14:19] [ERROR] [MODULE_JI1bU] - PFs^7BLiq:E^5e$ja5=450.e1E7p4Q o^$(Xbyjhdjb#N6On$;q(x0$#IO@go [2025-06-05_10:14:19] [WARNING] [MODULE_rg02h] - vvAUN29a)ZYcz/fWm$%/v_h&!;:oY% [2025-06-05_10:14:19] [ERROR] [MODULE_Cbwrf] - P=wLJ;fNamE/u(TN!7uvF+ObDl8/2F ;X$uqRR!7^7a^mE!uI.R)9F-km1.Al UA8(!*oB9kgp@zoC<HAy<@wgN#7#SH [2025-06-05_10:14:19] [INFO] [MODULE_FmHmo] - a+OnTZbUPcv&KNl$=<orJrgvZ^^n02 [2025-06-05_10:14:19] [DEBUG] [MODULE_G027Q] - o!7pv-znpU$R=vs4Dhk;=v2Rhl7k%) O^fKR$0d-rPqQmhZd_=_4nQ_wvV+tu X<C#dm$Ud$P$KCrFWV(0nMdT<c_2/y
首行正则表达式支持自动生成或手动输入。
^\[\d{4}-\d{2}-\d{2}_\d{2}:\d{2}:\d{2}\]
输入提取正则表达式,单击“验证”,提取key-value键值对,根据日志内容修改key值方便识别。
^\[(\S*)\]\s\[(\S*)\]\s\[(\S*)\]\s-\s(.*)
- 结果展示:
组合解析
当您的日志结构太过复杂,涉及多种解析模式,单种解析模式(如Nginx模式、完整正则模式、JSON模式等)无法满足日志解析需求时,您可以使用组合解析规则解析日志,在插件配置下方输入插件语法(JSON格式)用来定义日志解析的流水线逻辑。您可添加一个或多个插件配置,ICAgent会根据处理配置顺序逐一执行。
设置操作:
- 选择组合解析。
- 从“从已有日志中选择”或“从剪切板中粘贴”选择日志样例,在插件配置下方输入配置内容。
- 您可以根据日志内容参考以下插件语法自定义设置。输入插件配置后,您可以单击“验证”,即可在提取结果下方显示解析结果。您可以通过4提供的日志示例,了解插件配置的用法。
- processor_regex
表6 正则提取 参数
类型
说明
source_key
string
原始字段名。
multi_line_regex
string
首行正则表达式。
regex
string
正则表达式()中为提取字段。
keys
string数组
为提取的内容指定字段名。
keep_source
boolean
是否保留原始字段。
keep_source_if_parse
boolean
解析错误是否保留原始字段。
- processor_split_string
表7 分隔符解析 参数
类型
说明
source_key
string
原始字段名。
split_sep
string
分隔符字符串。
keys
string数组
为提取的内容指定字段名。
keep_source
boolean
被解析后的日志中是否保留原始字段。
split_type
char/special_char/string
分隔类型,支持char-单字符、special_char-不可见字符、string-字符串。
keep_source_if_parse_error
boolean
解析错误是否保留原始字段。
- processor_split_key_value
表8 键值对分割 参数
类型
说明
source_key
string
原始字段名。
split_sep
string
键值对之间的分隔符,默认值为制表符\t。
expand_connector
string
单个键值对中键与值之间的分隔符,默认值为半角冒号(:)。
keep_source
boolean
被解析后的日志中是否保留原始字段。
- processor_add_fields
表9 添加字段 参数
类型
说明
fields
json/object
待添加的字段名和字段值。键值对格式,支持添加多个。
- processor_drop
表10 丢弃字段 参数
类型
说明
drop_keys
string数组
丢弃的字段列表。
- processor_rename
表11 重命名字段 参数
类型
说明
source_keys
string数组
待重命名的原始字段。
dest_keys
string数组
重命名后的字段。
- processor_json
表12 json展开提取 参数
类型
说明
source_key
string
原始字段名。
keep_source
boolean
被解析后的日志中是否保留原始字段。
expand_depth
int
json展开的深度。默认值为0,表示不限制。1表示当前层级,以此类推。
expand_connector
string
json展开时的连接符,默认值为英文符号点(.)
prefix
string
json展开时,对字段名附加的前缀。
keep_source_if_parse_error
boolean
解析错误是否保留原始字段。
- processor_filter_regex
表13 过滤器 参数
类型
说明
include
json/object
key为日志字段,value为匹配的正则表达式。
exclude
json/object
key为日志字段,value为匹配的正则表达式。
- processor_gotime
表14 提取时间 参数
类型
说明
source_key
string
原始字段名。
source_format
string
原始时间的格式。
source_location
int
原始时间的时区。参数值为空时,表示所在主机或容器的时区。
set_time
boolean
是否将解析后的时间设置为日志时间。
keep_source
boolean
被解析后的日志中是否保留原始字段。
- processor_base64_decoding
表15 base64解码 参数
类型
说明
source_key
string
原始字段名。
dest_key
string
解析后的目标字段。
keep_source_if_parse_error
boolean
解析错误是否保留原始字段。
keep_source
boolean
被解析后的日志中是否保留原始字段。
- processor_base64_encoding
表16 base64编码 参数
类型
说明
source_key
string
原始字段名。
dest_key
string
解析后的目标字段。
keep_source
boolean
被解析后的日志中是否保留原始字段。
- processor_regex
- 结合以下参考示例日志,提供多种插件组合使用的方法。
2025-03-19:16:49:03 [INFO] [thread1] {"ref":"https://www.test.com/","curl":"https://www.test.com/so/search?spm=1000.1111.2222.3333&q=linux%20opt%testabcd&t=&u=","sign":"1234567890","pid":"so","0508":{"sign":"112233445566 English bb Error, INFO, error bb&&bb","float":15.25,"long":15},"float":15.25,"long":15}
通过插件配置组合使用解析字段,完整插件配置参考如下,您可以直接复制以下插件配置,单击“验证”,即可查看解析结果。
[{ "detail": { "keys": ["nowtime", "level", "thread", "jsonmsg"], "keep_source": true, "regex": "(\\d{4}-\\d{2}-\\d{2}:\\d{2}:\\d{2}:\\d{2})\\s+\\[(\\w+)\\]\\s+\\[(\\w+)\\]\\s+(.*)", "source_key": "content" }, "type": "processor_regex" }, { "detail": { "expand_connector": ".", "expand_depth": 4, "keep_source": true, "source_key": "jsonmsg" }, "type": "processor_json" }, { "detail": { "keep_source": true, "keep_source_if_parse_error": true, "keys": [ "key1", "key2", "key3" ], "source_key": "0508.sign", "split_sep": ",", "split_type": "char" }, "type": "processor_split_string" }, { "detail": { "keep_source": true, "keep_source_if_parse_error": true, "keys": [ "a1", "a2", "a3" ], "regex": "^(\\w+)(?:[^ ]* ){1}(\\w+)(?:[^ ]* ){2}([^\\$]+)", "source_key": "key1" }, "type": "processor_regex" } ]
接下来分步介绍示例中用到的插件配置和解析结果。
- 将原始日志示例复制到组合解析下方的日志样例中。
2025-03-19:16:49:03 [INFO] [thread1] {"ref":"https://www.test.com/","curl":"https://www.test.com/so/search?spm=1000.1111.2222.3333&q=linux%20opt%testabcd&t=&u=","sign":"1234567890","pid":"so","0508":{"sign":"112233445566 English bb Error, INFO, error bb&&bb","float":15.25,"long":15},"float":15.25,"long":15}
图27 日志示例 - 分析原始日志示例结果如下:日志时间为2025-03-19:16:49:03,日志级别为[INFO],线程号为[thread1],日志内容如下,该日志内容是一个完整的json文本。
{"ref":"https://www.test.com/","curl":"https://www.test.com/so/search?spm=1000.1111.2222.3333&q=linux%20opt%testabcd&t=&u=","sign":"1234567890","pid":"so","0508":{"sign":"112233445566 English bb Error, INFO, error bb&&bb","float":15.25,"long":15},"float":15.25,"long":15}
- 按照日志时间、日志级别、线程号、日志内容提取日志验证,每一部分都是用空格来隔开,但是考虑json文本中也可能含有空格,就不选择分隔符插件来提取,使用正则提取插件(processor_regex)提取。
正则表达式参考如下:
日志时间提取为nowtime:(\d{4}-\d{2}-\d{2}:\d{2}:\d{2}:\d{2})
日志级别提取为level:\[(\w+)\]
线程号提取为thread:\[(\w+)\]
日志内容提取为jsonmsg:(.*)
每部分中间都是空格分割,完整的提取正则表达式:(\d{4}-\d{2}-\d{2}:\d{2}:\d{2}:\d{2})\s+\[(\w+)\]\s+\[(\w+)\]\s+(.*)
正则提取插件(processor_regex)配置如下,需要将regex参数的值替换为正则表达式,同时将正则表达式里的\替换为\\用于转义。[{ "detail": { "keys": ["nowtime", "level", "thread", "jsonmsg"], "regex": "(\\d{4}-\\d{2}-\\d{2}:\\d{2}:\\d{2}:\\d{2})\\s+\\[(\\w+)\\]\\s+\\[(\\w+)\\]\\s+(.*)", "source_key": "content" }, "type": "processor_regex" }]
- 将配置内容复制到插件配置框中,单击“验证”,在提取结果下方即可显示提取结果,key和value值提取正确。
- 接下来可以使用json插件(processor_json)将日志内容(jsonmsg)进行json展开。(每个插件配置{}中间需要加英文逗号隔开)
, { "detail": { "expand_connector": ".", "expand_depth": 4, "keep_source": true, "source_key": "jsonmsg", "source_location": 8 }, "type": "processor_json" }
将json插件(processor_json)配置追加到正则提取插件(processor_regex)配置后面,单击“验证”,在提取结果下方即可显示提取结果。
- 如果您需要将json提取得到的0508.sign字段进一步分割,可以使用分隔符解析插件(processor_split_string)中的”,”进行分隔拆分,提取key1,key2,key3字段。
,{ "detail": { "keys": [ "key1", "key2", "key3" ], "source_key": "0508.sign", "split_sep": ",", "split_type": "char" }, "type": "processor_split_string" }
将分隔符解析插件(processor_split_string)配置追加到json插件(processor_json)配置后面,单击“验证”,在提取结果下方即可显示key1,key2,key3字段。
- 您还可以将key1使用正则提取插件(processor_regex)提取出a1,a2,a3等字段。
, { "detail": { "keep_source": true, "keep_source_if_parse_error": true, "keys": [ "a1", "a2", "a3" ], "regex": "^(\\w+)(?:[^ ]* ){1}(\\w+)(?:[^ ]* ){2}([^\\$]+)", "source_key": "key1" }, "type": "processor_regex" }
将正则提取插件(processor_regex)配置追加到分隔符解析插件(processor_split_string)配置后面,单击“验证”,在提取结果下方即可显示a1,a2,a3字段。
- 将原始日志示例复制到组合解析下方的日志样例中。
自定义日志时间
开启自定义日志时间后,使用自定义日志内容的时间作为日志搜索页面日志内容的时间,请参考表17设置参数。关闭自定义日志时间后使用日志采集时间作为日志搜索页面日志内容的时间。
常见的时间标准、示例及对应的时间表达式如下表19。
参数 |
说明 |
示例 |
---|---|---|
时间字段key名称 |
已提取字段的名称。单击下拉框选择已提取的字段,该字段为string或long类型。 |
test |
字段value |
已提取的字段value,选择字段key后,将自动填充。 |
2023-07-19 12:12:00 |
时间格式 |
默认情况下,云日志服务LTS中的日志时间戳精确到秒,因此时间格式只需配置到秒,无需配置毫秒、微秒等信息。请参考表18。
|
yyyy-MM-dd HH:mm:ss |
操作 |
单击 |
- |
时间格式 |
说明 |
示例 |
---|---|---|
EEE |
星期的缩写。 |
Fri |
EEEE |
星期的全称。 |
Friday |
MMM |
月份的缩写。 |
Jan |
MMMM |
月份的全称。 |
January |
dd |
每月第几天,十进制,范围为01~31。 |
07, 31 |
HH |
小时,24小时制。 |
22 |
h |
小时,12小时制。 |
11 |
MM |
月份,十进制,范围为01~12。 |
08 |
mm |
分钟,十进制,范围为00~59。 |
59 |
a |
am或pm。 |
am、pm |
h:mm:ss a |
12小时制的时间组合。 |
11:59:59 am |
HH:mm |
小时和分钟组合。 |
23:59 |
ss |
秒数,十进制,范围为00~59。 |
59 |
yy |
年份,十进制,不带世纪,范围为00~99。 |
04、98 |
yyyy |
年份,十进制。 |
2004、1998 |
d |
每月第几天,十进制,范围为1~31。 |
7、31 |
%s |
Unix时间戳。 |
147618725 |
示例 |
时间表达式 |
时间标准 |
---|---|---|
2022-07-14T19:57:36+08:00 |
yyyy-MM-dd'T'HH:mm:ssXXX |
自定义 |
1548752136 |
%s |
自定义 |
27/Jan/2022:15:56:44 |
dd/MMM/yyyy:HH:mm:ss |
自定义 |
2022-07-24T10:06:41.000 |
yyyy-MM-dd'T'HH:mm:ss.SSS |
自定义 |
Monday, 02-Jan-06 15:04:05 MST |
EEEE, dd-MMM-yy HH:mm:ss Z |
RFC850 |
Mon, 02 Jan 2006 15:04:05 MST |
EEE, dd MMM yyyy HH:mm:ss Z |
RFC1123 |
02 Jan 06 15:04 MST |
dd MMM yy HH:mm Z |
RFC822 |
02 Jan 06 15:04 -0700 |
dd MMM yy HH:mm Z |
RFC822Z |
2023-01-02T15:04:05Z07:00 |
yyyy-MM-dd'T'HH:mm:ss Z |
RFC3339 |
2022-12-11 15:05:07 |
yyyy-MM-dd HH:mm:ss |
自定义 |
2025-02-24T05:24:07.085Z |
yyyy-MM-dd'T'HH:mm:ss.SSSZ |
自定义 |