【运维小分享】Apache日志分析命令汇总

很多像我这样刚入门的小菜鸟,不知道日常怎么对自己的网站的日志进行分析,得出谁访问过我网站,访问什么,响应效果如何等等,在这里我对相关基础分析命令作个总结,大家可以参考一下&给修改意见。

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

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.102
Safari/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 web
spider/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等等,但是手工分析是基础,而且有趣一点~

时间: 2024-10-25 03:40:35

【运维小分享】Apache日志分析命令汇总的相关文章

[转帖]Linux企业运维人员最常用150个命令汇总

Linux企业运维人员最常用150个命令汇总 https://clsn.io/clsn/lx998.html 基本上都用过了. 命令 功能说明 线上查询及帮助命令(2个) man 查看命令帮助,命令的词典,更复杂的还有info,但不常用. help 查看Linux内置命令的帮助,比如cd命令. 文件和目录操作命令(18个) ls 全拼list,功能是列出目录的内容及其内容属性信息. cd 全拼change directory,功能是从当前工作目录切换到指定的工作目录. cp 全拼copy,其功能

【运维小分享】整理Apache日志

网站的日志文件随着每天的访问记录积累,会越来越大,特别是大型网站. 日志越来越大不仅影响储存容量从而影响网站性能,而且对我们做日志分析造成困难. 因此,我要对日志进行规范整理. 方法一:使用rotatelogs实现log轮转 rotatelogs是一个配合Apache管道日志功能使用的简单程序. PS:管道日志功能 Apache提供了不把日志直接写入文件,而是通过管道发送给另外一个程序的能力.这样就大大加强了对日志进行处理的能力.这个通过管道得到的程序可以是任意程序,如日志分析.压缩日志等.要实

网站运维工具使用iis日志分析工具分析iis日志(iis日志的配置)

我们只能通过各种系统日志来分析网站的运行状况,对于部署在IIS上的网站来说,IIS日志提供了最有价值的信息,我们可以通过它来分析网站的响应情况,来判断网站是否有性能问题,或者存在哪些需要改进的地方 对于一个需要长期维护的网站来说,如何让网站长久稳定运行是件很有意义的事情.有些在开发阶段没有暴露的问题很有可能就在运维阶段出现了,这也是很正常的.还有些时候,我们希望不断地优化网站,让网站更快速的响应用户请求,这些事情都发生在开发之后的运维阶段. 与开发阶段不同的,运维阶段不可能让你去调试程序,发现各

老男孩:Linux企业运维人员最常用150个命令汇总

近来老男孩发现新手学习Linux记不住命令,不会分类.不会筛选重点,胡子眉毛一把抓当然记不住了. 特别整理Linux运维最常用150个命令和大家分享,大家学习命令不用在盲目了,根据分类,然后逐步学习! 命令 功能说明 线上查询及帮助命令(2个) man 查看命令帮助,命令的词典,更复杂的还有info,但不常用. help 查看Linux内置命令的帮助,比如cd命令. 文件和目录操作命令(18个) ls 全拼list,功能是列出目录的内容及其内容属性信息. cd 全拼change director

【运维小分享】记个人博客网站受针对xmlrpc.php的暴力破解攻击

起因: 今天忽然打开个人blog,就发现打开很慢,然后出现了下图的反馈:服务器服务不可用!waht?刷新了几次都不行,赶紧登陆服务器后台查看情况. 确认攻击: 登陆后台后通过netstat发现连接数极多,相对于平时来说多了好几倍吧,赶紧通过日志load出疯狂访问的ip # cat 2016-12-16-access_log | awk '{print $1}' | sort | uniq -c | sort -rn | head -n 10   30305 191.96.249.53   290

Linux Apache日志分析--命令

1.获得访问前10位的ip地址cat access.log|awk '{print $1}'|sort|uniq -c|sort -nr|head -10 2.访问次数最多的文件或页面,取前10cat access.log|awk '{print $11}'|sort|uniq -c|sort -nr|head -10 3.列出传输最大的几个exe文件cat access.log |awk '($7~/\.exe/){print $10 " " $1 " " $4

Linux企业运维人员最常用150个命令汇总

命令 功能说明 线上查询及帮助命令(2个) man 查看命令帮助,命令的词典,更复杂的还有info,但不常用. help 查看Linux内置命令的帮助,比如cd命令. 文件和目录操作命令(18个) ls 全拼list,功能是列出目录的内容及其内容属性信息. cd 全拼change directory,功能是从当前工作目录切换到指定的工作目录. cp 全拼copy,其功能为复制文件或目录. find 查找的意思,用于查找目录及目录下的文件. mkdir 全拼make directories,其功能

运维工程师 必备的150个命令汇总

命令 功能说明 线上查询及帮助命令(2个) man 查看命令帮助,命令的词典,更复杂的还有info,但不常用. help 查看Linux内置命令的帮助,比如cd命令. 文件和目录操作命令(18个) ls 全拼list,功能是列出目录的内容及其内容属性信息. cd 全拼change directory,功能是从当前工作目录切换到指定的工作目录. cp 全拼copy,其功能为复制文件或目录. find 查找的意思,用于查找目录及目录下的文件. mkdir 全拼make directories,其功能

运维经验分享(四)--关于 java进程管理的服务控制脚本编程思路分析

运维经验分享作为一个专题,目前共7篇文章 <运维经验分享(一)-- Linux Shell之ChatterServer服务控制脚本> <运维经验分享(二)-- Linux Shell之ChatterServer服务控制脚本二次优化> <运维经验分享(三)-- 解决Ubuntu下crontab不能正确执行Shell脚本的问题(一)> <运维经验分享(四)--关于 java进程管理的服务控制脚本编程思路分析> <运维经验分享(五)-- 改进的java进程管