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

[经验分享] 【运维小分享】Apache日志分析命令汇总

[复制链接]

尚未签到

发表于 2018-11-19 08:31:33 | 显示全部楼层 |阅读模式
很多像我这样刚入门的小菜鸟,不知道日常怎么对自己的网站的日志进行分析,得出谁访问过我网站,访问什么,响应效果如何等等,在这里我对相关基础分析命令作个总结,大家可以参考一下&给修改意见。 DSC0000.gif


在讲分析命令之前,首先要明确日志格式,每个人的格式不一定一样,如果与我的格式不一样则分析命令的列数号要作对应调整

141.10.225.94 - - [09/Dec/2016:15:42:45 +0800] "GET/wp-content/uploads/2016/12/56.jpg HTTP/1.1" 304 - "http://www.vrfxie.cn/" "Mozilla/5.0 (Windows NT 6.1;WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102Safari/537.36" 0

LogFormat "%h %l %u %t \"%r\" %>s %b\"%{Referer}i\" \"%{User-Agent}i\" %T" combined

%…h: 远程主机
%…l:远程登录名字(来自identd,如提供的话)
%…u:远程用户(来自auth;如果返回状态(%s)是401则可能是伪造的)
%…t:以公共日志时间格式表示的时间(或称为标准英文格式)
%…r: 请求的第一行
%…s:状态。对于进行内部重定向的请求,这是指*原来*请求 的状态。如果用%…>s,则是指后来的请求
%…b:CLF格式的已发送字节数量,不包含HTTP头。例如当没有发送数据时,写入‘-’而不是0
%{Referer}i 前一个页面,或者说从按个页面引过来的
%{User-Agent}i 客户端主体信息
%T 响应时间

基础:
1.找出访问次数最多的10个IP
cat access_log | awk '{print $1}' | sort | uniq -c |sort -rn | head -n 10
结果:
      4 101.226.35.225
      2 91.92.120.102
      2 123.126.113.161
      1 98.143.148.107
      1 95.213.187.188
      1 81.169.223.210
      1 61.216.2.13
      1 220.181.108.106
      1 139.199.66.174
      1 139.162.88.63
解析:
awk #首先将每条日志中的IP抓出来,如日志格式被自定义过,可以 -F定义分隔符,然后print指定列
sort #进行初次排序,为的使相同的记录排列到一起
upiq -c #合并重复的行,并记录重复次数
sort -nr #按照数字进行倒叙排序
head #进行前十名筛选
功能:
1.访问最多的IP地址,一般来说单个ip访问量就两位数左右吧,什么几千几万次的,就有点奇怪了
2.进一步,可以查看对应IP做过在对你网站做什么,做得最多的是什么,访问时间段……..

2.找到访问最多的页面
cat access_log | awk '{print $11}' | sort | uniq -c |sort -rn | head -n 10
结果:
   3068"http://139.199.66.174/phpmyadmin/index.php/index.php"
     52 "-"
     31"http://139.199.66.174/wp-admin/post-new.php"
     27 "http://139.199.66.174/?p=58"
     23"http://139.199.66.174/wp-content/themes/sparkling/inc/css/font-awesome.min.css?ver=4.3.6"
     22 "http://139.199.66.174/"
     21"http://vrfxie.blog.51cto.com/11026252/1877410"
     21"http://139.199.66.174/wp-content/themes/sparkling/inc/css/bootstrap.min.css?ver=4.3.6"
     16 "http://www.vrfxie.cn/"
     13"http://139.199.66.174/wp-admin/post.php?post=58&action=edit&message=6"
1同理,只是换了一个列数
功能:
1.找出访问最多的页面
2.进一步可以查看对应页面的响应效率,如果效率不正常,则要进行优化调整

3.找出网站的响应质量
cat access_log | awk '{print $9}' | sort | uniq-c | sort -rn | head -n 10 #查状态码
结果:
      9 200
      3 404
      2 400
      1 405
      1 301
cat access_log | awk '{print $NF}' | sort | uniq -c |sort -rn | head -n 10 #查响应时间
功能:
1.状态码2开头表示正常,4的话就代表出错了,如果占得比例比较多则证明网站响应质量比较差,要查找对应原因了
2.响应时间一般为0,也就是零点几秒,大于0则要检查一下了

4.找出访问次数最多的那个小时
cat access_log | awk '{print $4}' | cut -c 14-15 | sort | uniq -c | sort-rn | head -n 10
结果:
   3074 19
    171 17
     53 15
     25 16
      7 22
      5 02
      4 20
      3 21
      2 00
      1 05
解析:
awk #用空格分出来的第四列是[09/Jan/2010:00:59:59;
cut -c #提取14到15个字符,就是表示小时那段
功能:
找出访问最多的时候,进一步可以查找,访问量高的原因,针对这段时间做优化。

进阶:
其实就是把上述的基本命令相互结合使用,或者加上一些特定条件,进行定位分析
下面我举几个典型例子,其他的大家可以类比去定制自己的分析命令即可

1.查看当天ip连接数
cat access_log | grep "09/Dec/2016" | awk '{print $1}' | sort| uniq -c | sort -rn | head -n 10
关键在于grep,规定好特定前提--哪一天!
2.查看客户端主体信息,可知道它是不是spider之类的东西
cat access_log | awk -F '"' '{print $6}' | sort |uniq -c | sort -rn | head -n 10
关键在于awk -F改变分隔符为" 取其第六段--客户端主体信息
spider样子:
Sogou webspider/4.0(+http://www.sogou.com/docs/help/webmasters.htm#07)
Mozilla/5.0(compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)
……
3.列出传输时间超过30秒的文件
cat access_log | awk '($NF > 30){print $7}'| sort-n | uniq -c | sort -nr | head -10
关键在于$NF > 30,按照我的日志格式$NF--最后一列是表示响应时间,响应时间大于30秒是前提

建议大家可以把对应你所需的分析命令汇合成一个脚本,定期执行形成报告,方便你查看,更牛的,可以根据报告结果,对异常的地方作出告警。

当然现在有很多日志分析软件如Logcheck等等,但是手工分析是基础,而且有趣一点~ DSC0001.gif




运维网声明 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.yunweiku.com/thread-636783-1-1.html 上篇帖子: CentOS Apache 500 / 403错误及IP无法访问解决方法 下篇帖子: 安装apache需要的组件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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