`
chinamming
  • 浏览: 141173 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

awk分析nginx日志,获取pv

 
阅读更多

最近在深入系统运维的事情,从服务器配置、调优、维护,到各种脚本编写。实现自动化智能运维的目标还要很远。

从nginx的日志中分析每日有效的pv和各搜索引擎爬虫的请求数。脚本用awk实现。

函数库文件 stat_func.sh

  1. #!/bin/bash
  2. stat_log_path=/usr/local/qqsa/result
  3. stat_nginx_log()
  4. {
  5. localbasename=`basename$1`
  6. localnewfile="${stat_log_path}/${basename%%.*}.pv.`date+'%Y-%m-%d'`"
  7. awk-F/"'
  8. {
  9. if($2~/css|txt|ico/)res["static"]++;
  10. elseif($6~/Baiduspider/){res["baidu"]++;res["spider"]++;}
  11. elseif($6~/Googlebot/){res["google"]++;res["spider"]++;}
  12. elseif($6~/Yahoo!Slurp/){res["yahoo"]++;res["spider"]++;}
  13. elseif($6~/Sogouwebspider/){res["sogou"]++;res["spider"]++;}
  14. elseif($6~/Sosospider/){res["soso"]++;res["spider"]++;}
  15. elseif($6~/YodaoBot/){res["youdao"]++;res["spider"]++;}
  16. elseif($6~/msnbot/){res["msnbot"]++;res["spider"]++;}
  17. elseif($6~/iaskspider/){res["sina"]++;res["spider"]++;}
  18. elseres["good"]++;
  19. }
  20. END{
  21. for(iteminres)printitem":"res[item]
  22. }'$1>$newfile
  23. }

执行文件 stat_every_day.sh

  1. #!/bin/bash
  2. ../stat_func.sh
  3. date=`date+'%Y-%m-%d'`
  4. find/data/cs_log_backup/${date}-name"*.access.*"|/
  5. whilereadfile
  6. do
  7. $(stat_nginx_log"$file")
  8. done

crontab -e

最下面增加一行

00 3 * * * /usr/local/maintain/stat_every_day.sh > /dev/null 2 >& 1

参考文献:

http://tech.foolpig.com/2008/07/09/linux-shell-char/ shell字符串的截取

http://storysky.blog.51cto.com/628458/270671用AWK来过滤nginx日志中的特定值

http://storysky.blog.51cto.com/628458/271560用SED+AWK来分析NGINX日志

http://book.douban.com/subject/1236944/sed与awk

转载http://blog.csdn.net/LongMarch12/archive/2011/02/24/6204550.aspx

最近在深入系统运维的事情,从服务器配置、调优、维护,到各种脚本编写。实现自动化智能运维的目标还要很远。

从nginx的日志中分析每日有效的pv和各搜索引擎爬虫的请求数。脚本用awk实现。

函数库文件 stat_func.sh

  1. #!/bin/bash
  2. stat_log_path=/usr/local/qqsa/result
  3. stat_nginx_log()
  4. {
  5. localbasename=`basename$1`
  6. localnewfile="${stat_log_path}/${basename%%.*}.pv.`date+'%Y-%m-%d'`"
  7. awk-F/"'
  8. {
  9. if($2~/css|txt|ico/)res["static"]++;
  10. elseif($6~/Baiduspider/){res["baidu"]++;res["spider"]++;}
  11. elseif($6~/Googlebot/){res["google"]++;res["spider"]++;}
  12. elseif($6~/Yahoo!Slurp/){res["yahoo"]++;res["spider"]++;}
  13. elseif($6~/Sogouwebspider/){res["sogou"]++;res["spider"]++;}
  14. elseif($6~/Sosospider/){res["soso"]++;res["spider"]++;}
  15. elseif($6~/YodaoBot/){res["youdao"]++;res["spider"]++;}
  16. elseif($6~/msnbot/){res["msnbot"]++;res["spider"]++;}
  17. elseif($6~/iaskspider/){res["sina"]++;res["spider"]++;}
  18. elseres["good"]++;
  19. }
  20. END{
  21. for(iteminres)printitem":"res[item]
  22. }'$1>$newfile
  23. }

执行文件 stat_every_day.sh

  1. #!/bin/bash
  2. ../stat_func.sh
  3. date=`date+'%Y-%m-%d'`
  4. find/data/cs_log_backup/${date}-name"*.access.*"|/
  5. whilereadfile
  6. do
  7. $(stat_nginx_log"$file")
  8. done

crontab -e

最下面增加一行

00 3 * * * /usr/local/maintain/stat_every_day.sh > /dev/null 2 >& 1

参考文献:

http://tech.foolpig.com/2008/07/09/linux-shell-char/ shell字符串的截取

http://storysky.blog.51cto.com/628458/270671用AWK来过滤nginx日志中的特定值

http://storysky.blog.51cto.com/628458/271560用SED+AWK来分析NGINX日志

http://book.douban.com/subject/1236944/sed与awk

转载http://blog.csdn.net/LongMarch12/archive/2011/02/24/6204550.aspx

分享到:
评论

相关推荐

    awk测试从nginx查询qps的测试日志.log

    awk测试从nginx查询qps的测试日志

    java版本awk日志分析

    环境:linux 优点:可分析大日志,大量文件,避免java分析大日志的数据量过大导致的内存泄漏问题。 高效,调用linux shell预筛选,不需... 快速,2-3G的文件可在几十秒内完成筛选,相对java代码分析日志速度明显提升。

    Nginx日志统计分析的常用命令总结

    本文主要给大家总结了关于Nginx日志统计分析的一些常用命令,分享出来供大家参考学习,下面来一起看看详细的介绍: 一、IP相关统计 统计IP访问量 awk '{print $1}' access.log | sort -n | uniq | wc -l 查看某一...

    分析nginx日志并屏蔽采集者ip(nginx屏蔽ip配置实例)

    awk ‘{print $1}’ nginx.access.log |sort |uniq -c|sort -n nginx.access.log 为日志文件, 会到如下结果,前面是ip的访问次数,后面是ip,很明显我们需要把访问次数多的ip并且不是蜘蛛的ip屏蔽掉,本例当中我们...

    多线程自定义规则 Nginx Access Log 分析器(比AWK快)

    多线程自定义规则 Nginx Access Log 分析器(比AWK快)

    linux下shell处理nginx日志自动生成ip黑名单

    #shell脚本处理nginx日志自动生成ip黑名单 ##统计访问量前10名的ip并写入文件 #!/bin/bash data=`date +%Y-%m-%d` #统计访问量最高的前10ip awk '{print $1}' '/PATH/'$data'.log' | sort -n |uniq -c | sort -rn | ...

    awk-for-apache-nginx-logs:适用于Apache Nginx日志的AWK

    该awk脚本处理的日志格式与Apache和Nginx Web服务器经常使用的“组合”日志相匹配。 如果您的日志文件格式不同,请进行相应的修改,但这是此脚本默认期望的组合格式,以供参考: %h %l %u %t "%r" %>s %b "%{...

    awk学习awk学习awk学习awk学习

    awk学习awk学习awk学习awk学习awk学习awk学习awk学习

    Oracle ass.awk工具

    ass.awk工具用在数据库hang住时分析收集到的systemstate所用,可以清晰明了的查看systemstate中的信息; 命令简单: $ awk -f ass1033.awk [trace_name_file] 在系统hung的时候,systemstate基本等同于hanganalyze...

    AWK用法AWK用法AWK用法

    awk ‘/101/’ file 显示文件file中包含101的匹配行。 awk ‘/101/,/105/’ file awk ‘$1 == 5′ file awk ‘$1 == “CT”‘ file 注意必须带双引号 awk ‘$1 * $2 >100 ‘ file awk ‘$2 >5 && $2<=15' file

    awk入门到精通.pdf

    此外, awk内建有pipe的功能, 可将处理中的数据传送给外部 的 Shell命令加以处理, 再将Shell命令处理后的数据传回awk程序, 这个特点也使得awk程序很 容易使用系统资源. 由于awk具有上述特色, 在问题处理的过程中, 可...

    AWK AWK 详细使用文档

    AWK 详细使用文档 AWK 详细使用文档 AWK 详细使用文档

    NS2 分析网络性能的AWK文件

    自己编写的经过验证的AWK文件, 用于分析NS2中的TRACE文件,来 解析网络性能,保证可以用,但是不同的 机子会有不同的效果,大家改一些绝对可以用。

    学习和理解AWK的最佳书籍Effective AWK Programming

    学习和理解AWK的最佳书籍  一致这本书是学习awk的最好书籍,网上下不到的,国内也买不到。国家图书馆和北京大学图书馆都有。强烈建议所有想学awk的同志们阅读(会有很多awk语言之外的启迪) 偶然机会得到,不敢独享...

    linux Nginx 日志脚本

    nginx 日志 ls /var/log/nginx/ 20130730-access.log.gz 20130801-access.log.gz 20130803-access.log.gz 20130730-error.log.gz 20130801-error.log.gz 20130803-error.log.gz 20130731-access.log.gz ...

    awk参考资料下载awk

    awk参考资料, awk参考资料详情.

    awk详细用法小结awk awk

    因为遇到了awk问题,所以找到这个小结,共享一下

    shell 处理apache日志入库

    shell 处理apache日志入库 awk分析apache日志为*.sql文件 sqlplus写入oracle

    apache日志分析系统awStats完全教材

    apache,日志,分析系统,awStats,完全教材

    awk用法小结--有关awk的材料

    awk用法小结 - - - by ruson 2006.4 NTU 1. awk非常适合于结构化的文本文件(行、列数据)复杂处理。相对于sed而言,它可进行复杂的编程处理,并且可以产生复杂的报表输出。 2. awk通常有三个版本,旧awk、nawk...

Global site tag (gtag.js) - Google Analytics