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

[经验分享] awk分析nginx日志,获取pv

[复制链接]

尚未签到

发表于 2016-12-25 11:42:06 | 显示全部楼层 |阅读模式
  最近在深入系统运维的事情,从服务器配置、调优、维护,到各种脚本编写。实现自动化智能运维的目标还要很远。
  从nginx的日志中分析每日有效的pv和各搜索引擎爬虫的请求数。脚本用awk实现。
  函数库文件 stat_func.sh
[c-sharp] view plaincopyprint?


  • #!/bin/bash
  • stat_log_path=/usr/local/qqsa/result
  • stat_nginx_log()
  • {
  • localbasename=`basename$1`
  • localnewfile="${stat_log_path}/${basename%%.*}.pv.`date+'%Y-%m-%d'`"
  • awk-F/"'
  • {
  • if($2~/css|txt|ico/)res["static"]++;
  • elseif($6~/Baiduspider/){res["baidu"]++;res["spider"]++;}
  • elseif($6~/Googlebot/){res["google"]++;res["spider"]++;}
  • elseif($6~/Yahoo!Slurp/){res["yahoo"]++;res["spider"]++;}
  • elseif($6~/Sogouwebspider/){res["sogou"]++;res["spider"]++;}
  • elseif($6~/Sosospider/){res["soso"]++;res["spider"]++;}
  • elseif($6~/YodaoBot/){res["youdao"]++;res["spider"]++;}
  • elseif($6~/msnbot/){res["msnbot"]++;res["spider"]++;}
  • elseif($6~/iaskspider/){res["sina"]++;res["spider"]++;}
  • elseres["good"]++;
  • }
  • END{
  • for(iteminres)printitem":"res[item]
  • }'$1>$newfile
  • }

#!/bin/bashstat_log_path=/usr/local/qqsa/resultstat_nginx_log(){local basename=`basename $1`local newfile="${stat_log_path}/${basename%%.*}.pv.`date +'%Y-%m-%d'`"awk -F/" '{if( $2 ~ /css|txt|ico/ ) res["static"]++;else if ( $6 ~ /Baiduspider/ ) {res["baidu"]++;res["spider"]++;}else if ( $6 ~ /Googlebot/ ) {res["google"]++;res["spider"]++;}else if ( $6 ~ /Yahoo! Slurp/) {res["yahoo"]++;res["spider"]++;}else if ( $6 ~ /Sogou web spider/) {res["sogou"]++;res["spider"]++;}else if ( $6 ~ /Sosospider/) {res["soso"]++;res["spider"]++;}else if ( $6 ~ /YodaoBot/) {res["youdao"]++;res["spider"]++;}else if ( $6 ~ /msnbot/) {res["msnbot"]++;res["spider"]++;}else if ( $6 ~ /iaskspider/) {res["sina"]++;res["spider"]++;}else res["good"]++;}END {for(item in res) print item ":" res[item] }' $1 > $newfile}  执行文件 stat_every_day.sh
[c-sharp] view plaincopyprint?


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

#!/bin/bash. ./stat_func.shdate=`date +'%Y-%m-%d'`find /data/cs_log_backup/${date} -name "*.access.*" | /while read filedo$( stat_nginx_log "$file" )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.iyunv.com/628458/270671用AWK来过滤nginx日志中的特定值
  http://storysky.blog.iyunv.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
[c-sharp] view plaincopyprint?


  • #!/bin/bash
  • stat_log_path=/usr/local/qqsa/result
  • stat_nginx_log()
  • {
  • localbasename=`basename$1`
  • localnewfile="${stat_log_path}/${basename%%.*}.pv.`date+'%Y-%m-%d'`"
  • awk-F/"'
  • {
  • if($2~/css|txt|ico/)res["static"]++;
  • elseif($6~/Baiduspider/){res["baidu"]++;res["spider"]++;}
  • elseif($6~/Googlebot/){res["google"]++;res["spider"]++;}
  • elseif($6~/Yahoo!Slurp/){res["yahoo"]++;res["spider"]++;}
  • elseif($6~/Sogouwebspider/){res["sogou"]++;res["spider"]++;}
  • elseif($6~/Sosospider/){res["soso"]++;res["spider"]++;}
  • elseif($6~/YodaoBot/){res["youdao"]++;res["spider"]++;}
  • elseif($6~/msnbot/){res["msnbot"]++;res["spider"]++;}
  • elseif($6~/iaskspider/){res["sina"]++;res["spider"]++;}
  • elseres["good"]++;
  • }
  • END{
  • for(iteminres)printitem":"res[item]
  • }'$1>$newfile
  • }

#!/bin/bashstat_log_path=/usr/local/qqsa/resultstat_nginx_log(){local basename=`basename $1`local newfile="${stat_log_path}/${basename%%.*}.pv.`date +'%Y-%m-%d'`"awk -F/" '{if( $2 ~ /css|txt|ico/ ) res["static"]++;else if ( $6 ~ /Baiduspider/ ) {res["baidu"]++;res["spider"]++;}else if ( $6 ~ /Googlebot/ ) {res["google"]++;res["spider"]++;}else if ( $6 ~ /Yahoo! Slurp/) {res["yahoo"]++;res["spider"]++;}else if ( $6 ~ /Sogou web spider/) {res["sogou"]++;res["spider"]++;}else if ( $6 ~ /Sosospider/) {res["soso"]++;res["spider"]++;}else if ( $6 ~ /YodaoBot/) {res["youdao"]++;res["spider"]++;}else if ( $6 ~ /msnbot/) {res["msnbot"]++;res["spider"]++;}else if ( $6 ~ /iaskspider/) {res["sina"]++;res["spider"]++;}else res["good"]++;}END {for(item in res) print item ":" res[item] }' $1 > $newfile}  执行文件 stat_every_day.sh
[c-sharp] view plaincopyprint?


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

#!/bin/bash. ./stat_func.shdate=`date +'%Y-%m-%d'`find /data/cs_log_backup/${date} -name "*.access.*" | /while read filedo$( stat_nginx_log "$file" )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.iyunv.com/628458/270671用AWK来过滤nginx日志中的特定值
  http://storysky.blog.iyunv.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

运维网声明 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.iyunv.com/thread-319176-1-1.html 上篇帖子: Nginx的安装及配置简介 下篇帖子: Nginx+keepalived双机互备
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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