我们还是举例子:
一:多一个数据源
首先在dome/flume下新建一个叫app2的目录,
然后再app2目录下新建一个叫app2.cf内容如下:
app1.cf
agent1.sources=src1 src2
agent1.sinks=sin1
agent1.channels=chn1
#src1
agent1.sources.src1.type=netcat
agent1.sources.src1.bind=192.168.208.128
agent1.sources.src1.port=6666
agent1.sources.src1.channels=chn1
#src2
agent1.sources.src2.type=syslogtcp
agent1.sources.src2.host=192.168.208.128
agent1.sources.src2.port=5140
agent1.sources.src2.channels=chn1
#channel
agent1.channels.chn1.type=memory
#
agent1.sinks.sin1.type=logger
agent1.sinks.sin1.channel=chn1
后面的一个东西是我们把修改了,改成最简单的了
r.sh
flume-ng agent --conf-file app1.cf --name agent3 -Dflume.root.logger=INFO,console
我们把服务启动起来
然后测试netcat
键入:telnet 0 6666
接着键入
telnet 192.168.208.128 6666
然后测试syslogtcp
键入:
logger “neirong”
即可
二:一个数据源对应多个channel,多个sink
1:怎么让一个数据源对应多个channel
A:数据源就一个,复制这个数据源给其它的channel
a1.sources = r1
a1.channels = c1 c2 c3
a1.source.r1.selector.type = replicating(这个是默认的)
a1.source.r1.channels = c1 c2 c3
a1.source.r1.selector.optional = c3
B:根据header把不同的分布到不同的channel上(针对channel的)
a1.sources = r1
a1.channels = c1 c2 c3 c4
a1.sources.r1.selector.type = multiplexing
a1.sources.r1.selector.header = state(头部这个字段)
a1.sources.r1.selector.mapping.CZ = c1(头部state对应的值含有CZ)
a1.sources.r1.selector.mapping.US = c2 c3
a1.sources.r1.selector.default = c4(其余的)
C:需要自己编程定制。
三个:多个数据源,多个channel,多个sink,我们可以灵活的配置。
我们还有sinkgroup,这个是用来负载均衡用的,但是没怎么常用。
a1.sinkgroups = g1
a1.sinkgroups.g1.sinks = k1 k2
a1.sinkgroups.g1.processor.type = load_balance
任意的到一个sink上。
下面这个是具有优先级的:
a1.sinkgroups = g1
a1.sinkgroups.g1.sinks = k1 k2
a1.sinkgroups.g1.processor.type = failover
a1.sinkgroups.g1.processor.priority.k1 = 5
a1.sinkgroups.g1.processor.priority.k2 = 10
a1.sinkgroups.g1.processor.maxpenalty = 10000
先到优先级高的,然后等优先级高的出问题后,才到优先级低的。