flume内置了很多拦截器,并且会定期的添加一些拦截器,在这里列出一些flume内置的,经常使用的拦截器。
时间戳拦截器
flume中一个最经常使用的拦截器 ,该拦截器的作用是将时间戳插入到flume的事件报头中。如果不使用任何拦截器,flume接受到的只有message。时间戳拦截器的配置。
| 参数 | 默认值 | 描述 |
| type | 类型名称timestamp,也可以使用类名的全路径 | |
| preserveExisting | false | 如果设置为true,若事件中报头已经存在,不会替换时间戳报头的值 |
source连接到时间戳拦截器的配置:
a1.sources.r1.interceptors = timestamp a1.sources.r1.interceptors.timestamp.type=timestamp a1.sources.r1.interceptors.timestamp.preserveExisting=false
2. 主机拦截器
主机拦截器插入服务器的ip地址或者主机名,agent将这些内容插入到事件的报头中。时间报头中的key使用hostHeader配置,默认是host。主机拦截器的配置
| 参数 | 默认值 | 描述 |
| type | 类型名称host | |
| hostHeader | host | 事件投的key |
| useIP | true | 如果设置为false,host键插入主机名 |
| preserveExisting | false | 如果设置为true,若事件中报头已经存在,不会替换host报头的值 |
source连接到主机拦截器的配置:
a1.sources.r1.interceptors = host a1.sources.r1.interceptors.host.type=host a1.sources.r1.interceptors.host.useIP=false a1.sources.r1.interceptors.timestamp.preserveExisting=true
3. 静态拦截器
静态拦截器的作用是将k/v插入到事件的报头中。配置如下
| 参数 | 默认值 | 描述 |
| type |
类型名称static | |
| key | key | 事件头的key |
| value | value | key对应的value值 |
| preserveExisting | true | 如果设置为true,若事件中报头已经存在该key,不会替换value的值 |
source连接到静态拦截器的配置:
a1.sources.r1.interceptors = static a1.sources.r1.interceptors.static.type=static a1.sources.r1.interceptors.static.key=logs a1.sources.r1.interceptors.static.value=logFlume a1.sources.r1.interceptors.static.preserveExisting=false
4. 正则过滤拦截器
在日志采集的时候,可能有一些数据是我们不需要的,这样添加过滤拦截器,可以过滤掉不需要的日志,也可以根据需要收集满足正则条件的日志。
| 参数 | 默认值 | 描述 |
| type |
类型名称REGEX_FILTER | |
| regex | .* | 匹配除“\n”之外的任何个字符 |
| excludeEvents | false |
默认收集匹配到的事件。如果为true,则会删除匹配到的event,收集未匹配到的。 |
source连接到正则过滤拦截器的配置:
a1.sources.r1.interceptors = regex a1.sources.r1.interceptors.regex.type=REGEX_FILTER a1.sources.r1.interceptors.regex.regex=(rm)|(kill) a1.sources.r1.interceptors.regex.excludeEvents=false
这样配置的拦截器就只会接收日志消息中带有rm 或者kill的日志。
原文:http://my.oschina.net/u/2311010/blog/531241