Flume

前言

Apache Flume 是一个分布式、高可靠、高可用的用来收集、聚合、转移不同来源的大量日志数据到中央数据仓库的工具。Flume具有强大的功能和精简配置化实现功能的使用方式。
中文文档地址
Git地址
在这里插入图片描述

Event

Event是Flume定义的一个数据流传输的最小单元。

Agent

Agent就是一个Flume的实例,本质是一个JVM进程,该JVM进程控制Event数据流从外部日志生产者那里传输到目的地(或者是下一个Agent)。

Source

Source消耗由外部传递给它的Event。外部以Flume Source识别的格式向Flume发送Event。例如,Avro Flume Source可接收从Avro客户端(或其他FlumeSink)接收Avro Event。用Thrift Flume Source也可以实现类似的流程,接收的Event数据可以是任何语言编写的只要符合Thrift协议即可。

Channel

Channel是一个数据的缓冲池,可以认为是一个消息队列。当Source接收Event时,它将其存储到一个或多个channel。该channel是一个被动存储器,可以保持Event直到它被Sink消耗。channel也提供了多种实现方式,例如内存,文件,Kafka以及JDBC等。

Sink

Sink从channel中移除Event并将其放入外部存储库(如HDFS,通过 Flume的 HDFS Sink 实现)或将其转发到流中下一个Flume Agent的Flume Source。

简例

使用Flume实现日志append监控,并输出到控制台

# 配置Agent a1各个组件的名称
a1.sources = source1    
a1.sinks = sink1      
a1.channels = channel1   

# source1
a1.sources.source1.type = TAILDIR     
a1.sources.source1.filegroups = f1
a1.sources.source1.filegroups.f1 = D:/flume/access.log   

# sink1
a1.sinks.sink1.type = logger         

# channel1 
a1.channels.channel1.type = memory                
a1.channels.channel1.capacity = 1000
a1.channels.channel1.transactionCapacity = 100

# 把source和sink绑定到channel上
a1.sources.source1.channels = channel1      
a1.sinks.sink1.channel = channel1          

思考

TailDir数据源基于Liunx kernel的tail -f指令实现,目前暂不支持windows平台。另外如果考虑使用TailDir为埋点方案需要在负载均衡服务器上部署服务,显然会占用负载的资源。

现阶段大多数企业日志系统都是基于ELK实现:

  • Logstash:日志收集工具,可以从本地磁盘,网络服务,消息队列中收集各种各样的日志,然后进行过滤分析,并将日志输出到Elasticsearch中。
  • Elasticsearch:日志分布式存储/搜索工具,原生支持集群功能,可以将指定时间的日志生成一个索引,加快日志查询和访问。
  • Kibana:可视化日志Web展示工具,对Elasticsearch中存储的日志进行展示,还可以生成炫丽的仪表盘。
    在这里插入图片描述
    如果采用上图架构会因为企业日志过于庞大,有效日志只占一小部分导致机器资源的浪费。
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值