通过Flume采集指定目录日志系统文件至HDFS
应用场景
Flume是一个分布式、可靠和高可用的海量日志聚合的系统。它能够将不同数据源的海量日志数据进行高效收集、聚合、移动,最后存储到一个中心化数据存储系统中。支持在系统中定制各类数据发送方,用于收集数据。同时,提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
Flume分为客户端和服务端,两者都是FlumeAgent。服务端对应着FlumeServer实例,直接部署在集群内部。而客户端部署更灵活,可以部署在集群内部,也可以部署在集群外。它们之间没有必然联系,都可以独立工作,并且提供的功能是一样的。
Flume客户端需要单独安装,支持将数据直接导到集群中的HDFS和Kafka等组件上。
本案例中,通过MRS自定义集群中的Flume组件,自动采集指定节点日志目录下新产生的文件并存储到HDFS文件系统中。
方案架构
Flume-NG由多个Agent来组成,而每个Agent由Source、Channel、Sink三个模块组成,其中Source负责接收数据,Channel负责数据的传输,Sink则负责数据向下一端的发送。
名称 |
说明 |
---|---|
Source |
Source负责接收数据或通过特殊机制产生数据,并将数据批量放到一个或多个Channel。Source的类型有数据驱动和轮询两种。 典型的Source类型如下:
Source必须至少和一个Channel关联。 |
Channel |
Channel位于Source和Sink之间,用于缓存来自Source的数据,当Sink成功将数据发送到下一跳的Channel或最终目的地时,数据从Channel移除。 Channel提供的持久化水平与Channel的类型相关,有以下三类:
Channel支持事务,可提供较弱的顺序保证,可以和任何数量的Source和Sink工作。 |
Sink |
Sink负责将数据传输到下一跳或最终目的,成功完成后将数据从Channel移除。 典型的Sink类型如下:
Sink必须作用于一个确切的Channel。 |
Flume也可以配置成多个Source、Channel、Sink,如图2所示:
操作流程
本实践操作流程如下所示:
- 步骤1:创建MRS集群:创建一个包含有Flume组件的MRS集群。
- 步骤2:生成Flume配置文件:根据业务场景配置Flume服务端和客户端侧配置文件。
- 步骤3:安装Flume客户端:在MRS集群中下载并安装Flume客户端。
- 步骤4:查看日志采集结果:查看日志采集结果。
步骤1:创建MRS集群
- 创建并购买一个包含有Flume、HDFS组件的MRS集群,详情请参见购买自定义集群。
本文以购买的MRS 3.1.0版本的集群为例,集群未开启Kerberos认证。
- 集群购买成功后,登录集群的FusionInsight Manager界面,下载集群客户端并解压。
由于Flume客户端需要单独安装,需要首先下载集群的客户端安装包到待安装Flume客户端的节点上并解压。
- 在FusionInsight Manager“主页”页签的集群名称后单击,单击“下载客户端”下载集群客户端。
- 在“下载集群客户端”弹窗中填写集群客户端下载信息。
图3 下载集群客户端
- “选择客户端类型”中选择“完整客户端”。
- “选择平台类型”必须与待安装节点的架构匹配,以“x86_64”为例。
- 勾选“仅保存到如下路径”,填写下载路径,本示例以“/tmp/FusionInsight-Client/”为例,需确保omm用户对该路径有操作权限。
- 客户端软件包下载完成后,以root用户登录集群的主OMS节点,复制安装包到指定节点。
客户端软件包默认下载至集群的主OMS节点(可通过FusionInsight Manager的“主机”界面查看带有标识的节点),如需要在集群内其他节点上安装,执行以下命令将软件包传输至其他节点,否则本步骤可忽略。
cd /tmp/FusionInsight-Client/
scp -p FusionInsight_Cluster_1_Services_Client.tar 待安装Flume客户端节点的IP地址:/tmp
- 以root用户登录待安装Flume客户端的节点,进入客户端软件包所在目录后,执行以下命令解压软件包。
tar -xvf FusionInsight_Cluster_1_Services_Client.tar
tar -xvf FusionInsight_Cluster_1_Services_ClientConfig.tar
步骤2:生成Flume配置文件
- 登录FusionInsight Manager,选择“集群 > 服务 > Flume > 配置工具”。
- 配置并导出“properties.properties”文件。
选择“Agent名”为“server”,分别选择“Avro Source”、“Memory Channel”和“HDFS Sink”模块,并连接。
图4 生成Flume配置文件
双击模块图标,配置对应参数,各模块配置参数如下(其他参数保持默认):
类型
配置参数
描述
配置示例
Avro Source
名称
模块名称,可自定义。
test_source_1
bind
待连接的Flume角色所在节点的IP地址,可在“集群 > 服务 > Flume > 实例”页面查看任一Flume角色实例的IP地址。
192.168.10.192
port
连接端口,建议从21154开始配置。
21154
Memory Channel
名称
模块名称,可自定义。
test_channel_1
HDFS Sink
名称
模块名称,可自定义。
test_sink_1
hdfs.path
日志文件写入HDFS的目录。
hdfs://hacluster/flume/test
hdfs.filePrefix
写入HDFS后的文件名前缀。
over_%{basename}
- 单击“导出”按钮,下载“properties.properties”文件到本地。
- 在FusionInsight Manager界面,单击“集群 > 服务 > Flume > 实例”,单击准备上传配置文件的节点行的“Flume”角色,进入“实例配置”页面。
图5 上传配置文件
- 选择“上传文件”,上传“properties.properties”文件。
单击“保存”,单击“确定”后等待配置完成。
- 选择“集群 > 服务 > Flume > 配置工具”
选择“Agent名”为“client”,分别选择“SpoolDir Source”、“Memory Channel”和“Avro Sink”模块,并连接。
图6 配置Flume
双击模块图标,配置对应参数,各模块配置参数如下(其他参数请保持默认):
类型
配置参数
描述
配置示例
SpoolDir Source
名称
模块名称,可自定义。
test_source_1
spoolDir
需要采集日志的目录,该目录需要对flume运行用户具有读写权限,并放入文件进行验证。
/var/log/Bigdata/audit/test
Memory Channel
名称
模块名称,可自定义。
test_channel_1
HDFS Sink
名称
模块名称,可自定义。
test_sink_1
hostname
待连接的Flume角色所在节点的IP地址。
192.168.10.192
port
连接端口,建议从21154开始配置。
21154
- 单击“导出”按钮,下载“properties.properties”文件到本地。
- 将“properties.properties”文件重命名为“client.properties.properties”,然后将该文件上传并覆盖到Flume客户端节点的“集群客户端安装包解压路径/Flume/FlumeClient/flume/conf”目录下。
步骤3:安装Flume客户端
- 以root用户登录待安装Flume客户端所在节点。
- 进入客户端安装包解压路径,例如客户端安装包上传至“/tmp”目录下并解压。
- 执行以下命令安装Flume客户端,其中“/opt/FlumeClient”为自定义的Flume客户端安装路径。
cd /tmp/FusionInsight-Client/FusionInsight_Cluster_1_Services_ClientConfig/Flume/FlumeClient
./install.sh -d /opt/FlumeClient -c flume/conf/client.properties.properties
CST ... [flume-client install]: install flume client successfully.
步骤4:查看日志采集结果
- Flume客户端安装成功后,向日志采集目录写入新的日志文件,验证日志是否传输成功。
例如在“/var/log/Bigdata/audit/test”目录下新建几个日志文件。
cd /var/log/Bigdata/audit/test
vi log1.txt
Test log file 1!!!
vi log2.txt
Test log file 2!!!
- 写入日志文件后,执行ll命令查看文件列表,日志文件自动增加了后缀“.COMPLETED”,表示该文件已被采集。
-rw-------. 1 root root 75 Jun 9 19:59 log1.txt.COMPLETED -rw-------. 1 root root 75 Jun 9 19:59 log2.txt.COMPLETED
- 登录FusionInsight Manager,选择“集群 > 服务 > HDFS”,单击“NameNode(主)”对应的链接,打开HDFS WebUI界面。
图7 HDFS服务概述
- 选择“Utilities > Browse the file system”,观察HDFS上“/flume/test”目录下是否有产生数据。
图8 查看HDFS文件
如上所示,文件目录下产生了收集的日志文件,文件名统一增加了前缀“over_”。
下载日志文件“over_log1.txt”并查看内容,与写入的日志文件“log1.txt”内容一致。
Test log file 1!!!