我是靠谱客的博主 雪白芝麻,最近开发中收集的这篇文章主要介绍Flume 第三方插件使用说明,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

FLUME第三方jar的使用,解析事件里的时间,监控目录下的文件,连接elasticsearch 2.2。分别为一个拦截器、一个source和一个sink。

1.1     flume_EventTimeSamp.jar

用途:因为FLUME本身对时间戳的解析比较弱,该jar用于将事件中的时间提取解析成时间戳格式。

用法:配合flume自带的的正则解析器共同使用,通过正则匹配出来的时间字段转换成时间戳。

配置参数:

名称

配置

说明

type

org.apache.flume.interceptor.EventTimestampInterceptor$Builder

默认使用的类

preserveExisting

false

是否已有时间戳

dateFormatField

time

默认字段为time

dateFormat

MMM dd HH:mm:ss

指定时间格式

 

agent.sources.tail.interceptors=i1 i2

agent.sources.tail.interceptors.i1.type=regex_extractor

agent.sources.tail.interceptors.i1.regex = (\w+\s+\w+\s+\d+\:\d+\:\d+)\s+

agent.sources.tail.interceptors.i1.serializers = s1

agent.sources.tail.interceptors.i1.serializers.s1.name= time

agent.sources.tail.interceptors.i2.type =org.apache.flume.interceptor.EventTimestampInterceptor$Builder

agent.sources.tail.interceptors.i2.preserveExisting =false

agent.sources.tail.interceptors.i2.dateFormatField =time

agent.sources.tail.interceptors.i2.dateFormat = MMM ddHH:mm:ss

 

1.2     DirectoryMonitorSource.jar

用途:作用如spooldir,

spooldir的缺点为:

1、 此source在部署是,是一种侵入式,必须对已有应用的日志切分(rotate strategy)进行修改,比如修改为每5分钟切换一次;

2、 需要一个外部进程(或者命令),将应用切分后,完整的一个日志片段mvspooldir下(应用不能直接向spooldir中写数据,否则导致程序死掉);

3、 传输做不到实时,因为我们不可能让应用每五秒、十秒就进行日志切换;

4、 不支持断点续传,比如agent挂掉后,如果某个文件已经传输一半,则可能出现重复传输已经传输过的数据(同时意味着后续对其运维的起停过程难以实现);

配置参数:

名称

配置

说明

type

com.fusionskye.simpleExcelSource.DirectoryMonitorSource

必须写成FQCN这种形式;

monitor_dir

监控目录

注:不支持目录嵌套递归监控,会自动跳过目录下的子目录;

meta_store_dir

meta存储目录

支持断点续传,需要记录meta信息;轻量级信息,每个文件大约100个字节的meta信息;

file_name_include_pattern

目录下文件名的白名单正则表达式;默认为“.*”,表示所有文件(隐藏文件除外),均包含;

比如:app.log.*

file_name_exclude_pattern

目录下文件名的黑名单正则表达式;

默认:“^[.].*” 以’.’开头的文件加入黑名单

 

first_line_pattern

一个record的第一行的正则表达式

默认:无

注:这两个参数,必须至少设定一个,否则没有办法去区分record的边界;

如果两个参数均不制定,责默认文

件每一行数据为一个record

last_line_pattern

一个record的最后一行的正则表达式

默认:无

file_content_include_pattern

一个record(可能是多行数据)的白名单正则表达式

默认:”[\s\S]*”

注:由于我们日志文件中存在t,n等字符,通常的正则表达式”.*”是不能匹配这些字符的,因此白名单中,如果是所有内容都接受,必须写成如下的正则表达式: “[\s\S]*”

正则表达式的具体语法请google

之。

file_content_exclude_pattern

一个record(可能是多行数

据)的黑名单正则表达式

默认:无

file_check_interval_sec

多长时间对目录下 默认:5秒

 

file_send_interval_sec

多长时间发送一次数据 默认:3秒

 

 

#配置source的详情

agent.sources.excel.type= com.fusionskye.simpleExcelSource.DirectoryMonitorSource

agent.sources.excel.monitor_dir= /root/zhongxin/data

agent.sources.excel.batchSize= 10

agent.sources.excel.interceptors=i1

agent.sources.excel.interceptors.i1.type =org.apache.flume.interceptor.EventTimestampInterceptor$Builderagent.sources.tail.interceptors

 

1.3     elasticsearch-sink2-1.0.jar elasticsearch-sink2-assembly-1.0.jar

用途:用于flume 1.6连接elasticsearch 2.2版本的sink。

用法:将elasticsearch-sink2-1.0.jar和elasticsearch-sink2-assembly-1.0.jar导入服务器中。

[root@laiym ~]# cd /usr/local/flume/lib/

[root@laiym lib]# rm -rf guava-*.jarjackson-core-*.jar

[root@laiym lib]# mv /root/elasticsearch-sink2* .

备注:因为删除了jackson-core-*包,对原有的spooldir导入方式会出现错误,推荐使用 1.2 DirectoryMonitorSource.jar第三方插件监控目录。

#配置sink的详情

agent.sinks.elasticsearch.type=com.frontier45.flume.sink.elasticsearch2.ElasticSearchSink

agent.sinks.elasticsearch.batchSize=100

agent.sinks.elasticsearch.hostNames=192.168.1.159:9300

agent.sinks.elasticsearch.indexName=linux_secure

agent.sinks.elasticsearch.indexType=message

agent.sinks.elasticsearch.clusterName=es

agent.sinks.elasticsearch.serializer=com.frontier45.flume.sink.elasticsearch2.ElasticSearchDynamicSerializer

agent.sinks.elasticsearch.indexNameBuilder=com.frontier45.flume.sink.elasticsearch2.TimeBasedIndexNameBuilder

 

最后

以上就是雪白芝麻为你收集整理的Flume 第三方插件使用说明的全部内容,希望文章能够帮你解决Flume 第三方插件使用说明所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部