数据采集:使用 Nginx 作为数据接收端

目录

  • 一、为什么使用 Nginx 作为数据接收端
  • 二、Nginx 格式
    • 数据格式
    • 日志格式
  • 三、Nginx 接收配置
  • 四、数据落盘结果
    • 原始数据
    • Postman 测试参数

一、为什么使用 Nginx 作为数据接收端

   Nginx 作为一款高性能的 HTTP Web 服务器,不仅稳定、低消耗,还有非常丰富的功能集,只需要简单的配置就能成为一个数据接收端,自身还能作为负载均衡来使用。
   整体只需要配置日志格式、端口监听即可完成。

二、Nginx 格式

数据格式

$proxy_add_x_forwarded_for HTTP 请求端真实的 IP
$msec 写入日志条目到当前时间,精确到百万分之一
$remote_addr 客户端 IP
$time_local 通用日志格式下的本地时间
$status 状态码
$body_bytes_sent 发送给客户端的字节数,不包括响应头大小
$http_user_agent 客户端浏览器信息
$http_referer 请求的 referer 地址
$request 完整的原始请求
$request_method HTTP 请求方法,通常是 GET、POST
$requset_time 请求处理时长
$request_uri 完整的请求地址
$server_protocol 服务器 HTTP 版本,通常是 HTTP/1.0、HTTP/1.1
$request_body POST 请求参数,form 中的参数
token $http_token 自定义 header 字段前面加 http_
version $arg_version 自定义 body 字段前面加 arg_

日志格式

# log_format 是 Nginx 定义日志格式的标识
# log_name 是自定义的名字,可以根据所接收的数据类型命名
# format 是数据记录的格式
log_format log_name format

三、Nginx 接收配置

   接收数据是使用 Nginx 的日志功能进行接收写入,最终落盘

http {
    include mime.types;
    # _++_ 是分隔符,方便后续数据解析
    # 数据格式:真实 IP _++_ Nginx 接收时间 _++_ 请求方法 _++_ body project 字段 _++_ body data 字段 _++_ body token 字段 _++_ POST 请求参数 _++_ 浏览器信息
    log_format web_point '"$proxy_add_x_forwarded_for" _++_ "$msec" _++_ "$request_method" _++_ "$arg_project" _++_ "$arg_data" _++_ "$arg_token" _++_ "$request_body" _++_ "$http_user_agent"';
    # 根据需求自行配置
    gzip  on;
    # 时间格式
    map $time_iso8601 $logdate {
    	'~^(?\d{4}-\d{2}-\d{2})' $ymd; default 'nodate';
   }
   server {
       listen 8080; 
       location /web_point {
           # 埋点数据关闭缓存
           add_header Cache-Control 'no-cache, no-store, must-revalidate';
           # 输出 POST 请求的 body,需要加入 Nginx-echo 模块
           echo_read_request_body;
           # 将数据以 web_point 的格式保存到文件中,文件按照 logdate 格式存储(按天)
           access_log /usr/local/logs/nginx/web_access.${logdate} web_point;
       }
    }
}

四、数据落盘结果

原始数据

原始数据

“27.258.256.250” _++_ “1612345678.782” _++_ “POST” _++_ “project” _++_ “data” _++_ “toekn” _++_ “key=value&point=line&data=abc” _++_ “PostmanRuntime/7.29.2”

Postman 测试参数

http://localhost:8080/web_point
这个地址可以作为神策埋点 SDK 的服务端接收地址接收埋点数据,再配合 Java IO、Flume 等工具拉取数据进行进一步的处理,然后将数据落入数据仓库给分析系统使用。

你可能感兴趣的:(大数据应用,nginx,大数据,数据分析)