这是我从linux rsyslog发送到flume的示例日志条目:
Nov 30 09:16:12 server1 achaos: Sep 1 07:45:53 cent65-template testLog[13942]: [DEBUG] [UUID= MAX= MIN=] ENTERED findByMin for 999
这是flume发送到kafka或写入磁盘的内容:
achaos: Sep 1 07:45:53 cent65-template testLog[13942]: [DEBUG] [UUID= MAX= MIN=] ENTERED findByMin for 999
如您所见,事件开始时的日期和主机名都消失了。无论系统日志源是什么,都会发生这种情况。
这是我的Flume配置。非常简单:
a1.sources = source1
a1.channels = channel1
a1.sinks = sink1
a1.sources.source1.type = syslogudp
a1.sources.source1.port = 514
a1.sources.source1.host = 10.10.2.18
a1.sources.source1.channels = channel1
a1.sinks.sink1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.sink1.topic = firewall
a1.sinks.sink1.brokerList = 10.10.2.1:6667,10.10.2.2:6667
a1.sinks.sink1.channel = channel1
a1.channels.channel1.type = memory
a1.channels.channel1.capacity = 10000000
a1.channels.channel1.transactionCapacity = 1000
从大量的谷歌搜索来看,这个问题似乎与flume头有关。我不明白这种行为怎么可能对我有帮助。我还没有找到任何样本配置,似乎做什么我想要的。
我需要做什么样的改变才能让flume的厚脑袋变得有意义?
仅供参考:数据来自flume1->kafka->flume2->hdfs
谢谢!
1条答案
按热度按时间kkih6yb81#
您可以使用主机拦截器将主机名添加到flume事件中,然后在写入hdfs时通过执行morphline魔术(将主机字符串重新添加到每一行)或路径替换来使用额外的头(
%{headername}
字符串将在hdfs路径中插入)