本文介绍通过 LogCollector 多行全文模式采集多行日志时的聚合规则和相关示例。
LogCollector 多行全文模式的聚合规则如下:
首行正则表达式
xxx.*
用户侧原始日志
xxx1 yyy11 yyy12 xxx2 yyy21 yyy22
最终发送的日志
xxx1\nyyy11\nyyy12 xxx2\nyyy21\nyyy22
日志聚合步骤如下:
xxx1
,因其完全匹配首行正则表达式 xxx.*
,所以 LogCollector 将新建一个多行日志块,并将 xxx1
作为该日志块的开头。yyy11
,因其不完全匹配首行正则表达式 xxx.*
,所以 LogCollector 将日志 yyy11
追加至当前多行日志块的末尾。yyy12
,因其不完全匹配首行正则表达式 xxx.*
,所以 LogCollector 将日志 yyy12
追加至当前多行日志块的末尾。xxx2
,因其完全匹配首行正则表达式 xxx.*
,所以 LogCollector 将发送当前的多行日志块 xxx1\nyyy11\nyyy12
,然后创建一个新的多行日志块,并将 xxx2
作为新多行日志块的开头。yyy21
,因其不完全匹配首行正则表达式 xxx.*
,所以 LogCollector 将日志 yyy21
追加至当前多行日志块的末尾。yyy22
,因其不完全匹配首行正则表达式 xxx.*
,所以 LogCollector 将日志 yyy22
追加至当前多行日志块的末尾。xxx2\nyyy21\nyyy22
。首行正则表达式
xxx.*
用户侧原始日志
yyy11 yyy12 yyy13 xxx2 yyy21 yyy22
最终发送的日志
yyy11 yyy12 yyy13 xxx2\nyyy21\nyyy22
多行日志聚合规则如下:
yyy11
,因其不完全匹配首行正则表达式 xxx.*
,并且当前不存在多行日志块,所以 LogCollector 将直接发送日志 yyy11
。yyy12
,因其不完全匹配首行正则表达式 xxx.*
,并且当前不存在多行日志块,所以 LogCollector 将直接发送日志 yyy12
。yyy13
,因其不完全匹配首行正则表达式 xxx.*
,并且当前不存在多行日志块,所以 LogCollector 将直接发送日志 yyy13
。xxx2
,因其完全匹配首行正则表达式 xxx.*
,所以 LogCollector 将新建一个多行日志块,并将日志 xxx2
作为新的多行日志块的开头。yyy21
,因其不完全匹配首行正则表达式 xxx.*
,所以 LogCollector 将日志 yyy21
追加至当前多行日志块的末尾。yyy22
,因其不完全匹配首行正则表达式 xxx.*
,所以 LogCollector 将日志 yyy22
追加至当前多行日志块的末尾。xxx2\nyyy21\nyyy22
。首行正则表达式
xxx.*
用户侧原始日志
xxx1 yyy11 …… // 此处省略 N 行日志。 yyy12 // 其中,1 是多行日志的第 512KB 个字节,即采集时 1 后面的字符将被截断。 yyy13 yyy14
最终发送的日志
xxx1\nyyy11\n……\nyyy1 2 yyy13 yyy14
多行日志聚合规则如下:
xxx1
,因其完全匹配首行正则表达式 xxx.*
,所以 LogCollector 将新建一个多行日志块,并将 xxx1
作为新多行日志块的开头。yyy11
,因其不完全匹配首行正则表达式 xxx.*
,所以 LogCollector 将日志 yyy11
追加至当前多行日志块的末尾。yyy12
,因其不完全匹配首行正则表达式 xxx.*
,所以 LogCollector 将日志 yyy12
追加至当前多行日志块的末尾。此时多行日志块的大小超过 512KB,所以从 yyy12
的 1
处开始截断,先发送日志块 xxx1\nyyy11\n……\nyyy1
,再发送日志块 2
。yyy13
,因其不完全匹配首行正则表达式 xxx.*
,并且当前不存在多行日志块,所以 LogCollector 将直接发送日志 yyy13
。yyy14
,因其不完全匹配首行正则表达式 xxx.*
,并且当前不存在多行日志块,所以 LogCollector 将直接发送日志 yyy14
。首行正则表达式
xxx.*
用户侧原始日志
xxx1 yyy11 // 5s之后 yyy12 yyy13
最终发送的日志
xxx1\nyyy11 yyy12 yyy13
多行日志聚合规则如下:
xxx1
,因其完全匹配首行正则表达式 xxx.*
,所以 LogCollector 将新建一个多行日志块,并将 xxx1
作为新多行日志块的开头。yyy11
,因其不完全匹配首行正则表达式 xxx.*
,所以 LogCollector 将日志yyy11
追加至当前多行日志块的末尾。xxx1\nyyy11
。yyy12
,因其不完全匹配首行正则表达式 xxx.*
,并且当前不存在多行日志块,所以 LogCollector 将直接发送日志 yyy12
。yyy12
,因其不完全匹配首行正则表达式 xxx.*
,并且当前不存在多行日志块,所以 LogCollector 将直接发送日志 yyy13
。