NowSec

欢迎访问NowSec的博客

awk对apache日志访问的处理

一、awk简介

awk名称来源于他的创始人姓氏的首字母(Alfred Aho、Peter Weinberger和Brian Kernighan),awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并产生报告时显得尤为强大。
awk其实是一门编程语言,它支持条件判断、数组、循环等功能。所以我们也可以将awk理解成一个脚本语言解释器

二、awk语法形式

awk [options] 'script' var=value file(s)
awk [options] -f scriptfile var=value file(s)

三、awk命令常用选项

1.-F fs fs指定输入分隔符,fs可以是字符串或者正则表达式
2.-v var=vaule 符值一个用户自定义变量,将外部变量传给awk
3.-f scriptfile 从脚本文件读取awk
4.-m[fr] val 对val值设置内在限制,-mf选项限制分配给val的最大块数目;-mr选项限制记录的最大数目。这两个共嗯那个是Bell实验室版本awk的扩展功能,在标准awk中并不适用

四、apache日志分析处理的示例

1.当前Web服务器中连接次数最多的IP

netstat -nut | awk '{print $5}' | sort | uniq -c | sort -nr

2.查看日志中访问次数最多的前10个IP

cat access_log |cut -d ' ' -f 1 |sort |uniq -c | sort -nr | awk '{print $0 }' | head -n 10 |less

3.查看日志中出现100次以上的IP

cat access_log |cut -d ' ' -f 1 |sort |uniq -c | awk '{if ($1 > 100) print $0}'|sort -nr |less

4.查看最近访问量最高的文件

cat access_log |tail -10000|awk '{print $7}'|sort|uniq -c|sort -nr|less

5.查看日志中访问超过100次的页面

cat access_log | cut -d ' ' -f 7 | sort |uniq -c | awk '{if ($1 > 100) print $0}' | less

6.统计某URL,一天的访问次数

 cat access_log|grep '12/Aug/2009'|grep '/images/index/e1.gif'|wc|awk '{print $1}' 

7.前五天的访问次数最多的网页

cat access_log|awk '{print $7}'|uniq -c |sort -n -r|head -20

8.从日志查看某个IP都在做什么

cat access_log | grep 218.66.36.119| awk '{print $1"\t"$7}' | sort | uniq -c | sort -nr | less

9.列出传输时间超过30秒的文件

cat access_log|awk '($NF > 30){print $7}' |sort -n|uniq -c|sort -nr|head -20

10.列出最耗上时间的页面(超过60秒)

cat access_log |awk '($NF > 60 && $7~/\.php/){print $7}' |sort -n|uniq -c|sort -nr|head -100

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注