Nginx实现浏览器实时查询访问日志和查看访问数据
在很多时候俺们需要在页面上实时查看nginx的日志输出,查看访问量及详细访问数据,并且能在页面上显示,下面是在浏览器上实时动态的查看nginx的访问日志和访问量的方法。
首先启用nginx_status,了解nginx的状态以及监控nginx非常有帮助。
浏览器访问nginx_status
在nginx.conf文件server下的443端口下添加:
1 | location /nginx_status { |
重启nginx后打开主站域名后面添加/nginx_status
就可以显示访问数据了,当然只有你指定的IP才能查看,例如:https://hostalk.net/nginx_status 效果看图:
访问数据详解:
active connections – 活跃的连接数量
server accepts handled requests — 总共处理了98个连接 , 成功创建98次握手, 总共处理了132个请求
reading — 读取客户端的连接数.
writing — 响应数据到客户端的数量
waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading+writing), 意思就是 nginx 已经处理完正在等候下一次请求指令的驻留连接.
浏览器访问log日志
首先,查看access.log文件路径,命令:
find -name access.log
输出,文件路径在/var/log/nginx/access.log
1 | ./var/log/nginx/access.log |
然后在nginx.conf文件的http段,添加如下:
1 | #日志输出格式 |
设置完后可以在服务器里cat查看,但是每次登陆查看太麻烦了,下面设置可以在浏览里查看。
在nginx.conf文件server下的443端口下添加:
1 | location /nginx_log { |
美化autoindex:https://hostalk.net/posts/nginx_autoindex.html
这个不美化也没关系,就是丑点。
重启nginx后打开主站域名后面添加/nginx_log
就可以显示访问日志了,当然只有你指定的IP才能查看,例如:https://hostalk.net/nginx_log 效果看图:
清理日志命令
> /var/log/nginx/access.log
> /var/log/nginx/error.log
日志切割和自动删除
下面方法二选一
脚本自动切割和删除
由于长时间的运行,日志文件会日益增大,所以写了个脚本每天切割日志文件并自动删除十天前的日志文件。
新建脚本文件 vi /usr/sbin/cutlog.sh
输入下面内容:
1 |
|
使用命令 crontab -e
添加下面内容,建立定时任务,每天零点执行上面脚本。
0 0 * * * /bin/bash /usr/sbin/cutlog.sh
使用logrotate管理日志文件
安装logrotate,一般Linux发行版上都默认安装有logrotate包,如果没有可使用apt安装
apt install logrotate cron
新建nginx文件
vi /etc/logrotate.d/nginx
输入以下内容
1 | /var/log/nginx/*log { |
完成后检查,执行logrotate
logrotate -d /etc/logrotate.d/nginx
logrotate -f /etc/logrotate.d/nginx
修改crontab定时时间服务
vi /etc/crontab
修改下面一行,定时时间为6:25,你可改为你想要的时间
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
然后重启crontab服务
/etc/init.d/cron restart