网站流量日志 Flume 收集--配置文件编写和实操| 学习笔记

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 快速学习网站流量日志 Flume 收集--配置文件编写和实操

开发者学堂课程【大数据分析之企业级网站流量运营分析系统开发实战(第二阶段)网站流量日志 Flume 收集--配置文件编写和实操】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/694/detail/12185


网站流量日志 Flume 收集--配置文件编写和实操

创建 flume 配置文件

在桌面上创建新的 flume 配置文件,这个文件是从 taildir sourse 进行采集和上传的,所以应该命名为taildir_sourse_hdfs_sink.txt,如果用户看到地址,就可以见名之意知道文件是使用taildir sourse进行采集然后上传到hdfs当中。flume的编写就是里面三个组件具体的描述,都描述清楚就可以进行数据的采集。以flume当中的参考文件,将例子做相关的修改。打开参考资料中的软件里面有一个flume文件夹,选择flume conf,选择tail-hdfs.conf,以这个为例,复制里面的内容,这里面是flume的一些配置,需要结合实际场景进行修改,复制出来替换到文件当中,然后进行修改。首先针对三个组件做一个名字命名描述,sourser1sinkk1channelc1。接下来针对这三个组件做一个具体描述。

1.首先去描述 sourse,如下:

al.sources = r1

al.sources.r1.type = TAILDIR

al.sources.r1.channels = c1

al.sources.r1.positionFile = /var/log/flume/taildir_position.json

al.sources.r1.filegroups = f1 f2

al.sources.r1.filegroups.f1= /var/log/test1/example.log

al.sources.r1.filegroups.f2 = /var/log/test2/.*log.*

1)首先第一个a1sourse就是r1,这个参数刚才已经命名过了,所以这个不需要。

2)第二个r1的类型等于 TAILDIR,这是核心的,需要保留。

3)第三个r1绑定的 channel 叫做c1,发现后面已经做了绑定了,所以这里就没有必要重复了,所以去掉。

4)第四个断点续传文件的路径在这个路径下,然后下面定义了两个文件组,一个叫f1一个叫f2f1这里用来指向具体文件,f2指向的是文件夹路径,还支持正则匹配。这些都是核心配置,因此这几个保留,把之前的删去,这样就把sourse定好了,是一个 tail sourse

修改后的程序为:

al.sources.r1.type = TAILDIR

al.sources.r1.positionFile = /weblog/flume/taildir_position.json

al.sources.r1.filegroups = f1 f2

al.sources.r1.filegroups.f1= /weblog/test1/example.log

al.sources.r1.filegroups.f2 = /weblog/test2/.*log.*

2.下面介绍 hdf sink 相关的组件。

最下面是 memory,使用的是内存级别的缓存。把采集到数据放在内存当中进行绑定,写完之后对参数做具体的修改。为了方便,路径尽量不要写太长的路径。改为weblog 路径下,那么收集的这个文件在 weblog 路径下叫做 test1,同样的下面的路径也改为 weblog,把上面断点续传的信息文件同样也保存在 weblog 路径下。

如果在企业当中,应该把这个文件保存在一个靠谱的路径下,不要保存在缓存路径下。比如放在 table 路径下,一旦它被清除,断点续传功能就失效了。下面把数据上传到采集到hdf上去,channel=c1,其实这一块下面已经绑定了所以不需要再写一遍了,删除。下面是上传的路径,为了方便,对这个路径进行统一命名,叫做weblog 路径下,这两级路径是在动态获取时间。文件名的前缀改为itcast-。下面这三个属性叫做开启十分钟之内的属性,比如文件夹会十分钟滚动一个。

再下面是文件滚动,分别是间隔、大小以及count,这里需要做一个要求,当三个属性都配置的时候要实现谁先满足谁先触发。在企业当中,通常会以一个角度来维护,比如:在使用flume采集数据到hdfs的时候,要求以文件大小进行滚动,大小为128M,文件正好以一个块的大小进行滚动,非常方便。

对需求进行配置:把时间间隔和数量都改为零,这里文件大小的单位是字节,所以不能直接写128M

需要进行换算,换算结果为134217728,也是文件默认的块的大小。将这个修改复制到 hdfs 文件当中。这就完成了相关配置文件的组装。

修改后的程序为:

a1.sinks.k1.type =hdfs

a1.inks.k1.hdfs.path= /weblog/%y-%m-%d/%H-%M/

a1.sinks.k1.hdfs.filePrefix = itcast-

a1.sinks.kl.hdfs.round =true

a1.sinks.k1.hdfs.roundValue =10

a1.sinks.k1.hdfs.roundUnit=minute

a1.sinks.k1.hdfs.rollInterval=0

a1.sinks.k1.hdfs.rollSize = 134217728

a1.sinks.kl.hdfs.rollCount 0

3.接下来把这个配置文件上传到 flume 的配置文件当中进行启动,看是否能进行数据的收集。

打开服务器,flume 安装在 node1载机上,路径为cd/export/servers/flume,在这个当中有一个 flume 的文件夹,cd conf 路径下,把采集方案放到这个路径下,采集方案就是桌面上新建的采集方案,上传。

image.png

上传之后为了确保正常,建议使用cat命令查看一下有没有问题。检测一遍当中有没有参数写错,有没有路径不对,主要要求是心细。

确定没有错误之后就去启动,但是启动之前要注意,如果文件夹不存在是会报错的,文件夹是 weblog根目录下的两个文件,一个叫test1,一个叫test2,所以需要克隆绘画来创建两个文件夹。

首先mkdir -p/weblog/test1mkdir -p/weblog/test2cdweblog当中去看一下,显示已经有了test1test2flume删除掉rm -rf flume

image.png

这个 flume 中保存的就是之前断点续传的路径。查看这两个文件中有没有多余的文件,有的话需要删除,先cd../ test1,显示有文件,使用rm -rf将其删掉;对test2进行相同的操作。

确保初始环境是正常使用的才能看到一些现象,回到 node1来进行 flume 的启动,因为没有配置 flume 的环境变量,所以只能在根目录上启动,启动命令参考之前的配置文件,需要做一些修改。

使用 bin 目录下的 flume-ng 进行启动,重点就是里面的参数,把命令复制下来,看一下哪里需要进行修改。首先 bin 下的flume-ng没有问题,配置文件方案在 conf路径下,名字应该改为taildir_sourse_hdfs_sink,回车。

image.png

这样就成功启动 flume了。现在不管是监控的文件还是文件夹都没有数据发生变化,所以现在 flume 并没有进行数据的收集。这时候为了方便,打开 hdfs 的页面端口50070,搜一下 node1,打开一个 web 浏览页面,看数据能不能收集。用来监控的文件夹叫做 weblog 路径下的 test2,它的路径的正则匹配叫做.*log.*,查看数据文件叫access.log.20181101.dat,正好匹配这个路径。一旦把这个文件放到他监控的文件下面,就会生成一个新的文件,那么就能进行数据的收集。使用cp复制,把access.log买点采集的数据复制到 weblog 下的 test2,一回车,相当于这个路径当中产生了一个新的文件,而这个文件的格式正好符合它正则匹配里面的格式,这时候就会进行数据的采集工作,把数据采集到hdfs路径下,发现当前并没有这个路径,试验是否能够进行采集,回车。

image.png

当复制过来时,会发现 node1的窗口有信息,开始进行相关数据编写,通过页面来验证一下是否可行。打开 hdfs 页面,刷新,发现多了一个文件夹 weblog

image.png

打开有日期,前缀是itcast,与配置的内容一样,后面是文件的序列号,但是文件后面有个.tmp,说明这个文件是一个临时文件,因为设置的是以文件大小进行滚动,也就是满足128M之后才会进行滚动,但是当前数据并没有128M,使用ll -h去验证,

image.png

发现这个数据只有2.9M,不满足滚动的条件,所以这个文件会一直处于临时状态,必须满足128M之后,这个文件才会结束,然后打开一个新的文件写数据。这就有了一个小的弊端,在企业当中,如果数据真的就没有128M,恰好只有100M50M,不能一直保持临时状态,那要怎么样来控制滚动。这样就完成了数据通过flume的采集,还可以去验证一下如果想去监控文件,也可以把这个路径上的文件做个动态变化。

4.断点续传文件的保存

打开服务器,cd weblog flume,发现这个路径下会有它自己保存的一个.json的文件,使用 cat 命令查看一下这里保存的文件位置信息。

image.png

pos就是偏移量,这些信息后面如果出了故障,就能够知道收集到哪里,从哪里继续来读,支持断点续传。这就是数据采集的第二种理解叫做数据搬运的采集。在企业当中就可以通过配置flume把路径指向买点采集以及服务器认识的路径,一旦有滚动,就把数据动态的采集上传到指定的路径下,完成数据采集,传输,汇总的一个过程。

5.小结:

这就是 flume 的新组件 taildir,重点理解里面的两个功能,一个是断点续传,一个是做两个组件的整合。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
4月前
|
存储 消息中间件 网络协议
日志平台-ELK实操系列(一)
日志平台-ELK实操系列(一)
|
5月前
|
存储 数据采集 数据处理
【Flume拓扑揭秘】掌握Flume的四大常用结构,构建强大的日志收集系统!
【8月更文挑战第24天】Apache Flume是一个强大的工具,专为大规模日志数据的收集、聚合及传输设计。其核心架构包括源(Source)、通道(Channel)与接收器(Sink)。Flume支持多样化的拓扑结构以适应不同需求,包括单层、扇入(Fan-in)、扇出(Fan-out)及复杂多层拓扑。单层拓扑简单直观,适用于单一数据流场景;扇入结构集中处理多源头数据;扇出结构则实现数据多目的地分发;复杂多层拓扑提供高度灵活性,适合多层次数据处理。通过灵活配置,Flume能够高效构建各种规模的数据收集系统。
108 0
|
3月前
|
PyTorch 算法框架/工具
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
本文介绍了PyTorch中的F.softmax()和F.log_softmax()函数的语法、参数和使用示例,解释了它们在进行归一化处理时的作用和区别。
534 1
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
|
3月前
|
SQL 分布式计算 Hadoop
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
55 2
|
3月前
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
61 1
|
5月前
|
jenkins 持续交付
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
|
3月前
|
数据可视化
Tensorboard可视化学习笔记(一):如何可视化通过网页查看log日志
关于如何使用TensorBoard进行数据可视化的教程,包括TensorBoard的安装、配置环境变量、将数据写入TensorBoard、启动TensorBoard以及如何通过网页查看日志文件。
299 0
|
3月前
|
监控 网络协议 CDN
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
|
5月前
|
存储 分布式计算 大数据
【Flume的大数据之旅】探索Flume如何成为大数据分析的得力助手,从日志收集到实时处理一网打尽!
【8月更文挑战第24天】Apache Flume是一款高效可靠的数据收集系统,专为Hadoop环境设计。它能在数据产生端与分析/存储端间搭建桥梁,适用于日志收集、数据集成、实时处理及数据备份等多种场景。通过监控不同来源的日志文件并将数据标准化后传输至Hadoop等平台,Flume支持了性能监控、数据分析等多种需求。此外,它还能与Apache Storm或Flink等实时处理框架集成,实现数据的即时分析。下面展示了一个简单的Flume配置示例,说明如何将日志数据导入HDFS进行存储。总之,Flume凭借其灵活性和强大的集成能力,在大数据处理流程中占据了重要地位。
118 3
|
5月前
|
存储 消息中间件 监控
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统ELK、日志收集分析
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统、日志收集分析。日志级别从小到大的关系(优先级从低到高): ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF 低级别的会输出高级别的信息,高级别的不会输出低级别的信息