当前位置: 首页 > 网络应用技术

使用nginx访问日志统计PV和UV

时间:2023-03-07 16:46:02 网络应用技术

  当网站增加时,统计数据的需求是不可避免的。

  本文介绍了一种分析NGINX日志统计量PV和UVS的方法。

  如何根据NGINX的访问日志统计PV和UV?

  我们可以通过分析NGINX访问网站页面的日志来统计参数。例如,应该将单个页面应用程序博客网站(用户访问)算作访问。

  但是,如果网站的路线不确定,统计信息不好。路由更改后,需要更新统计脚本。此外,cookie是在用户第一次访问后设置的,因此第一页请求没有带来cookie,这将导致未遗漏的报告。此外,使用cookie记录数据,因为它是由JS编写的cookie,有必要确保访问相同的域,这不是灵活的。如果不是cookie编写通过JS,这意味着它不够灵活。

  因此,我们采用的方法是访问前端的事件。

  首先,在前端生成一个UUID,并且对Nginx的请求和UUID将准确地匹配此请求与NGINX,然后返回到204,以减少数据传输量。

  由于报告地址和页面位于同一域中,因此我们使用Cookie在此处保存UUID。如果不同的域,您还可以使用localstorage将UUID局部放置,然后将UUID带入参数。

  收到报告后,NGINX根据我们指定的固定格式生成日志。我们还需要设置定时任务以定期切割日志,以分析日志分析时分析月球和天堂的统计指标。

  总体过程示意图如下:

  前端使用此库来生成UUID,用cookie读写,并且cookie有效期为30天。如果存在,它将无法设置。

  地址为“/report.gif”此处。为了避免报告要缓存的请求,请求参数添加了时间戳。

  nginx需要配置响应

  我们可以指定NGINX访问日志的格式,该格式更方便地分析日志。

  请注意,log_format指令只能在HTTP模块中使用,并且不能在服务器模块中使用。

  在这里,通过http模块中的log_format定义格式,名为main,然后在服务器模块中使用访问来定义访问日志的存储目录,并引用main的主格式。服务器模块还匹配内部的cookie该请求和UUID被分配给变量以编写日志以正常读取uuid。

  我们会得到这样的日志

  为了促进统计信息,我们想将日志文件划分并分为这样的结构:

  根据年度,月份和日期,每天都会生成日志。

  这个想法的实现是首先设置一个日志存储目录,每天早上0:1:00,并根据日期将前一天的日志移至日志目录。对于nginx。

  首先编写脚本以实现此功能

  值得注意的是,尽管已完成日志,但NGINX文件引用仍然是被删除的文件,因此最终将信号发送到nginx并让其在新的日志文件中写入。

  编写脚本后,我们必须及时时间(每天0:00执行切割任务),该任务使用Linux工具。

  首先在控制台中输入编辑界面。编辑完成后,存储了时间,并且定时任务将生效。

  我们还可以检查当前的计时任务;通过删除当前的计时任务。

  使用日志,很容易分析PV和UVS.我们可以使用Linux命令进行分析,但是这次我选择使用NodeJS脚本统计信息,因为它更熟悉JS,并且比Linux更灵活。

  分析的一般思想是根据每日访问日志过滤此报告请求。

  统计脚本如下:

  执行统计脚本

  打印结果

  将来,您可以考虑扩展现有的能力,以允许节点实现日志切割的徽标,并提供API和接口,从而可视化统计信息PV和UVS。