【开发经验】nginx收集埋点数据


使用nginx收集页面上报的信息,并且解析。


一、页面请求

1.head请求

  通常页面请求后端接口都是GET请求或者POST请求,HTTP还有HEAD的请求方式,head请求的特点是不返回消息体,head请求主要用来检查资源有效性。在数据上报的时候也可以使用head请求。

2.发送请求

  通过发送http:ip:端口/log.gif?key=value 的方式来进行日志的收集。key和value可以通过base64进行转码一下,以免传输解析时有问题。

二、nginx配置

配置如下(示例):

#user  nobody;
worker_processes  1;
#pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
	# A,定义格式变量为 arg_{问号后面的key}
	# http:ip:port?fromType=1231&actionType=12321
	log_format user_log_format "$arg_fromType|$arg_actionType";
    #access_log  logs/access.log  main;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            root   html;
            index  index.html index.htm;
        }
		location /img {
        content_by_lua '
             ngx.say("saddas")';
		}
		//B
		location /log.gif {
			#arg_fromType 接收  /log.gif?fromType= 的value
			#设置别名之后 user_log_format的变量名可改为fromType
			#set_unescape_uri $fromType $arg_fromType;
			#set_unescape_uri $actionType $arg_actionType;
			#打开子请求日志
			log_subrequest on;
			#将日志保存到user_defined中,user_log_from 在上面定义
			access_log logs/user_defined.log user_log_format;
			
			#返回一个空的文件
			add_header Expires "Fri, 01 Jan 1980 00:00:00 GMT";
			add_header Pragma "no-cache";
			add_header Cache-Control "no-cache, max-age=0, must-revalidate";
		
			#返回一个1×1的空gif图片
			empty_gif;
		}
    }
}

A:新增一个user_log_format来解析参数
B:配置/log.gif来接收请求。set_unescape_uri 用来设置参数别用。

2.测试

  发送请求http://192.168.16.128/log.gif?fromType=3&actionType=2到nginx。之后nginx的user_defined.log中打印如下

3|2

日志收集完成

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
flume是一个分布式、可靠、高可用的数据采集、聚合和传输系统。在数据采集方面,flume可以很好地与nginx、kafka、mongodb等常见的数据处理工具和数据库进行集成。下面介绍一下基于nginx+flume+kafka+mongodb实现点数据采集的步骤: 1. 配置nginx服务器,将所有的http请求都转发到flume服务器上。可以使用nginx的proxy_pass指令来实现。 2. 在flume服务器上,配置flume agent来接收nginx服务器转发过来的http请求,并将请求数据转发给kafka服务器。flume的配置文件中需要设置source、channel和sink三个部分,具体配置可以参考flume官方文档。 3. 在kafka服务器上,创建一个topic来存储flume发送过来的http请求数据。可以使用kafka的命令行工具kafka-topics来创建topic。 4. 在flume服务器上,配置一个kafka sink来将http请求数据发送到kafka服务器上的指定topic中。 5. 在mongodb数据库中创建一个collection来存储http请求数据。可以使用mongodb的命令行工具mongo来创建collection。 6. 在flume服务器上,配置一个mongodb sink来将http请求数据从kafka服务器中消费,并将其存储到mongodb数据库中的指定collection中。 7. 启动nginx、flume、kafka和mongodb服务,并进行测试。可以使用curl等工具模拟http请求,并查看数据是否能够被成功采集、存储到mongodb中。 以上就是基于nginx+flume+kafka+mongodb实现点数据采集的基本步骤。需要注意的是,具体的配置和实现过程可能会因为不同的业务需求而有所差异。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叁滴水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值