Flume官方文档阅读03

在配置文件中使用环境变量

Flume能够替换配置文件中的环境变量。例如:

a1.sources = r1
a1.sources.r1.type = netcat
a1.sources.r1.bind = 0.0.0.0
a1.sources.r1.port = ${NC_PORT}
a1.sources.r1.channels = c1

注意:目前仅适用于值,不适用于健。(仅在配置行=号的右侧)
这可以通过设置java系统属性propertiesImplementation = org.apache.flume.node.EnvVarResolverProperties来启用这个功能。

例如:

$ NC_PORT=44444 bin/flume-ng agent –conf conf –conf-file example.conf –name a1 -Dflume.root.logger=INFO,console -DpropertiesImplementation=org.apache.flume.node.EnvVarResolverProperties

上面只是一个例子,环境变量可以通过其他方式配置,包括配置在conf/flume-env.sh中。

记录原始数据

在许多生产环境中,记录流过管道的原始数据流是不被希望的行为,因为这可能会造成敏感数据的泄露或安全相关配置的泄漏(例如密钥),泄漏到Flume的日志文件中。通常,Flume不会记录这些信息。另一方面,如果数据管道被破坏,Flume将会尝试提供调试问题的线索。

调试事件管道的问题的一种方法是设置一个额外的内存channel连接到日志sink,这将会输出所有的日志数据到Flume日志。然而,在某些情况下,这是不够的。

为了能够记录事件和配置相关的数据,一些java系统属性必须添加在log4j的属性文件中。
为了启动配置相关的日志记录,设置java系统属性-Dorg.apache.flume.log.printconfig=true,可以通过在命令行或者在flume-env.sh文件的JAVA_OPTS变量中设置。
为了启动数据记录,通过上面描述的方法设置java系统属性-Dorg.apache.flume.log.rawdata=true。对于大多数的组件,还必须把log4j的日志记录级别设置为DEBUG或TRACE来使特定事件的日志出现在Flume日志中。
这有一个例子启动了所有配置记录和原始数据记录,同时还设置了log4j的日志记录级别为DEBUG用于控制台输出:

$ bin/flume-ng agent --conf conf --conf-file example.conf --name a1 -Dflume.root.logger=DEBUG,console -Dorg.apache.flume.log.printconfig=true -Dorg.apache.flume.log.rawdata=true

Zookeeper的基础配置

Flume通过Zookeeper支持代理配置。这是一个实验性的功能。配置文件需要在可配置前缀下的zookeeper中上传。配置文件存储在zookeeper节点数据中。下面是代理a1和a2在zookeeper节点树中的表现:

- /flume
 |- /a1 [Agent config file]
 |- /a2 [Agent config file]

配置文件上传后,可以通过如下选项启动代理:

$ bin/flume-ng agent –conf conf -z zkhost:2181,zkhost1:2181 -p /flume –name a1 -Dflume.root.logger=INFO,console
z	–	Zookeeper connection string. Comma separated list of hostname:port
p	/flume	Base Path in Zookeeper to store Agent configurations

安装第三方插件

Flume有完成基于插件的架构。虽然Flume携带了许多开箱即用的sources、channels、sinks、serializers,但是许多的实现都Flume分开运行。
虽然通过将jars添加到flume-env.sh的FLUME_CLASSPATH变量中,可以始终包含自定义Flume组件,但Flume现在支持一个名为plugins.d的特殊目录,该目录会自动获取以特定格式打包的插件。这样可以更轻松地管理插件打包问题,以及更简单的调试和几类问题的故障排除,尤其是库依赖性冲突。

plugins.d目录

plugins.d目录位于$FLUME_HOME/plugins.d中。在启动时,flume-ng脚本从plugins.d目录中查找符合下列格式的插件,在启动java时将它们包含着正确的路径中。

插件的目录布局

plugins.d中的每个插件(子目录)最多可以有三个子目录:

  1. lib - 插件的jars
  2. libext - 插件的依赖jars
  3. native - 任何必需的本机库,例如.so文件

plugins.d目录中的两个插件示例:

plugins.d/
plugins.d/custom-source-1/
plugins.d/custom-source-1/lib/my-source.jar
plugins.d/custom-source-1/libext/spring-core-2.5.6.jar
plugins.d/custom-source-2/
plugins.d/custom-source-2/lib/custom.jar
plugins.d/custom-source-2/native/gettext.so

数据摄取

Flume支持许多从外部源获取数据的机制。

RPC

Flume发行版中包含的Avro客户端可以使用avro RPC机制将给定文件发送到Flume Avro source:

$ bin / flume-ng avro-client -H localhost -p 41414 -F /usr/logs/log.10

上面的命令会将/usr/logs/log.10的内容发送到监听该端口的Flume source。

执行命令

exec source执行给定的命令并消耗输出。输出的单个“线”,即文本后跟回车符(’\ r’)或换行符(’\ n’)或两者一起。

网络流

Flume支持以下机制从常用日志流类型中读取数据,例如:

  1. Avro
  2. Thrift
  3. Syslog
  4. Netcat
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值