今天在把app proxy平均响应时间加入支撑平台时发现一个问题。同事写的shell脚本和我之前写的shell脚本,所有的app统计结果基本都一致,唯有通知app不一样(同事写的shell脚本, 通知app的平均响应时间居然提高了3倍),难道是我之前写的统计有误?又或者是经过二周,通知系统的响应时间确实提高啦?不肯相信,于是查找原因。
Log日志数据结构
2011-11-10 20:05:42,037 INFO [ProxyLogger] LogInfo [accessTime=2011-11-10 20:05:42, totalTime=15, accessType=2, app=blog, requestUrl
=http://proxy.i.sohu.com/blog/home/entry/edit.htm?_xpt=eWV6aTY3MDUwM0Bzb2h1LmNvbQ==&service=blog&pathinfo=home/entry/edit.htm&id=190
977755, resultCode=200, from=2]
2011-11-10 20:05:46,765 INFO [ProxyLogger] LogInfo [accessTime=2011-11-10 20:05:46, totalTime=7, accessType=2, app=setting, requestU
rl=http://proxy.i.sohu.com/setting/home/privacy.htm?_xpt=bWFveml5dW5Ac29odS5jb20=&service=setting&pathinfo=home/privacy.htm, resultC
ode=200, from=2]
2011-11-10 20:05:47,925 INFO [ProxyLogger] LogInfo [accessTime=2011-11-10 20:05:47, totalTime=14, accessType=2, app=profile, request
Url=http://proxy.i.sohu.com/profile/home/swfUploadIcon.htm?_xpt=cXExNTU2MjA1NTYwQHNvaHUuY29t&service=profile&pathinfo=home/swfUpload
Icon.htm, resultCode=200, from=2]
2011-11-10 20:05:50,039 INFO [ProxyLogger] LogInfo [accessTime=2011-11-10 20:05:50, totalTime=8, accessType=2, app=request, requestU
rl=http://proxy.i.sohu.com/request/home/inform/deal.htm?_xpt=bGluaGFpc2hlbmNodTEyM0Bzb2h1LmNvbQ==&service=request&pathinfo=home/info
rm/deal.htm&id=30293269&type=inform_circle, resultCode=200, from=2]
2011-11-10 20:05:56,558 INFO [ProxyLogger] LogInfo [accessTime=2011-11-10 20:05:56, totalTime=8, accessType=2, app=blog, requestUrl=
http://proxy.i.sohu.com/blog/home/entry/index.htm?_xpt=MTY0MzIzOTEwNkBxcS5jb20=&service=blog&pathinfo=home/entry/index.htm, resultCo
de=200, from=2]
2011-11-10 20:05:57,361 INFO [ProxyLogger] LogInfo [accessTime=2011-11-10 20:05:57, totalTime=14, accessType=2, app=album, requestUr
l=http://proxy.i.sohu.com/album/home/latest/?_xpt=eGluZ2tvbmd4aW5saW5nQHNvaHUuY29t&service=album&pathinfo=home/latest/, resultCode=2
00, from=2]
shell脚本
DATE=`date +"%Y%m%d" -d "-1 days"`
if [ "$1" != "" ];then
DATE=$1
fi
echo "date:"$DATE
apps=`cat proxylog.log.$DATE |awk -F"," '{print $5}'|awk -F"=" '{++s[$2]}END{for(a in s){print a}}'`
for app in $apps;do
#同事写的
stats=`cat proxylog.log.$DATE |grep $app |awk -F"," '{print $3}'|awk -F"=" '{i++;t=t+$2}END{printf int(t/i)}'`
echo "$app $stats"
#我原来写的
stats2=`cat proxylog.log.$DATE |awk -v app=$app -F , '$5==" app="app {print$3}'|awk -F = '{sum+=$2;j++};END{print int(sum/(j))}'`
echo "$app $stats2"
done
统计结果
[@105.165 suc-home]# sh proxylog.sh
date:20111110
album 53
album 53
blog 14
blog 14
request 41
request 135
discuss 90
discuss 90
guestbook 19
guestbook 19
scomment 17
scomment 17
setting 7
setting 7
profile 38
profile 38
video 10
video 10
原因分析
一开始以为是grep 和awk的区别,后来发现不是。抽了半个多小时,发现同事的脚本
stats=`cat proxylog.log.$DATE |grep $app |awk -F"," '{print $3}'|awk -F"=" '{i++;t=t+$2}END{printf int(t/i)}'`
#app为blog,mblog,album,request等
#所以grep $app时为匹配所有request.
2011-11-10 20:06:02,930 INFO [ProxyLogger] LogInfo [accessTime=2011-11-10 20:06:02, totalTime=7, accessType=2, app=blog, requestUrl=
http://proxy.i.sohu.com/blog/home/entry/index.htm?_xpt=MTMyNTYyNDY4OUBxcS5jb20=&service=blog&pathinfo=home/entry/index.htm, resultCo
de=200, from=2]
我们可以看到log数据文件app=blog时也加入统计了,所以一平均就是41了,因为每条log都有
requestUrl关键字,所以相当于统计了所有app的平均响应时间。
记录一下,备忘。
Awk还是很强大的,linux日志统计必备之佳品呀。
分享到:
相关推荐
常用linux命令在windows环境下使用 windows grep awk sed cat
sed awk grep sed awk grepsed awk grep sed awk grep sed awk grep sed awk grep sed awk grep sed awk grep sed awk grep
shell编程,sed,awk,grep等教程
最头疼的是,这些重复部分的语法还各不相同,(比如 grep awk sed 都有正则表达式匹配的功能,但是三者的正则表达式语法就不相同) 最最最头疼的是,每个工具还分 GNU 版和不是 GNU 版,之间的差别也很大, 最最最最...
在企业工作中,每天做的Linux运维工作中,时刻都会面对大量带有字符串的文本配置、程序、命令输出及日志文件等,而我们经常会有迫切的需要,从大量的字符串内容中查找符合工作需要的特定字符串。...
主要减少linux系统中的查询三剑客grep,awk,sed的使用方法和详解,适合linux初学进行学习,适合在日常对于文本内容或者命令执行结果的搜索,可以完善和简便自己的工作内容和完善对于shell脚本的使用。
grep -n “” test1.sh|awk -F: ‘{print ‘}|tail -n1 如图所示: 方法四 代码如下: sed -n ‘$=’ test1.sh 如图所示: 方法五 代码如下: wc -l test1.sh 如图所示: 方法六 代码如下: #cat test1.sh |wc -l...
linux grep sed awk命令的综合运用以及详解
Grep (global search regular [removed]RE) and print out the line,全面搜索正则表达式并 把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印 出来。Grep家族包括Grep、 eGrep...
第16章 shell脚本介绍 151 第17章 条件测试 154 第18章 控制流结构 160 第19章 shell函数 202 第20章 向脚本传递参数 224 第21章 创建屏幕输出 236 第22章 创建屏幕输入 252 第23章 调试脚本 274 第24章 shell嵌入...
本文主要对linux-shell脚本命令中的grep命令进行简介,希望对您有所帮助。
linux shell grep从入门到精通
15Shell编程之函数及脚本案例讲解 16Shell编程之函数及脚本案例讲解 17Linux下Shell编程FIND、SED命令实战 18Linux下Shell编程FIND、SED命令实战 19Shell编程之awk、sed演练 20Shell编程之awk、sed演练( 21Shell编程...
grep、sed、awk、perl等对正则表达式的支持的差别,大牛总结的,适合高手参考用。
linux的强大的文本处理工具grep,sed,awk(文本处理三剑客)
主要介绍了Shell正则表达式之grep、sed、awk实操笔记,本文使用grep、sed、awk配合正则达到了一些需求和目的,需要的朋友可以参考下
(1)掌握linux “三剑客”grep、sed、awk的使用方法; (2)掌握bshell脚本编程基本规则、函数及控制结构
主要介绍了shell脚本之正则表达式、grep、sed、awk的相关知识,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
windows下的grep、sed、awk
文章目录前言一、什么是shellshell脚本大白话二、shell常用操作三、文本处理三剑客 — 搜索工具grep1.什么是grep2.格式3.主要参数4.pattern正则表达式主要参数:5. grep使用实例四、文本处理三剑客 — 流编辑器sed1....