使用nginx记录用户登录数
来源:互联网 发布:亚马逊电子书包月 知乎 编辑:程序博客网 时间:2024/06/06 01:29
最近产品提了个需求,想看平台的每日用户登录数。
平台用户的验证是用token,用一个user_token表记录。所以第一想到的从这个token表中取出登录用户,统计登录数,然后再存入用于统计用户登录数的表中。之后发现这个方法不可行,因为token没有做有效时间,如果一个用户一直没有重新登录,他的token就一直是这个,所以要用其他方式了。
方式一,在用户请求api中加个中间件,记录这个请求的用户。这个方式的缺点是要修改现有的业务代码,增加了处理步骤,没有解耦了。
方式二,api接口是通过nginx来负载的,把请求通过nginx记录到日志中,另外写脚本分析该日志,提取出需要的数据。这个方式的缺点是要额外增加脚本,维护nginx日志。
综合考量下,选择了方式二。
实施步骤就简单了:
1.nginx设置日志格式
2.做个任务计划,每日读取该nginx日志,根据token,统计出对应的
用户存到表中
设置nginx日志格式
推荐写成json格式,方便解析处理。比如这次主要记录用户token,时间,ip,请求方式,api处理时间,客户端。格式如下:
log_format api '{"data":"$time_local","ip":"$remote_addr","request":"$request","request_time":"$request_time","Authorization_User":"$http_authorization_user","http_user_agent":"$http_user_agent"}';
这里用到的指令参考nginx指令
切割nginx日志
nginx日志如果一直放在一个文件中,则会越来越大,可以加个脚本,做个任务计划切割下
切割脚本参考
#!/bin/bash #日志文件存放目录 log_path="/opt/wwwlogs/platform/"#重命名日志文件 mv ${log_path}api.log ${log_path}app.$(date -d "yesterday" +"%Y%m%d").log#reload一下nginx/usr/local/nginx/sbin/nginx -s reload
阅读全文
0 0
- 使用nginx记录用户登录数
- 用户登录记录密码
- 记录用户登录操作
- 8月24号 使用cookie记录登录用户
- 记录远程用户登录日志
- 查看windows用户登录记录
- 记录用户登录失败触发器
- JS记录用户登录次数
- 记录用户的登录状态
- 用户登录和记录密码
- tp 用户登录日志记录
- Oracle查询数据库中当前登录用户所有表的记录数
- 用户登录并发数控制重复登录
- 使用AWS-用户登录
- nginx 使用记录
- nginx使用问题记录
- nginx使用记录
- nginx配置:登录使用https
- WebView的简单使用,JS的调用
- ETL程序从数据接口文件加载数据到外表
- Struts2与SpringMVC的区别
- POJ 2010 Moo University
- ElasticSearch源码
- 使用nginx记录用户登录数
- CCF 学生排队 C++ Java
- IP地址划分
- 3.1_数据结构列表List
- linux常用基础命令
- c++日记——WIndows和Linux下左移模板函数的不同
- Hello world
- 腾讯大牛教你web前后端漏洞分析与防御-接入层上传问题
- Java中的三元运算符?: error: not a statement