|
|
|
|
移动端

1.2.7 Web 日志统计举例

《UNIX/Linux网络日志分析与流量监控》第1章网络日志获取与分析,本章将介绍如何获取并分析各类系统的日志。学习好本章内容,将为后续章节的案例分析打下良好的基础。本节为大家介绍Web 日志统计举例。

作者:李晨光来源:机械工业出版社|2014-11-26 16:11

开发者盛宴来袭!7月28日51CTO首届开发者大赛决赛带来技术创新分享

1.2.7 Web 日志统计举例

通常可以用tail 命令来实时查看日志文件变化,但是各种应用系统中的日志非常复杂,一堆长度超过你浏览极限的日志出现在你眼前时,你会觉得非常无奈。怎么办呢?这时可以使用grep、sed、awk 和sort 等筛选工具帮助你解决这个问题。下面总结了几个常见分析方法。

(1)查看IP($1 代表IP)

  1. #cat access_log | awk '{print $1}' 

(2)对IP 排序

  1. #cat access_log | awk '{print $1}'|sort 

(3)打印每一重复行出现的次数,“uniq -c”表示标记出重复数量

  1. #cat access_log | awk '{print $1}'|sort|uniq -c 

(4)排序并统计行数

  1. #cat access_log | awk '{print $1}'|sort|uniq -c|sort -rn|wc -l 

(5)显示访问前10 位的IP 地址,便于查找攻击源

  1. #cat access_log|awk '{print $1}'|sort|uniq -c|sort -nr|head -10 

注意awk '{print $1'},它表示取日志的第一段。如果换成别的日志,其IP 地址在第3段,那么就要改变相应数值。

(6)显示指定时间以后的日志($4 代表时间)

  1. #cat access_log |awk '$4>="[23/Jul/2012:01:00:01"' access_log 

建议大家在排错时,同时打开多个终端,比如在一个窗口中显示错误日志,在另一个窗口中显示访问日志,这样就能够随时获知网站上发生的情况。

(7)找出访问量最大的IP,并封掉(对排错很有帮助)

  1. #cat access_log |awk '{print $1}'|sort|uniq -c |sort -nr |more  
  2. 9999 192.168.150.179  
  3. 11 192.168.150.1  
  4. #iptables -I INPUT -s 192.168.150.179 -j DROP  
  5. #iptables -I INPUT -s 192.168.150.0/24 -j DROP 

如果将上面的Shell 做以下变形就可以得出访问量TOP 10:

  1. #cat access_log |awk '{print $1}'|sort|uniq -c |sort -nr |head -10 

(8)找出Apache 日志中,下载最多的几个exe 文件(下载类网站常用,这里以.exe 扩展名举例)

  1. [root@localhost httpd]# cat access_log |awk '($7 ~/.exe/){print $10 "" $1 "" $4""$7}' |sort -n |uniq -c |sort  
  2. -nr |head -10  
  3. 2 - 192.168.150.1[25/Jul/2012:05:46:05/test.exe  
  4. 1 - 192.168.150.152[25/Jul/2012:05:46:47/test.exe  
  5. [root@localhost httpd]# 

使用如下命令:

  1. #cat access_log |awk `($10 >10000000 && $7 ~/.exe/) {print $7}` |sort –n|uniq –c|sort –nr|head -10 

这条命令增加一个>10000000 的条件判断就可以显示出大于10MB 的exe 文件,并统计对应文件发生次数。这条命令对于网站日常分析是非常有帮助的,大家可以灵活使用。

(9)简单统计流量

  1. #cat access.log |awk '{sum+=$10}' 

(10)统计401 访问拒绝的数量,便于找出可疑IP

  1. #cat access_log |awk '(/401/)'|wc -l 

下面的这条命令可以统计所有状态信息,用起来很方便:

  1. #cat access_log |awk '{print $9}' |sort|uniq –c |sort -rn 

(11)查看某一时间内的IP 连接情况

  1. grep "2012:05"access_log |awk '{print $4}'|sort|uniq –c |sort -nr 

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:342347198

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

Java for Flash动态网站开发手札

本书深入浅出地说明了如何利用Java、Flash及XML进行Flash富媒体应用程序的开发。 本书知识丰富,内容结构合理,包括:Flash影片应用程序与...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊