目录
1.flume 不采集 Nginx 日志,通过 Logger4j 采集日志,优缺点是什么?
2.flume 和 kafka 采集日志区别,采集日志时中间停了,怎么记录之前的日志?
Flume组建介绍
Agent结构
1.flume 不采集 Nginx 日志,通过 Logger4j 采集日志,优缺点是什么?
在nginx采集日志时无法获取session的信息,然而logger4j则可以获取session的信息,logger4j的方式比较稳定,不会宕机。缺点:不够灵活,logger4j的方式和项目结合过滤紧密,二flume的方式就比较灵活,便于插拔式比较好,不会影响项目的性能
2.flume 和 kafka 采集日志区别,采集日志时中间停了,怎么记录之前的日志?
Flume 采集日志是通过流的方式直接将日志收集到存储层,而 kafka 试讲日志缓存在 kafka集群,待后期可以采集到存储层。Flume 采集中间停了,可以采用文件的方式记录之前的日志,而 kafka 是采用offset(偏移量) 的方式记录之前的日志
Flume组建介绍
(1)Client:Client生产数据,运行在一个独立的线程。
(2)Event:一个数据单元,消息头和消息体组成(Events可以是日志记录、avro对象等)
(3)Flow:Event从源点到达目的点的迁移的抽象。
(4)Agent:一个独立的Flume进程,包含组件Source、Channel、Sink(Agent使用JVM运行Flume。每台机器运行一个agent,但是可以在一个agent中包含多个sources和sinks)
(5)Source:数据收集组件(source从Client收集数据,传递给Channel)
(6)Channel:中转Event的一个临时存储,保存由Source组件传递过来的Event(Channel连接sources和sinks,这个有点像一个队列
(7)Sink:从Channel中读取并移除Event, 将Event传递到FlowPipeline中的下一个Agent(如果有的话)(Sink从Channel收集数据,运行在一个独立线程)
Agent结构
Flume运行的核心是Agent。Flume以agent为最小的独立运行单位。一个agent就是一个JVM。它是一个完整的数据收集工具,含有三个核心组件,分别是source、channel、sink。通过这些组件,Event可以从一个地方流向另一个地方,如下图所示