赞
踩
Nginx 作为一款高性能的 HTTP Web 服务器,不仅稳定、低消耗,还有非常丰富的功能集,只需要简单的配置就能成为一个数据接收端,自身还能作为负载均衡来使用。
整体只需要配置日志格式、端口监听即可完成。
$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 的日志功能进行接收写入,最终落盘
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; } } }
“27.258.256.250” _++_ “1612345678.782” _++_ “POST” _++_ “project” _++_ “data” _++_ “toekn” _++_ “key=value&point=line&data=abc” _++_ “PostmanRuntime/7.29.2”
http://localhost:8080/web_point
这个地址可以作为神策埋点 SDK 的服务端接收地址接收埋点数据,再配合 Java IO、Flume 等工具拉取数据进行进一步的处理,然后将数据落入数据仓库给分析系统使用。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。