如何在Flume的每个事件的前面添加时间戳?说我有这个日志,但我也想添加时间戳 127.0.0.1 - frank [10 / Oct / 2000:13:55:36 -0700]“GET /apache_pb.gif HTTP / 1.0”……
我通过使用Morphline解决了这个问题,在下面添加了这些函数,其中时间戳被添加到每个水槽事件的开头。 { addCurrentTime { field : timestamp } }, { setValues { _result = "@{timestamp}|@{message}" } },
{ addCurrentTime { field : timestamp } }, { setValues { _result = "@{timestamp}|@{message}" } },
假设您的意思是在事件正文字节的开头添加一个时间戳,那么就没有预先设定的拦截器来执行您所要求的操作(搜索和替换拦截器不能替换为动态值,例如日期)。
但是,编写一个拦截器为每个事件主体添加当前时间戳前缀应该是微不足道的。
检查现有拦截器的源代码作为示例,编译代码并将jar部署到名为的新文件夹中 $FLUME_HOME/plugins.d/my-plugins/lib/my-plugin.jar
$FLUME_HOME/plugins.d/my-plugins/lib/my-plugin.jar
这是标准水槽拦截器的当前来源的链接:
但基本上你只需要创建一个实现的类 Interceptor 界面,并创建一个 Interceptor.Builder 实施也。
Interceptor
Interceptor.Builder
您可以使用Flume拦截器: https://flume.apache.org/FlumeUserGuide.html#flume-interceptors 修改事件。
您可以编写自己的类来实现您正在寻找的功能,也可以使用Morphline拦截器。
如果不要求更改正文,则可以使用timestamp拦截器将时间戳添加到标题中。