• 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服务

    在这里插入图片描述

    图片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.	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    在这里插入图片描述

    图片2 展示nginx配置代码

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

    在这里插入图片描述

    图片3 编辑访问的html文件

    重启nginx服务

    在这里插入图片描述

    图片4 重启nginx服务

    步骤2、日志收集

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

    在这里插入图片描述

    图片5 使用浏览器访问nginx

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

    在这里插入图片描述

    图片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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    进入flume的bin目录下,使用命令:./flume-ng agent -f /simple/flume/conf/test2.conf -c ../conf/ -n agent -Dflume.root.logger=INFO,console
    在这里插入图片描述

    图片7 启动flume

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

    在这里插入图片描述

    图片8 监听服务器

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

    在这里插入图片描述

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

  • 相关阅读:
    OpenShift 4 - 使用 MachineConfigPool 特性分批升级集群 Worker 节点
    使用高斯混合模型进行聚类
    负号重载C++
    L2 cache 表现行为理解
    第七章 总结及作业【编译原理】
    ES6之解构参数
    软信天成:干货分享,如何实施云迁移策略!
    Paddle Graph Learning (PGL)图学习之图游走类模型[系列四]
    京东数据分析软件(京东平台数据分析):2023年Q3扫地机器人行业消费报告
    Android中获取手机SIM卡的各种信息
  • 原文地址:https://blog.csdn.net/qq_44807756/article/details/125631291