nginx日志分析常用指令

无聊折腾自己的阿里云服务器,顺便学一波日志分析。

首先理清几个概念:

PV(page view),即页面浏览量,或点击量;通常是衡量一个网络新闻频道或网站甚至一条网络新闻的主要指标
uv(unique visitor),指访问某个站点或点击某条新闻的不同IP地址的人数。 

我的阿里云上安装了centos系统,查看nginx日志的目录是 /home/wwwlogs/ 配置文件是nginx.conf

一般情况日志的结构如下:

  log_format  main  '$remote_addr - $remote_user [$time_local] "$request" $http_host '
                        '$status $request_length $body_bytes_sent "$http_referer" '
                        '"$http_user_agent"  $request_time';

  1. remote_addr : 客户端地址
  2. remote_user : 客户端用户名
  3. time_local : 服务器时间
  4. request : 请求内容,包括方法名,地址,和http协议
  5. http_host : 用户请求是使用的http地址
  6. status : 返回的http 状态码
  7. request_length : 请求大小
  8. body_bytes_sent : 返回的大小
  9. http_referer : 来源页
  10. http_user_agent : 客户端名称
  11. request_time : 整体请求延时

wwwlogs下面有access.log和error.log 前者代表访问你服务器的ip和相应的内容,结构大概如下:


获取pv数的指令比较简单:

cat /usr/local/nginx/logs/access.log | wc -l

正常情况下,比如说只想查看访问的所有ip地址 那就只需查看第一行即可:

cat access.log|awk '{print $1}'

如果要查看ip数量的话,则:

cat /usr/local/nginx/logs/access.log | awk '{print $1}' |sort| uniq | wc -l

当然 往往我们是需要根据访问量来进行数据分析的,那么可以这么操作:

cat access.log |awk '{print $1}'|sort|uniq -c|sort -rn|more

按照访问次数来从大到小排序访问ip 结果如下:


如果想查看访问的状态码的话,那也就只需把print 1$改成print 9$ 因为状态码所处的列数是9 结果如下:



对于获取某一时刻的访问量:

cat /usr/local/class/logs/access.log | grep date | wc -l

获取的数据也可以导出 比如上面的指令可以通过

cat /usr/local/class/logs/access.log | grep 2017:13:28:55 | wc -l > access.csv

导出为csv文件

其实用来用去也就是那么几个命令:

 cat:输入文件内容

 grep:过滤文本

 'sort':排序

 'uniq':去重

 'awk':文本处理

当然,复杂的网站管理肯定远不止这些,不过我这种自己用的没什么访问的小服务器。。这些也就勉强够用了。。。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值