flume日志收集系统搭建

原创文章,转载请注明: 转载自始终不够

本文链接地址: flume日志收集系统搭建

转载请注明:始终不够 » flume日志收集系统搭建

flume原理简介

flume是Apache的一款开源日志收集软件。在flume中,主要有三个重要的角色:source、channel和sink。source负责收集日志,日志可以是来自任何地方,例如socket,本地文件等等。sink负责将收集来的日志处理掉,处理的方法同样可以是多种多样的,例如写入HDFS,或者在本地文件系统中进行持久化。二channel则是负责source和sink之间的通信的,通信方式最常用的主要有内存管道和文件管道。这样设计的一个好处就是能够让每个角色做到单一职责,source只负责收集,sink只负责处理,而channel只负责通信。

flume提供了多种多样的sink、channel和sink,你可以通过简单的修改配置文件的方式,实现不同sink、channel和sink的组合。甚至你可以在一个节点设置多个channel和sink,将一个日志源发送给多个处理节点。

flume负载均衡原理

flume的负载均衡设计非常简单,简单到你只需要修改几行配置即可实现。这得益于flume软件架构的简单设计。这里我们看一张从官网扒的图:

flume负载均衡架构图

这里我们看到在webserver的前端,有一个consolidation,我们可以称之为controller,它也是一个flume节点,与其他webserver节点不同的是,他的source是webserver,他的sink是HDFSH或其他sink。webserver的sink与controller的source使用arvo rfc进行通信。

但是这样依然解决不了负载均衡的问题,到目前为止,我们只有一台controller。

别急,还记得上面说flume支持使用多个channel和sink,这里我们可以在webserver上部署多个sink,flume支持使用轮询、随机调度的方式使用sink,这样我们通过差异化sink的配置,就能够实现日志上传到不同的机器。当controller发生宕机时,webserver上的flume会自动尝试其他sink继续上传。

flume安装

操作系统:centos6.4

首先需要安装jdk1.6以上版本,我装的是1.8最新版,运行没发现什么问题。然后在官网下载flume,安装官网的安装方法进行安装即可,同时官网提供了一套测试安装是否成功的方法。

flume测试

由于我只有一台机器,所以是启用了不同的端口进行的。配置文件列举如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# 负载机flume client配置
 
# 组件名称配置
client.sources = source_client
client.sinks = sink_client sink_client_bak
client.channels = channel_client
 
# 日志源组件配置(获取44444端口数据)
#client.sources.source_client.type = netcat
#client.sources.source_client.bind = 127.0.0.1
#client.sources.source_client.port = 44444
 
# 日志源组件配置(监听目录下新增文件)
client.sources.source_client. type = spooldir
client.sources.source_client.channels = channel_client
client.sources.source_client.spoolDir =  /www/statistics .huyanping.cn /logs/blog_log/queue/20150312
client.sources.source_client.fileHeader =  true
client.sources.source_client.fileHeaderKey =  true
client.sources.source_client.basenameHeader =  true
client.sources.source_client.basenameHeaderKey =  true
 
# sink组件组配置(用于负载均衡配置)
client.sinkgroups = sink_group
client.sinkgroups.sink_group.sinks = sink_client sink_client_bak
client.sinkgroups.sink_group.processor. type = load_balance
client.sinkgroups.sink_group.processor.backoff =  true
client.sinkgroups.sink_group.processor.selector = random
 
# sink组件配置(用于将日志信息持久化或发送给其他服务,注意两个sink访问的hosts或port是不同的)
client.sinks.sink_client. type = avro
client.sinks.sink_client.channel = channel_client
client.sinks.sink_client. hostname = 127.0.0.1
client.sinks.sink_client.port = 4141
 
# sink组件配置(用于负载均衡配置)
client.sinks.sink_client_bak. type = avro
client.sinks.sink_client_bak.channel = channel_client
client.sinks.sink_client_bak. hostname = 127.0.0.1
client.sinks.sink_client_bak.port = 4142
 
# 内存管道设置
#client.channels.channel_client.type = memory
#client.channels.channel_client.capacity = 1000
#client.channels.channel_client.transactionCapacity = 100
 
# 文件管道设置
client.channels.channel_client. type file
client.channels.channel_client.checkpointDir =  /data/tmp/checkpoint
client.channels.channel_client.dataDirs =  /data/tmp

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 日志收集中心flume controller 配置
 
# 组件名称配置
master.sources = source_master
master.sinks = sink_master filesystem_sink
master.channels = channel_master filesystem_channel
 
# 日志源组件配置(两个channel,分别用于本地持久化和其他用途,例如写入HDFS,或者logger调试)
master.sources.source_master. type = avro
master.sources.source_master.channels = channel_master filesystem_channel
master.sources.source_master.bind = 127.0.0.1
master.sources.source_master.port = 4141
 
# sink组件配置
master.sinks.sink_master. type = logger
master.sinks.sink_master.channel = channel_master
 
# 内存管道配置
#master.channels.channel_master.type = memory
#master.channels.channel_master.capacity = 1000
#master.channels.channel_master.transactionCapacity = 100
 
# 文件管道配置(其他用途)
master.channels.channel_master. type file
master.channels.channel_master.checkpointDir =  /data/master/tmp/checkpoint
master.channels.channel_master.dataDirs =  /data/master/tmp
 
# 文件管道配置(本地文件系统持久化)
master.channels.filesystem_channel. type file
master.channels.filesystem_channel.checkpointDir =  /data/filesystem/tmp/checkpoint
master.channels.filesystem_channel.dataDirs =  /data/filesystem/tmp
 
# 本地文件系统sink组件配置
master.sinks.filesystem_sink. type = file_roll
master.sinks.filesystem_sink.channel = filesystem_channel
master.sinks.filesystem_sink.serializer = TEXT
master.sinks.filesystem_sink.sink.directory =  /data/master/back_log

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 日志收集中心flume controller back配置
 
# 组件名称配置
master.sources = source_master
master.sinks = sink_master
master.channels = channel_master
 
# 日志源组件配置
master.sources.source_master. type = avro
master.sources.source_master.channels = channel_master
master.sources.source_master.bind = 127.0.0.1
master.sources.source_master.port = 4142
 
# sink组件配置
master.sinks.sink_master. type = logger
master.sinks.sink_master.channel = channel_master
 
# 内存管道配置
#master.channels.channel_master.type = memory
#master.channels.channel_master.capacity = 1000
#master.channels.channel_master.transactionCapacity = 100
 
# 文件管道配置
master.channels.channel_master. type file
master.channels.channel_master.checkpointDir =  /data/master_bak/tmp/checkpoint
master.channels.channel_master.dataDirs =  /data/master_bak/tmp

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值