Flume各种采集日志方式与输出目录

1、从网络端口采集数据输出到控制台

下载与安装见:https://blog.csdn.net/weixin_35353187/article/details/83038297

一个简单的socket 到 console配置    

# 定义这个agent中各组件的名字
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# 描述和配置source组件:r1
a1.sources.r1.type = netcat
a1.sources.r1.bind = bigdata01
a1.sources.r1.port = 44444

# 描述和配置sink组件:k1
a1.sinks.k1.type = logger

# 描述和配置channel组件,此处使用是内存缓存的方式
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

# 描述和配置source  channel   sink之间的连接关系
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

启动flume:
bin/flume-ng agent -c conf -f myconf/socket-console.conf -n a1 -Dflume.root.logger=INFO,console

监听44444端口:

telnet anget-hostname  port   (telnet localhost 44444)

监听结果:

2、从网络端采集数据输出到文件

# 定义这个agent中各组件的名字
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# 描述和配置source组件:r1
a1.sources.r1.type = netcat
a1.sources.r1.bind = hadoop01
a1.sources.r1.port = 44444

# 描述和配置sink组件:k1
a1.sinks.k1.type = file_roll
a1.sinks.k1.sink.directory = /usr/local/apache-flume-1.7.0-bin/flumelog

# 描述和配置channel组件,此处使用是内存缓存的方式
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

# 描述和配置source  channel   sink之间的连接关系
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

注:a1.sinks.k1.sink.directory = /usr/local/apache-flume-1.7.0-bin/flumelog中文件目录必须是存在的,不存在会报错

启动Flume:

bin/flume-ng agent -c conf -f myconf/netcat-disk.conf -n a1 -Dflume.root.logger=INFO,console

给监听的端口发送数据:

telnet hadoop01 44444

会发现此时控制台并没有输出信息,而且存入了文件中

3、从本地目录写入到HDFS

# 定义这个agent中各组件的名字
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# 描述和配置source组件:r1
a1.sources.r1.type = spooldir
a1.sources.r1.spoolDir = /usr/local/apache-flume-1.7.0-bin/flumedata

# 描述和配置sink组件:k1
#写hdfshdfs必须是配置好环境变量的
a1.sinks.k1.type = hdfs
#写入到hdfs的目录
a1.sinks.k1.hdfs.path = /flumedata/events
#写文件的前缀
a1.sinks.k1.hdfs.filePrefix = events-
#滚动时间
a1.sinks.k1.hdfs.rollInterval = 60
#滚动大小
a1.sinks.k1.hdfs.rollSize = 1048576
#滚动数量
a1.sinks.k1.hdfs.rollCount = 100

# 描述和配置channel组件,此处使用是内存缓存的方式
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

# 描述和配置source  channel   sink之间的连接关系
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

注:a1.sinks.k1.hdfs.path = /flumedata/events写入到HDFS的目录不需要自己创建

启动Flume:

bin/flume-ng agent -c conf -f myconf/directory-hdfs.conf -n a1 -Dflume.root.logger=INFO,console

左边在传

上传成功

采集成功以后,文件名后缀变了.COMPLETED

注:如果再往目录里面放一个同名文件,会报错,不会上传到HDFS

4、Flume监控一个文件实时写到Kafka

# 定义这个agent中各组件的名字
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# 描述和配置source组件:r1
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /opt/datas/tmp.log

# 描述和配置sink组件:k1
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.kafka.topic = flumetopic
a1.sinks.k1.kafka.bootstrap.servers = hadoop01:9092,hadoop02:9092,hadoop03:9092,hadoop04:9092
a1.sinks.k1.kafka.flumeBatchSize = 20
a1.sinks.k1.kafka.producer.acks = 1
a1.sinks.k1.kafka.producer.linger.ms = 1
a1.sinks.ki.kafka.producer.compression.type = snappy

# 描述和配置channel组件,此处使用是内存缓存的方式
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

# 描述和配置source  channel   sink之间的连接关系
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
while true;
> do
> echo `date`>>/opt/datas/tmp.log
> sleep 0.5
> done

注:这里连接了四个机器,第一个用于启动Flume,第二台用于查看是否创建主题,第三台用于不断给tmp.log文件追加内容,用于Kafka消费,第四台用于查看文件大小,以证明文件在一直写入

启动Flume:

bin/flume-ng agent -c conf -f myconf/exec-kafka.conf -n a1 -Dflume.root.logger=INFO,console

启动成功,且已创建Topic为配置文件中flumeTopic。

接下来,给文件tmp.log一直追加内容。可以看到文件大小一直在变大,说明追加成功

消费Kafka中的数据:

kafka-console-consumer.sh --bootstrap-server hadoop01:9092 --from-beginning --topic flumeTopic

消费成功,且数据为实时时间,说明Flume成功的将文件写入到Kafka

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Flume是一个分布式的、可靠的、高可用的海量日志采集、聚合和传输的系统。它可以从各种源头(如日志文件、syslog、JMS、HTTP等)采集数据,并将这些数据传输到各种目的地(如HDFS、HBase、Elasticsearch、Kafka等)。 要使用Flume采集日志,首先需要安装和配置Flume。在配置文件中,可以指定要采集的源头、目的地和数据处理器等。以下是一个简单的Flume配置文件示例: ``` # flume.conf agent1.sources = source1 agent1.channels = channel1 agent1.sinks = sink1 agent1.sources.source1.type = exec agent1.sources.source1.command = tail -F /var/log/messages agent1.channels.channel1.type = file agent1.channels.channel1.capacity = 1000 agent1.channels.channel1.transactionCapacity = 100 agent1.sinks.sink1.type = hdfs agent1.sinks.sink1.hdfs.path = hdfs://localhost:9000/flume/%Y-%m-%d/%H%M agent1.sinks.sink1.hdfs.fileType = DataStream agent1.sinks.sink1.hdfs.writeFormat = Text agent1.sinks.sink1.hdfs.rollInterval = 600 agent1.sinks.sink1.hdfs.rollSize = 0 agent1.sinks.sink1.hdfs.rollCount = 10000 agent1.sinks.sink1.hdfs.batchSize = 1000 agent1.sinks.sink1.hdfs.useLocalTimeStamp = true agent1.sources.source1.channels = channel1 agent1.sinks.sink1.channel = channel1 ``` 在上面的配置文件中,我们使用`exec`类型的源头来采集`/var/log/messages`文件中的日志。然后,我们将采集到的日志传输到HDFS中的指定目录,同时指定了一些数据处理器,如`Text`格式的写入、按时间间隔和文件大小滚动等。 要启动Flume,可以使用以下命令: ``` $ bin/flume-ng agent --conf-file /path/to/flume.conf --name agent1 -Dflume.root.logger=INFO,console ``` 其中,`--conf-file`参数指定配置文件的路径,`--name`参数指定代理的名称,`-Dflume.root.logger`参数指定日志级别和输出位置。 这样,就可以使用Flume采集日志了。当然,在实际使用中,还需要根据具体需求来配置Flume,并选择合适的源头、目的地和数据处理器等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值