申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址
全文共计2077字,阅读大概需要3分钟
一、 任务描述
本实验任务主要完成基于ubuntu环境使用flume通过syslog协议读取日志信息。通过完成本实验任务,要求学生了解并掌握flume通过syslog协议去读日志信息的语法和使用的命令,为从事大数据平台运维工程师、大数据技术支持工程师等岗位工作奠定夯实的技能基础。
二、 任务目标
熟悉Flume基本组件Source,Sink,Channel
理解Syslog Source,Syslog UDP Source和Multiport Syslog Source
三、 任务环境
本次环境是:Ubuntu16.04+flume-ng-1.5.0-cdh5.3.6
四、 任务分析
Syslog是很多应用写日志消息的众所周知的形式,集成了syslog的Flume可以接收TCP和UDP消息。Flume提供了两种syslog Source:Syslog UDP Source和Multiport Syslog Source.这两种Source都能解析syslog消息,抽取几个字段到Flume事件的header,可以用HDF Sink分桶。如果syslog消息不符合Syslog RFCs,事件将包含一个带有值为Invalid flume.syslog.status的header. Syslog UDP Source认为整个UDP数据报文是一个Syslog事件,并将其转换一个Flume事件。本实验采用Syslog Source+Memory Channel+Logger Sink方式
♥ 知识链接
zooKeeper于Flume的作用
Flume采用了多Master的方式。为了保证配置数据的一致性,Flume引入了ZooKeeper,用于保存配置数据,ZooKeeper本身可保证配置数据的一致性和高可用,另外,在配置数据发生变化时,ZooKeeper可以通知Flume Master节点。Flume Master间使用gossip协议同步数据。
五、 任务实施
步骤1、操作步骤
创建agent文件
在目录/simple/flume/conf下,创建文件
touch syslog_tcp.conf,并编辑内容如下:
1. # 配置agent 2. a1.sources = syslog 3. a1.sinks = k1 4. a1.channels = c1 5. 6. # Describe/configure the source 7. a1.sources.syslog.type = syslogtcp 8. a1.sources.syslog.port = 5140 9. a1.sources.syslog.host = localhost 10. a1.sources.syslog.channels = c1 11. 12. # Describe the sink 13. a1.sinks.k1.type = logger 14. 15. # Use a channel which buffers events in memory 16. a1.channels.c1.type = memory 17. a1.channels.c1.capacity = 1000 18. a1.channels.c1.transactionCapacity = 100 19. 20. # Bind the source and sink to the channel 21. a1.sources.r1.channels = c1 22. a1.sinks.k1.channel = c1
根据配置好syslog_tcp.conf的配置信息,启动flume agent,进入目录:cd /simple/flume
执行如下启动脚本:./bin/flume-ng agent -c . -f conf/syslog_tcp.conf -n a1 -Dflume.root.logger=INFO,console。如图1所示
图1 启动flume
一些配置的说明:
name | Value |
-f | 指定flume服务端启动监听的agent配置文件, |
-n | 指定启动的flume agent别名, |
-D | flume.root.logger=DEBUG,console 表示数据在控制台打印出, |
启动flume agent后,可以看到如下信息:
syslog tcp source starting,此时会不停扫描syslog_tcp.conf,
启动成功信息,如图2所示:
图2 扫描syslog_tcp.conf启动信息
再启动一个终端。
测试产生syslog;
在新启动的命令终端任意目录下,执行:echo “hello flume: syslog tcp” | nc localhost 5140
数据向终端发送成功的信息,红框表示终端收到的数据(如果syslog消息不符合Syslog RFCs,RFC-3146或RFC-5424,事件中将包含一个带有值为Invalid flume.syslog.status的header)。如图3所示:
图3 查看数据