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

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

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-12-28 10:19: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地址只被计算一次


二、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、总请求数

1
wc -l access.log |awk '{print $1}'



2、独立IP数

1
awk '{print $1}' access.log|sort |uniq |wc -l



3、每秒客户端请求数 TOP5


1
awk  -F'[ []' '{print $5}' access.log|sort|uniq -c|sort -rn|head -5



4、访问最频繁IP Top5

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



5、访问最频繁的URL TOP5

1
awk '{print $7}' access.log|sort |uniq -c | sort -rn |head -5



6、响应大于10秒的URL TOP5

1
awk '{if ($12 > 10){print $7}}' access.log|sort|uniq -c|sort -rn |head -5



7、HTTP状态码(非200)统计 Top5

1
awk '{if ($13 != 200){print $13}}' access.log|sort|uniq -c|sort -rn|head -5



8、分析请求数大于50000的源IP的行为



1
2
3
4
5
6
7
8
9
10
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地址
1
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-320559-1-1.html 上篇帖子: 终于要看看nginx和lua了 下篇帖子: nginx模块开发入门(五)-2.4 The Module Definition
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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