Flume中提供了不少Decorator,用来在log发送到sink之前,做一定的预处理

以下2个是比较有用的,可以用来对日志打上tag,然后进行相应的分类

value("attr","value"{,escape=true|false}),可以在日志上加一个新的属性,相当于是打tag

split("regex",idx,"attr"),可以对日志进行split,取某个字段,然后设置到attr的tag上

设置了这些Tag后,就可以在collector上使用了,如:

#首先将日志对应的小时,设置在了hour属性上

exec config nginx_access_79_108 nginx_access "tail(\"/opt/logs/nginx/nginx_access.log\")" 'split(":",1,"hour") autoDFOChain'

#在 collector上根据hour属性,将日志记录到不同的文件中

exec config collector_150_111_nginx_access nginx_access autoCollectorSource  'roll(36600000){escapedFormatDfs("file:///opt/logs/nginx/%Y%m%d/","access_%{hour}_%{rolltag}.log","syslog")}'

因此,通过Tag这个机制,是可以实现一个Agent上多Source源的日志,在collector上输出到不同的目录,不同的文件中

这种实现方式,是不需要使用automatic flow isolation模式的