nginx+flume 数据采集

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: nginx+flume 数据采集

未经许可,禁止以任何形式转载,若要引用,请标注链接地址

全文共计3279字,阅读大概需要3分钟

一、 任务描述

本实验任务主要完成基于ubuntu环境使用nginx+flume的工作方式进行数据采集。通过完成本实验任务,要求学生了解并掌握nginx的安装、nginx的基础语法、采集数据方法以及配置格式,为从事大数据平台运维工程师、大数据技术支持工程师等岗位工作奠定夯实的技能基础。


二、 任务目标

掌握flume的应用原理

 掌握nginx+flume对日志信息的采集过程


三、 任务环境

本次环境是:Ubuntu16.04+flume-ng-1.5.0-cdh5.3.6


四、 任务分析

Flume是Cloudera提供的日志收集系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理操作,并写到各种storage。Flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。本试验就是通过学习flume工具实现对指定目录下所有的日志文件数据信息进行采集并实时把采集到的信息保存到hdfs中指定的位置。


♥ 知识链接

Flume拦截器

 已有的拦截器有:

Timestamp Interceptor :在event的header中添加一个key叫:timestamp,value为当前的时间戳。这个拦截器在sink为hdfs 时很有用,后面会举例说到

Host Interceptor:在event的header中添加一个key叫:host,value为当前机器的hostname或者ip。

Static Interceptor:可以在event的header中添加自定义的key和value。

Regex Filtering Interceptor:通过正则来清洗或包含匹配的events。

Regex Extractor Interceptor:通过正则表达式来在header中添加指定的key,value则为正则匹配的部分


五、 任务实施

步骤1、nginx配置

启动nginx服务

c67823e793974b6f89d1aa9d21775693.png



图片1 启动nginx服务

 使用命令进入nginx.conf文件下:vi /etc/nginx/nginx.conf,编辑文件(完整代码如下)

1.  #user  nginx;
2.  worker_processes  1;
3.  
4.  error_log  /var/log/nginx/error.log warn;
5.  pid        /var/run/nginx.pid;
6.  
7.  
8.  events {
9.      worker_connections  1024;
10. }
11. 
12. 
13. http {
14.     include       /etc/nginx/mime.types;
15.     default_type  application/octet-stream;
16. 
17.     log_format  main  "$remote_addr,[$time_local]$http_user_agent"$request"";
18.                      # "$status $body_bytes_sent "$http_referer" "
19.                      # ""$http_user_agent" "$http_x_forwarded_for"";
20. 
21.     access_log  /var/log/nginx/access.log  main;
22. 
23.     sendfile        on;
24.     #tcp_nopush     on;
25. 
26.     keepalive_timeout  65;
27. 
28.     #gzip  on;
29.     server {
30.         listen       80;
31.         server_name  localhost;
32. 
33.         #charset koi8-r;
34. 
35.        access_log  /var/log/nginx/access.log   main;
36. 
37.         location / {
38.             root   /web/baidu;
39.             index  index.html index.htm;
40.         }
41. 
42.     }
43.     include /etc/nginx/conf.d/*.conf;
44. 
45. }

d0f06e5b00164370aea587b80a039d7d.png


图片2 展示nginx配置代码


在/web/baidu下创建index.html文件,编写展示的内容


8fa9d495c96b4c679816a6537860812f.png


图片3 编辑访问的html文件


重启nginx服务


a36e8bb827974ed090dd978e5e319357.png


图片4 重启nginx服务


步骤2、日志收集

访问服务器:http: //localhost (自己的ip)查看nginx的web页面

69de73bc38af48e8aa5e10033b5b4d45.png



图片5 使用浏览器访问nginx


查看日志是否生成:使用命令: cat /var/log/nginx/access.log,成功的收取日志。



98c3cb26e23e4e59a29742d708d42233.png

图片6 查看生成的日志


步骤3、使用Flume把日志数据写入到HDFS中

通过执行命令start-all.sh启动hadoop,修改配置文件:进入conf目录下:cd /simple/flume/conf/自己创建一个配置文件,使用命令:touch test2.conf

修改配置文件内容:

1.  agent.sources = r1
2.  agent.sinks = k1
3.  agent.channels = c1
4.  
5.  ## common
6.  agent.sources.r1.channels = c1
7.  agent.sinks.k1.channel = c1
8.  
9.  ## sources config
10. agent.sources.r1.type  = exec
11. ##监听的日志位置
12. agent.sources.r1.command = tail -F /var/log/nginx/access.log
13. agent.sources.r1.interceptors = t1
14. agent.sources.r1.interceptors.t1.type = timestamp
15. 
16. 
17. ## channels config
18. agent.channels.c1.type = memory
19. agent.channels.c1.capacity = 1000
20. agent.channels.c1.transactionCapacity = 1000
21. agent.channels.c1.byteCapacityBufferPercentage = 20
22. agent.channels.c1.byteCapacity = 1000000
23. agent.channels.c1.keep-alive = 60
24. 
25. #sinks config
26. agent.sinks.k1.type = hdfs
27. agent.sinks.k1.channel = c1
28. #存放的hdfs位置
29. agent.sinks.k1.hdfs.path = hdfs://localhost:9000/usr/logsdata/%m/%d
30. agent.sinks.k1.hdfs.fileType = DataStream
31. agent.sinks.k1.hdfs.filePrefix = ZD-%H-%H
32. agent.sinks.k1.hdfs.fileSuffix=.log
33. agent.sinks.k1.hdfs.minBlockReplicas=1
34. agent.sinks.k1.hdfs.rollInterval=3600
35. agent.sinks.k1.hdfs.rollSize=132692539
36. agent.sinks.k1.hdfs.idleTimeout=10
37. agent.sinks.k1.hdfs.batchSize = 1
38. agent.sinks.k1.hdfs.rollCount=0
39. agent.sinks.k1.hdfs.round = true
40. agent.sinks.k1.hdfs.roundValue = 2
41. agent.sinks.k1.hdfs.roundUnit = minute

进入flume的bin目录下,使用命令:./flume-ng agent -f /simple/flume/conf/test2.conf -c ../conf/ -n agent -Dflume.root.logger=INFO,console

37bdb7e5ff7d43659ecc00974f0e37bf.png


图片7 启动flume


没有出现错误提示,一直在监听服务器是否产生日志。


b51c410209a84b0d82410279c5d60d38.png


图片8 监听服务器


执行命令:hadoop fs -ls /usr/logsdata/查看是否上传到hdfs系统上(07目录即为生成的存放文件的目录)


40d97af7f8f2486397fe041f53a69b62.png


图片9 查看hdfs上生成的目录


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
6月前
|
数据采集 消息中间件 监控
Flume数据采集系统设计与配置实战:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入探讨Apache Flume的数据采集系统设计,涵盖Flume Agent、Source、Channel、Sink的核心概念及其配置实战。通过实例展示了文件日志收集、网络数据接收、命令行实时数据捕获等场景。此外,还讨论了Flume与同类工具的对比、实际项目挑战及解决方案,以及未来发展趋势。提供配置示例帮助理解Flume在数据集成、日志收集中的应用,为面试准备提供扎实的理论与实践支持。
269 1
|
消息中间件 数据采集 SQL
1、电商数仓(用户行为采集平台)数据仓库概念、用户行为日志、业务数据、模拟数据、用户行为数据采集模块、日志采集Flume(一)
1、电商数仓(用户行为采集平台)数据仓库概念、用户行为日志、业务数据、模拟数据、用户行为数据采集模块、日志采集Flume(一)
|
3月前
|
数据采集 存储 Apache
Flume核心组件大揭秘:Agent、Source、Channel、Sink,一文掌握数据采集精髓!
【8月更文挑战第24天】Flume是Apache旗下的一款顶级服务工具,专为大规模日志数据的收集、聚合与传输而设计。其架构基于几个核心组件:Agent、Source、Channel及Sink。Agent作为基础执行单元,整合Source(数据采集)、Channel(数据暂存)与Sink(数据传输)。本文通过实例深入剖析各组件功能与配置,包括Avro、Exec及Spooling Directory等多种Source类型,Memory与File Channel方案以及HDFS、Avro和Logger等Sink选项,旨在提供全面的Flume应用指南。
135 1
|
6月前
|
数据采集 分布式计算 Java
【数据采集与预处理】流数据采集工具Flume
【数据采集与预处理】流数据采集工具Flume
161 8
|
6月前
|
数据采集 分布式计算 关系型数据库
Sqoop与Flume的集成:实时数据采集
Sqoop与Flume的集成:实时数据采集
|
消息中间件 数据采集 存储
大数据数据采集的数据采集(收集/聚合)的Flume之数据采集流程的Channel的Kafka Channel
在大数据处理和管理中,数据采集是非常重要的一环。为了更加高效地进行数据采集,Flume作为一种流式数据采集工具得到了广泛的应用。其中,Flume的Channel模块是实现数据缓存和传输的核心模块之一。本文将介绍Flume中的Kafka Channel,讲解其数据采集流程。
197 0
|
6月前
|
SQL 数据采集 数据挖掘
nginx+flume网络流量日志实时数据分析实战
nginx+flume网络流量日志实时数据分析实战
179 0
|
消息中间件 数据采集 JSON
1、电商数仓(用户行为采集平台)数据仓库概念、用户行为日志、业务数据、模拟数据、用户行为数据采集模块、日志采集Flume(二)
1、电商数仓(用户行为采集平台)数据仓库概念、用户行为日志、业务数据、模拟数据、用户行为数据采集模块、日志采集Flume(二)
|
数据采集 大数据 数据处理
大数据数据采集的数据采集(收集/聚合)的Flume之数据采集流程的Interceptor的Regex Interceptor
大数据的发展让数据采集变得越来越重要,而Flume则是一款非常优秀的开源数据采集工具。在Flume中,Interceptor是一个非常重要的概念,可以对数据进行拦截、过滤和转换,从而实现更加灵活高效的数据采集流程。
87 0
|
数据采集 存储 大数据
大数据数据采集的数据采集(收集/聚合)的Flume之数据采集流程的Interceptor的Static Interceptor
对于大数据领域的数据采集,Flume是一款非常流行的工具。Flume通过它的各个组件来辅助进行数据采集、传输和存储,其中Interceptor是一个非常重要的组件。本文将会对Flume之数据采集流程的Interceptor的Static Interceptor进行详细介绍。
149 0