- 论坛徽章:
- 0
|
我在做一个DNS流量的统计脚本
首先定时用rndc stats执行生成一个文件 named.stats,内容如下:
+++ Statistics Dump +++ (1169740800)
success 10671130
referral 18368
nxrrset 118829
nxdomain 1019004
recursion 4093270
failure 906487
--- Statistics Dump --- (1169740800)
+++ Statistics Dump +++ (1169827200)
success 23922851
referral 35336
nxrrset 291352
nxdomain 1582219
recursion 9392071
failure 1616376
--- Statistics Dump --- (1169827200)
+++ Statistics Dump +++ (1169913600)
success 37991579
referral 64897
nxrrset 514053
nxdomain 2149104
recursion 14970366
failure 2351988
--- Statistics Dump --- (1169913600)
+++ Statistics Dump +++ (1170000000)
success 50707422
referral 101201
nxrrset 719085
nxdomain 2618247
recursion 20528779
failure 3087166
--- Statistics Dump --- (1170000000)
+++ Statistics Dump +++ (1170086391)
success 64218303
referral 128841
nxrrset 899490
nxdomain 3249586
recursion 26343193
failure 3943782
--- Statistics Dump --- (1170086391)
然后我用一个脚本stat_dns.sh,对这个文件进行操作,脚本如下:
#!/sbin/sh
cd /
cd /var/named
date >> stat_dns.txt
tail -15 named.stats|awk '/---/ {print $5}'|awk '{FS="("} {print $2}'|awk '{FS=")"} {print $1}'|awk '{printf"%s ",$0}'>test1
uccess_a=`more test1|awk '{print $1}'`
uccess_b=`more test1|awk '{print $2}'`
uccess=`expr $uccess_b - $uccess_a`
tail -15 named.stats|awk '{print $2}'|awk '{printf"%s ",$0}' > test2
success_a=`more test2|awk '{print $1}'`
success_b=`more test2|awk '{print $9}'`
success=`expr $success_b - $success_a`
echo success , $success >> stat_dns.txt
referral_a=`more test2|awk '{print $2}'`
referral_b=`more test2|awk '{print $10}'`
referral=`expr $referral_b - $referral_a`
echo referral , $referral >> stat_dns.txt
nxrrset_a=`more test2|awk '{print $3}'`
nxrrset_b=`more test2|awk '{print $11}'`
nxrrset=`expr $nxrrset_b - $nxrrset_a`
echo nxrrset , $nxrrset >> stat_dns.txt
nxdomain_a=`more test2|awk '{print $4}'`
nxdomain_b=`more test2|awk '{print $12}'`
nxdomain=`expr $nxdomain_b - $nxdomain_a`
echo nxdomain , $nxdomain >> stat_dns.txt
recursion_a=`more test2|awk '{print $5}'`
recursion_b=`more test2|awk '{print $13}'`
recursion=`expr $recursion_b - $recursion_a`
echo recursion , $recursion >> stat_dns.txt
failure_a=`more test2|awk '{print $6}'`
failure_b=`more test2|awk '{print $14}'`
failure=`expr $failure_b - $failure_a`
totle=`expr $success + $nxrrset + $nxdomain + $failure`
#echo timeless , `expr $uccess / 3600` Hour >> stat_dns.txt
echo Totle , $totle >> stat_dns.txt
echo Query `expr $totle / $uccess`/s >> stat_dns.txt
echo fail , `expr $failure \* 100 / $totle`% >> stat_dns.txt
手工执行得出如下结果:
2007年01月30日 星期二 00时04分34秒 CST
success , 13510881
referral , 27640
nxrrset , 180405
nxdomain , 631339
recursion , 5814414
Totle , 15179241
Query 175/s
fail , 5%
这个结果正是我需要的。
于是,我把这个脚本放到crontab 中每个一段时间执行一次,可是得出的结果却是:
Tue Jan 30 00:10:00 CST 2007
success ,
referral , 27640
nxrrset , 180405
nxdomain , 631339
recursion , 5814414
Totle ,
Query /s
fail , %
有几项没有计算出来,公式是一样的,为什么结果不同呢?
我的是solaris 10操作系统,这个应该没什么影响吧
我比较了两种执行方法的环境变量,都是一样的,没有什么区别,搞了好几个小时,实在搞不定,求助大家!!1 |
|