如何处理flume中的多行日志条目

djmepvbi  于 2021-06-03  发布在  Flume
关注(0)|答案(2)|浏览(677)

我刚开始玩Flume。我有一个关于如何将多行日志条目作为单个事件处理的问题。就像错误情况下的堆栈跟踪。例如,将下面的事件视为单个事件,而不是每行一个事件
2013-04-05 05:00:41280错误(clientrequestpool pooledexecutionengine id#4)[com.ms.fw.rexs.gwy.api.service.abstractautosysjob]对于位于com.ms.fw.rexs.core.impl.service.job.reviewnotificationjobservice.createreviewnotificationmessageparameters(reviewnotificationjobservice)的228794 java.lang.nullpointerexception,作业失败。java:138) ....
我已将源配置为spooldir类型。
谢谢苏曼

cvxl0en2

cvxl0en21#

如果您想扩展spool source使用的行反序列化程序,一种简单(但可能有缺陷)的方法是在新行上划界,但将前缀为前一行的一组空格的行组合起来。
事实上,这个问题已经有了一个jira补丁:
https://issues.apache.org/jira/browse/flume-2779

yptwkmov

yptwkmov2#

如文档所述,spooldir source为输入数据中由换行符分隔的每个字符串创建一个新事件。您可以通过创建自己的接收器来修改此行为(请参见http://flume.apache.org/flumedeveloperguide.html#sink)基于spooldir源代码。您需要实现解析算法,该算法能够根据某些条件检测消息的开始行和结束行。
此外,还有其他一些源,如syslog udp和avro,它们将整个接收到的消息视为单个事件,因此您可以使用它而无需任何修改。

相关问题