设为首页 收藏本站
查看: 773|回复: 0

[经验分享] Nginx日志常用分析命令汇总

[复制链接]

尚未签到

发表于 2018-11-8 09:45:46 | 显示全部楼层 |阅读模式
  一、概念
  并发连接数
  客户端向服务器发起请求,并建立了TCP连接。每秒钟服务器链接的总TCP数量,就是并发连接数。
  请求数
  请求数指的是客户端在建立完连接后,向http服务发出GET/POST/HEAD数据包。
  拓展:服务器返回了请求结果后有两种情况:



    •   http数据包头包含Close字样,关闭本次TCP连接;
    •   http数据包头包含Keep-Alive字样,本次连接不关闭,可继续通过该连接继续向http服务发 送请求,用于减少TCP并发连接数。

  PV(page view)
  访问量,即页面浏览量或者点击量,用户每次对网站的访问均被记录1次。用户对同一页面的多次访问,访问量值累计
  UV(unique visitor)
  独立访客量。将每个独立设备(以cookie为依据)视为一位访客,一天之内(00:00-24:00)的访客数量。一天之内相同cookie的访问只被计算1次。
  独立IP
  00:00-24:00内相同IP地址只被计算一次
  注:关于并发连接数、请求数、并发用户数的概念参考日志http://www.4wei.cn/archives/1002399
  二、Nginx配置
  版本
  nginx version: nginx/1.10.2
  日志配置项
  access_log    /var/log/access.log   access;
  日志格式
  log_format access  '$remote_addr - $remote_user [$time_local] "$request" $request_body  '
  '$upstream_addr $upstream_response_time $request_time '
  '$status $body_bytes_sent "$http_referer" '
  '"$http_user_agent" $http_x_forwarded_for ' ;
  三、常用日志分析命令
  1、总请求数
wc -l access.log |awk '{print $1}'  2、独立IP数
awk '{print $1}' access.log|sort |uniq |wc -l  3、每秒客户端请求数 TOP5
awk  -F'[ []' '{print $5}' access.log|sort|uniq -c|sort -rn|head -5  4、访问最频繁IP Top5
awk '{print $1}' access.log|sort |uniq -c | sort -rn |head -5  5、访问最频繁的URL TOP5
awk '{print $7}' access.log|sort |uniq -c | sort -rn |head -5  6、响应大于10秒的URL TOP5
awk '{if ($12 > 10){print $7}}' access.log|sort|uniq -c|sort -rn |head -5  7、HTTP状态码(非200)统计 Top5
awk '{if ($13 != 200){print $13}}' access.log|sort|uniq -c|sort -rn|head -5  8、分析请求数大于50000的源IP的行为
awk '{print $1}' access.log|sort |uniq -c |sort -rn|awk '{if ($1 > 50000){print $2}}' > tmp.txt  
for i in $(cat tmp.txt)
  
do
  
   echo $i  >> analysis.txt
  
   echo "访问行为统计" >> analysis.txt
  
   grep $i  access.log|awk '{print $6}' |sort |uniq -c | sort -rn |head -5 >> analysis.txt
  
   echo "访问接口统计" >> analysis.txt
  
   grep $i  access.log|awk '{print $7}' |sort |uniq -c | sort -rn |head -5 >> analysis.txt
  
   echo -e "\n"  >> /root/analysis/$Ydate.txt
  
done
  注:如果源IP来自代理服务器,应将第一条命令过滤地址改为$http_x_forwarded_for地址
awk '{print $NF}' access.log|sort |uniq -c |sort -rn|awk '{if ($1 > 50000){print $2}}' > tmp.txt  四、延伸
  Nginx日志按日切割后可使用上述命令得出每日网站流量分析概况,然后可以写一个Python脚本读取后发送。也可以将数据导入MySQL然后使用Python绘制曲线。当然使用日志分析系统,如ELK,效果更佳。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-632254-1-1.html 上篇帖子: Nginx Rewrite正则表达式案例 下篇帖子: Nginx+PHP (Fastcgi)常见502和504问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表