我通常用tail -f 命令来监控Nginx的实时访问日志信息!
但是当我利用grep来筛选被请求URL的特定字符串,来实时显示指定信息,过滤不显示一些不需要的信息!
假如我的nginx访问日志文件为:
/usr/local/nginx/logs/default.log
我通常运行下面的命令,来实时查看Nginx的请求数据:
tail -f /usr/local/nginx/logs/default.log
上面的命令会显示所有Nginx的请求日志,但是当访问量大(或者被CC攻击)时,能看的眼花缭乱!在这种情况下,使用grep方法来过滤掉不需要的日志。
tail -f /usr/local/nginx/logs/default.log | grep 'register.html'
这样,所有访问register.html这个页面的请求信息就会显示出来!
但是,用户在register.html里页面点击其他任何连接,那么访问的链接就会带着register.html的“Referer”来源页数据被Nginx记录到日志,这样用了Grep后也是会显示,而这些就属于无用信息!
下面就是解决这个问题的进阶方法:
tail -f /usr/local/nginx/logs/default.log | awk '{if ($7 ~ /register.html/) print}'
awk的参数说明:
$6 为监控request的数据列,我nginx的默认request数据记录在第七列,而Referer数据在第九列,这样就可以只查看被访问register.html页面的日志了!
request所在的数据列各有不同,你们可以自己数一下,单行里每个空格算一个列的分割,数一下多少空格就好了!
评论前必须登录!
注册