- 论坛徽章:
- 0
|
給阿骁兄的賀禮二: DNS 流量統計~超強版
首先感谢abel 带来了这么好的一个主意。在看了这篇帖子后,我马上就将我手上的dns全部变成了abel的修改版本,并通过rndc -s server status进行监控。
但我发现有个问题,abel 兄可能忽略了,那就是dns进程可能会重启,重启后通过rndc -s server status来看到的query和reply的数都被归0了,mrtg就不知道怎么运算了。从监控图上看,还以为是dns死了呢。说实话,当时确实吓我一跳。
于是我就自做主张重新写了个脚本,由于我对perl不熟,就用sh来写了。在这里贴出来,希望对大家有所帮助。
#cat dns_flow.sh
#!/usr/bin/sh
TMPDATAFILE="/var/named/.${1}.tmp"
RUN_1=0
query_old=0
reply_old=0
if [ -f $TMPDATAFILE ]
then
RUN_1=1
query_old=`head -2 $TMPDATAFILE|tail -1 |awk '{print $4}'`
reply_old=`head -3 $TMPDATAFILE|tail -1 |awk '{print $4}'`
fi
/usr/local/sbin/rndc -s $1 status >;$TMPDATAFILE
query=`head -2 $TMPDATAFILE|tail -1 |awk '{print $4}'`
reply=`head -3 $TMPDATAFILE|tail -1 |awk '{print $4}'`
if [ $query -gt $query_old ] !! [ $reply -gt $reply_old ]
then
query=`expr $query - $query_old`
reply=`expr $reply - $reply_old`
fi
if [ $RUN_1 -eq 0 ]
then
#first time to run
printf "0\n0\n"
else
printf "$query\n$reply\n"
fi
这时候mrtg的配置文件也要修改一下,表明采到的数据是absolute类型的。
cat dns.cfg
# for UNIX
WorkDir: /usr/local/apache/htdocs/mrtg/html/dns
# or for NT
# WorkDir: c:\mrtgdata
### Global Defaults
# to get bits instead of bytes and graphs growing to the right
Options[_]: growright, noinfo,nopercent,integer,absolute
MaxBytes[_]: 10000
Legend1[_]: DNS查询(次数/秒)
Legend2[_]: DNS回应(次数/秒)
LegendI[_]: DNS查询
LegendO[_]: DNS回应
ShortLegend[_]:次/秒
YLegend[_]: Q. per second
PageTop[_]: <h1>;DNS_Server Query/Response</h1>;
#---------------------------------------------------------------
Target[DNS_Server1]: `/var/named/dns_flow.pl 192.168.1.2`
Title[DNS_Server1]: mydns1
Target[DNS_Server2]: `/var/named/dns_flow.pl 192.168.1.3`
Title[DNS_Server2]: mydns2
.
.
. |
|