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

简介: 快速学习网站流量日志 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日志并进行多维度分析。
相关文章
|
1月前
|
存储 运维 监控
【Flume】flume 日志管理中的应用
【4月更文挑战第4天】【Flume】flume 日志管理中的应用
|
1月前
|
消息中间件 存储 分布式计算
【Flume】Flume配置文件详细分析
【4月更文挑战第4天】【Flume】Flume配置文件详细分析
|
1月前
|
存储 分布式计算 监控
【Flume】Flume 监听日志文件案例分析
【4月更文挑战第4天】【Flume】Flume 监听日志文件案例分析
|
9月前
|
消息中间件 数据采集 SQL
1、电商数仓(用户行为采集平台)数据仓库概念、用户行为日志、业务数据、模拟数据、用户行为数据采集模块、日志采集Flume(一)
1、电商数仓(用户行为采集平台)数据仓库概念、用户行为日志、业务数据、模拟数据、用户行为数据采集模块、日志采集Flume(一)
|
4月前
|
小程序 Linux 数据安全/隐私保护
Linux学习笔记十六:日志管理
Linux学习笔记十六:日志管理
|
4月前
|
监控 安全 前端开发
Nginx 访问日志中有 Get 别的网站的请求是什么原因?
Nginx 访问日志中有 Get 别的网站的请求是什么原因?
43 0
|
5月前
|
SQL 数据采集 数据挖掘
nginx+flume网络流量日志实时数据分析实战
nginx+flume网络流量日志实时数据分析实战
111 0
|
5月前
|
消息中间件 存储 分布式计算
Hadoop学习笔记(HDP)-Part.20 安装Flume
01 关于HDP 02 核心组件原理 03 资源规划 04 基础环境配置 05 Yum源配置 06 安装OracleJDK 07 安装MySQL 08 部署Ambari集群 09 安装OpenLDAP 10 创建集群 11 安装Kerberos 12 安装HDFS 13 安装Ranger 14 安装YARN+MR 15 安装HIVE 16 安装HBase 17 安装Spark2 18 安装Flink 19 安装Kafka 20 安装Flume
57 0
Hadoop学习笔记(HDP)-Part.20 安装Flume
|
6月前
|
Java
JVM学习笔记-如何在IDEA打印JVM的GC日志信息
若要在Idea上打印JVM相应GC日志,其实只需在Run/Debug Configurations上进行设置即可。
69 0
|
7月前
|
缓存 NoSQL Redis
Redis学习笔记-AOF日志&重写机制
Redis学习笔记-AOF日志&重写机制
92 0