当前位置:   article > 正文

数据采集:使用 Nginx 作为数据接收端_nginx文件接收服务

nginx文件接收服务

一、为什么使用 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
  • 1
  • 2
  • 3
  • 4

三、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 {
    	'~^(?<ymd>\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;
       }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

四、数据落盘结果

原始数据

原始数据

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

Postman 测试参数

Postman 测试参数

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/232426
推荐阅读
相关标签
  

闽ICP备14008679号