1、目标
按照要求统计某一时段内nginx日志中各服务的http总请求数、成功数和失败数
2、脚本说明
name变量由调用的shell脚本给出,具体为某一时刻,可以为秒、分、小时、天。
3、awk脚本内容
#!/bin/awk -f
#分类按秒统计nginx日志中request/mts/query20/query30/rvs/rs/mts等等的http总请求数、成功数、错误数
#
BEGIN{
#name变量从shell脚本中获取
nginx[name]=0;
nginx_suc[name]=0;
mts[name]=0;
mts_suc[name]=0;
query20[name]=0;
query20_suc[name]=0;
query30[name]=0;
query30_suc[name]=0;
rvs[name]=0;
rvs_suc[name]=0;
rs[name]=0;
rs_suc[name]=0;
rtei[name]=0;
rtei_suc[name]=0;
#debug
#name="03/Nov/2012:09:00:01";
#print name,argv[1],argv[2]
}
{
#access.log
#第七列为用户请求连接
#统计nginx当前秒的总请求数
nginx[name]++
#统计nginx当前秒的成功总请求数
if($9<400)
{
nginx_suc[name]++
}
#计算mts的当前秒的请求次数
if(substr($7,2,8)=="MTServer")
{
#counter_rs_all数组存放对应rvs数组时间段的RouterServer的请求次数
mts[name]++;
#debug
#print name;
#print rs[name],counter_rs_all[name];
}
#计算mts的当前秒的成功请求次数
if(substr($7,2,8)=="MTServer" && ($9<400))
{
mts_suc[name]++;
#debug
#print name;
#print rs[name],counter_rs_suc[name];
}
#计算query2.0总数
if(substr($7,2,14)=="QueryServer2.0")
{
query20[name]++;
#print name,query20[name];
}
#计算query20成功总数
if(substr($7,2,14)=="QueryServer2.0" && ($9<400))
{
query20_suc[name]++;
#debug
#print name,query20[name];
}
#计算query3.0总请求次数
if(substr($7,2,14)=="QueryServer3.0")
{
query30[name]++;
#debug
#print name,query30[name];
}
#计算query30成功次数
if(substr($7,2,14)=="QueryServer3.0" && ($9<400))
{
query30_suc[name]++;
#debug
#print name,query30_suc[name];
}
#计算rvs总数
if (substr($7,2,11)=="RVServer3.0")
{
rvs[name]++;
#print name,rvs[name];
}
#计算rvs成功总数
if (substr($7,2,11)=="RVServer3.0" && ($9<400))
{
rvs_suc[name]++;
#debug
#print name,rvs_suc[name];
}
#计算rs总请求次数
if(substr($7,2,12)=="RouteServer4")
{
rs[name]++;
#debug
#print name,rs[name];
}
#计算rs成功次数
if(substr($7,2,12)=="RouteServer4" && ($9<400))
{
rs_suc[name]++;
#debug
#print name,rs_suc[name];
}
#计算rtei总请求次数
if(substr($7,2,10)=="RTEIServer")
{
rtei[name]++;
#debug
#print name,rtei[name];
}
#计算rtei成功次数
if(substr($7,2,10)=="RTEIServer" && ($9<400))
{
rtei_suc[name]++;
#debug
#print name,rtei_suc[name];
}
#计算advert总请求次数
if(substr($7,2,14)=="navidog2Advert")
{
advert[name]++;
#debug
#print name,advert[name];
}
#计算advert成功次数
if(substr($7,2,14)=="navidog2Advert" && ($9<400))
{
advert_suc[name]++;
#debug
#print name,advert_suc[name];
}
#计算navidog2Goods总请求次数
if(substr($7,2,13)=="navidog2Goods")
{
goods[name]++;
#debug
#print name,goods[name];
}
#计算navidog2Goods成功次数
if(substr($7,2,13)=="navidog2Goods" && ($9<400))
{
goods_suc[name]++;
#debug
#print name,goods_suc[name];
}
#计算http 400次数
if ($9==400)
{
http400++;
#debug
#print http400;
}
#计算VoiceInfoServer请求次数
if (substr($7,2,15)=="VoiceInfoServer")
{
voiceinfo[name]++;
#debug
#print name,voiceinfo[name];
}
#计算VoiceInfoServer请求成功次数
if (substr($7,2,15)=="VoiceInfoServer" && ($9<400))
{
voiceinfo_suc[name]++;
#debug
#print name,voiceinfo_suc[name];
}
}
END{
#打印统计结果,
print name,nginx[name]+0,nginx_suc[name]+0,mts[name]+0,mts_suc[name]+0,query20[name]+0,query20_suc[name]+0,query30[name]+0,query30
_suc[name]+0,rvs[name]+0,rvs_suc[name]+0,rs[name]+0,rs_suc[name]+0,rtei[name]+0,rtei_suc[name]+0,advert[name]+0,advert_suc[name]+0,goods[n
ame]+0,goods_suc[name]+0,http400+0,voiceinfo[name]+0,voiceinfo_suc[name]+0
}
阅读(3440) | 评论(0) | 转发(0) |