【分布式计算】分布式日志导入工具-Flume

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 背景Flume是Apache赞助的一个分布式日志管理系统,主要功能就是把集群中每个worker产生的日志log,collect到特定的地点。为什么要写这篇文章呢,因为现在搜索出来的文献大多是老版本的flume,在flume1.X版本后,也就是flume-ng版本跟之前出现了很大的改动,市面上的很多文档都已经过时了,大家看的时候一定要注意这点,稍后我会提供几个比较新的,

背景

Flume是Apache赞助的一个分布式日志管理系统,主要功能就是把集群中每个worker产生的日志log,collect到特定的地点。

为什么要写这篇文章呢,因为现在搜索出来的文献大多是老版本的flume,在flume1.X版本后,也就是flume-ng版本跟之前出现了很大的改动,市面上的很多文档都已经过时了,大家看的时候一定要注意这点,稍后我会提供几个比较新的,有参考价值的文章。

flume的优势有一下几个方面:
* JAVA实现,跨平台性能好
* 有一定的容错机制,和防止数据保障的机制
* 提供了很多的agent
* 方便开发,有developer选项

功能

这里写图片描述
单机版是如上形式的,有三个部件组成,分别是source,channel,sink。在使用的时候,只要安装flume,然后配置好对应的conf文件,就可以了。
source:主要是配置日志文件的来源(提供多种agent,支持多种数据源)
channel:类似于一个队列,暂存收到的日志数据
sink:将日志文件输出(有很多方式,可以投影到屏幕上,也可以读到数据库或者指定的文件中)

# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# Describe/configure the source
a1.sources.r1.type = avro          #avro是flume的一种type,读取本地log文件
a1.sources.r1.bind = localhost    #这个和下面的port对应于avro-client的端口
a1.sources.r1.port = 44444


# Describe the sink 
a1.sinks.k1.type = com.waqu.sink.OdpsSink #对应代码里的包名
a1.sinks.k1.sink.batchSize = 20             #需要大于10
a1.sinks.k1.sink.table = *******            #自己建的hub表以及key-id信息
a1.sinks.k1.sink.project =******* 
a1.sinks.k1.sink.odps.access_id =********** 
a1.sinks.k1.sink.odps.access_key =********** 
a1.sinks.k1.sink.odps.end_point =***********
a1.sinks.k1.sink.sink.tunnel.end_point =*******

# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.checkpointDir=1000
a1.channels.c1.dataDirs = 100


# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
AI 代码解读

下面就针对这三点,详细介绍下

Flume workflow

agent支持多种输入的source,几个比较常用的type。
*HTTP,可以监听http端口,拿log
*netcat,可以监听类似于telnet的端口数据
*Spooling ,监听某个文件目录下新增的文件
*Avro Source,发送指定文件,这个不支持实时监控,也就是说比方说我们监控a.log文件,当a.log改变了,我们无法拿到改变的日志
*Exec Source,这个可以实时监控某个文件

重点说下Exec Source,这个功能非常酷,它允许在agent上执行shell命令,这样我们就能用tail命令来监控某个文件新增的内容。

tail -f log.txt
AI 代码解读

Develop

*首先是利用官方的sdk包,开发打包jar文件
*把jar放到flume的lib文件目录下
*配置conf文件
*启动agent:flume-ng agent --conf conf --conf-file ./conf/my.conf -name a1 -Dflume.root.logger=INFO,console
*启动数据源:flume-ng avro-client -H localhost -p 44444 -F /home/garvin/log.txt -Dflume.root.logger=INFO,console

推荐几篇有用的东西:
一个代码实现的例子:https://github.com/waqulianjie/odps_sink
开发者document:http://flume.apache.org/FlumeUserGuide.html
一个比较完整的介绍:http://www.aboutyun.com/thread-8917-1-1.html

本文来自博客 “李博Garvin“
转载请标明出处:http://blog.csdn.net/buptgshengod]

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
打赏
0
0
0
0
82421
分享
相关文章
RAG Logger:专为检索增强生成(RAG)应用设计的开源日志工具,支持查询跟踪、性能监控
RAG Logger 是一款专为检索增强生成(RAG)应用设计的开源日志工具,支持查询跟踪、检索结果记录、LLM 交互记录和性能监控等功能。
89 7
RAG Logger:专为检索增强生成(RAG)应用设计的开源日志工具,支持查询跟踪、性能监控
如何为微服务实现分布式日志记录
如何为微服务实现分布式日志记录
156 1
Flutter前端开发中的调试技巧与工具使用方法,涵盖调试的重要性、基本技巧如打印日志与断点调试、常用调试工具如Android Studio/VS Code调试器和Flutter Inspector的介绍
本文深入探讨了Flutter前端开发中的调试技巧与工具使用方法,涵盖调试的重要性、基本技巧如打印日志与断点调试、常用调试工具如Android Studio/VS Code调试器和Flutter Inspector的介绍,以及具体操作步骤、常见问题解决、高级调试技巧、团队协作中的调试应用和未来发展趋势,旨在帮助开发者提高调试效率,提升应用质量。
96 8
使用EventLog Analyzer日志分析工具监测 Windows Server 安全威胁
Windows服务器面临多重威胁,包括勒索软件、DoS攻击、内部威胁、恶意软件感染、网络钓鱼、暴力破解、漏洞利用、Web应用攻击及配置错误等。这些威胁严重威胁服务器安全与业务连续性。EventLog Analyzer通过日志管理和威胁分析,有效检测并应对上述威胁,提升服务器安全性,确保服务稳定运行。
108 2
特定用途的日志分析工具
【10月更文挑战第20天】
107 5
开源日志分析工具
【10月更文挑战第20天】
262 3
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
86 2
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
86 1
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
66 1
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等