作者 主題: MRTG/RRDTOOL --- DNS 流量統計  (閱讀 30211 次)

0 會員 與 1 訪客 正在閱讀本文。

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
MRTG/RRDTOOL --- DNS 流量統計
« 於: 2003-07-02 15:20 »
這種流量統計的資訊對一般人可能沒有用
但對和網路相關的行業而言或許有用也不一定

[root@pc071 etc]# rndc-confgen
# Start of rndc.conf 設定一 rndc.conf ,建議與 named.conf 同一目錄
key "rndc-key" {
        algorithm hmac-md5;
        secret "lnWw5u3Jlr/8jaTpjfWF6w==";
};

options {
        default-key "rndc-key";
        default-server 127.0.0.1;
        default-port 953;
};
#在 named.conf 中加入如下設定
 controls {
       inet 127.0.0.1 port 953
               allow { 127.0.0.1; } keys { "rndc-key"; };

在啟動 DNS 後,即可使用 rndc 來檢測系統
 
[root@pc071 etc]# rndc
Usage: rndc [-c config] [-s server] [-p port]
        [-k key-file ] [-y key] [-V] command

command is one of the following:

  reload        Reload configuration file and zones.
  reload zone [class [view]]
                Reload a single zone.
  refresh zone [class [view]]
                Schedule immediate maintenance for a zone.
  reconfig      Reload configuration file and new zones only.
  stats         Write server statistics to the statistics file.
  querylog      Toggle query logging.
  dumpdb        Dump cache(s) to the dump file (named_dump.db).
  stop          Save pending updates to master files and stop the server.
  halt          Stop the server without saving pending updates.
  trace         Increment debugging level by one.
  trace level   Change the debugging level.
  notrace       Set debugging level to 0.
  flush         Flushes all of the server's caches.
  flush [view]  Flushes the server's cache for a view.
  status        Display status of the server.
  *restart      Restart the server.


就本章主題而言,我們要了解的是流量,故可使用下列指令來看:
rndc –c /etc/rndc.conf –s localhost stats

此時會產生三個檔案於 directory 的目錄裏,我們就其中的 named.stats 來看其內容
[root@pc071 named]# cat named.stats
+++ Statistics Dump +++ (1050394961)
success 4087      #查詢成功的量
referral 0      #referral 的量
nxrrset 0      #找不到記錄的量
nxdomain 56421   #找不到網域名稱
recursion 6765   #遞迴查詢次數
failure 6722      #失敗的量
--- Statistics Dump --- (1050394961)
+++ Statistics Dump +++ (1050395022)
success 4087
referral 0
nxrrset 0
nxdomain 56423
recursion 6765
failure 6722
--- Statistics Dump --- (1050395022)
上述例子中,Statistics 中間的值為每一次 stats 之狀況,而我們若欲有精確而有效的查詢與回應統計,除了時間因素要考量外,尚需注意這些值的意涵:
查詢數:全部數值總合
回應數:除 failure 外之總合
上述的格式是固定的,故我們可以準備一套方法來產生其流量資料,
我們可以產生 mrtg 格式之記錄

#dns-flow.sh
rndc -s localhost -c /etc/rndc.conf stats  #產生 namd.stats 供統計用
sum=0
#查詢量
for c in `cut -f 2 -d' ' /var/named/named.stats | tail -7 | head -6 `   #取得數值部份
do
sum=`expr $sum + $c`      #加總
done
echo $sum            #stdout 供 mrtg 使用
sum=0
#回應量
for c in `cut -f 2 -d' ' /var/named/named.stats | tail -7 | head -5 `
do
sum=`expr $sum + $c`
done
echo $sum
上述僅是一個簡短的 Shell Script,我們可以將其加到排程中,讓其固定時間可以產生結果:

 
使用 mrtg
如果您上面都了解了,這一節的設定其實就會很簡單,本節並教授 mrtg 的安裝,僅列出 mrtg 的設定供您參考,詳細 mrtg 的設定您可用搜尋引擎找到許多,或直接參考官方網站 http://www.mrtg.org
#/usr/local/etc/mrtg
#…前略
Target[xxx.com.tw]: `sh dns-flow.sh `
MaxBytes[xxx.com.tw]: 2500
Title[xxx.com.tw]: xxx.com.tw
Legend1[xxx.com.tw]: DNS查詢(次數/秒)
Legend2[xxx.com.tw]: DNS回應(次數/秒)
LegendI[xxx.com.tw]: DNS查詢
LegendO[xxx.com.tw]: DNS回應
YLegend[xxx.com.tw]: Q. per second
PageTop[xxx.com.tw]: <h1>xxx.com.tw</h1>
  <table>
  <tr><td>位  置:</td><td>….</td></tr>
  <tr><td>負 責 人:</td><td>….</td></tr>
  <tr><td>電話:</td><td>….</td></tr>
  </table>
# ..後略

   搭配 mrtg 及 dns-flow,我們可以定一個更完整的排程,以讓 mrtg 產生正確的流量資料:
   # crontab job
   */5 * * * * /usr/local/bin/mrtg /use/local/etc/mrtg.cfg


如果一切設定皆無問題,您即可以 Broswer 連到 mrtg 網頁查看,
而若您意欲於圖上顯示多條不同線形資料(如:Success/Recursion..等六類),
則您可參考 rrdtools(http://www.rrdtool.org) 之用法,
於 mrtg 的網站上可以找到資料或相關連結。


那如果 Nameserver 有多部怎麼辨 ~~這種問題用類似 FTP 的方法解決就可以了
如果你有做研究的打算, 你還可以試試 A/NS/MX/...等不同 RR 的流量統計
或是將 TTL 值做一個變化,藉以觀察 TTL 值對 DNS 查詢量的影響
你會發現 TTL 值設多少對你的網路有一個最佳解

補允一下, bind 的 source code 中附了一個工具
bind-9.2.2/contrib/queryperf
你可以拿這個工具去測你的機器上跑 DNS 的效率
我用 PIII-450/128RAM ,BIND 9.2.2 , 大概可以到 500 Q/s
而且在流量上就可以顥示出來了

beethobear

  • 鑽研的研究生
  • *****
  • 文章數: 539
    • 檢視個人資料
MRTG/RRDTOOL --- DNS 流量統計
« 回覆 #1 於: 2003-07-02 15:52 »
看來我擺出ABEL兄的身份真是對了
對ABEL兄真是只能伸出大拇指
讚呀!!
學員真有福氣

梁楓  你不是在北部要找教師群
ABEL兄有教學經驗歐
又有耐心
有細心
經驗又豐富.......

呵呵
我又出賣ABEL兄了........
BEETHOBEAR  !!
--------------------------------------------------------

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17465
    • 檢視個人資料
    • http://www.study-area.org
MRTG/RRDTOOL --- DNS 流量統計
« 回覆 #2 於: 2003-07-02 16:23 »
又離題了...

不過,真的,若有 abel 兄加入,呵,我們的戰鬥力可真是提升不少呢﹗

abel 萬歲﹗我們需要你哦~~~

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
MRTG/RRDTOOL --- DNS 流量統計
« 回覆 #3 於: 2003-07-02 16:31 »
那裏~
兩位過獎了 ~~
不過最近為了小朋友(尤其是這個因素,大 netman 兄的 baby 半個月),及工作,
簡直操番了 ~~

不過我是很樂意貢獻我知道的給大家參考~~
有時間我就會寫寫教學文件給大家參考

我也是看三年前入行時,看 study-area 起家的
從 netman 來, 再回饋給 study-area 也是應該的

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17465
    • 檢視個人資料
    • http://www.study-area.org
MRTG/RRDTOOL --- DNS 流量統計
« 回覆 #4 於: 2003-07-02 16:38 »
哇﹗才入行三年?就如此利害了...
不得不說:佩服佩服﹗

p.s.
abel 兄不會也是怪物吧....?  ^_^

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
MRTG/RRDTOOL --- DNS 流量統計
« 回覆 #5 於: 2003-07-02 17:12 »
又過獎了 ~~
我是三年前畢業後開始工作時才接觸 Linux (四個月)
(果然,新鮮人第一個工作都不久)
後來又做了 Windows base 的開發工作 ( outsourcing 那種 )(八個月)
直到現在的工作才算穩定下來 (二年多)
主要的經驗也是在現在的工作上累積下來
我覺得興趣和對自我技術提昇的慾望是學習的不二法門吧
當然, 有很多東西我還是仍要學習的

PS: 大概我每天的工作都會用到 Linux/Unix 有關吧.總得要多想一些步數來籣化工作 ~不然我每台機器都要 telnet 的話,大概 MS windows 的工作列三排也放不下

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
MRTG/RRDTOOL --- DNS 流量統計
« 回覆 #6 於: 2003-07-31 03:31 »
rrdtool 的做法~~
僅列程式......太長了難以講解...若有興趣去看 http://www.rrdtool.org
不了解再來問我好了


#建立 RRA file (rrdtool 的 DB)
rrdtool create /root/study/named.rrd  -s 300 \
DS:suc:GAUGE:600:0:10000000 \
DS:ref:GAUGE:600:0:10000000 \
DS:nxr:GAUGE:600:0:10000000 \
DS:nxd:GAUGE:600:0:10000000 \
DS:rec:GAUGE:600:0:10000000 \
DS:fai:GAUGE:600:0:10000000 \
DS:xxx:GAUGE:600:0:10000000 \
RRA:AVERAGE:0.5:1:2400  \
RRA:AVERAGE:0.5:6:2400  \
RRA:AVERAGE:0.5:24:2400         \
RRA:AVERAGE:0.5:288:2400            


#產生資料及圖檔
[root@pc071 study]# cat dns-flow.sh
#dns-flow.sh
stats_file=/var/named/named.stats
rrd_file=/root/study/named.rrd
RRD_PATH=$rrd_file
image_path=/home/httpd/html/enum/study/
sec=300
version="9.2.2 without ssl/pthread"


while [ 1 ]; do
rm -f $stats_file
rndc -c /etc/rndc.conf stats
cat /var/named/named.stats | grep -v 'Stat' | awk '{print $2}' >named_stat.1
i=1
rrd_record=""
while [ $i -le 6 ];do
        var1=`head -$i named_stat.1| tail -1`
        var2=`head -$i named_stat.2| tail -1`
        diff=`expr $var1 - $var2`
        diff=`expr $diff / $sec`
        rrd_record="$rrd_record$diff:"
        i=`expr $i + 1`
done
echo /usr/local/bin/rrdtool update $rrd_file N:${rrd_record}0
/usr/local/bin/rrdtool update $rrd_file N:${rrd_record}0
cp -f named_stat.1 named_stat.2

time_t="hour day week month year"    
for r in $time_t
do
        /usr/local/bin/rrdtool graph $image_path/named-query-$r.png \
        --title "DNS 流量統計  (${r}ly)" \
        DEF:v1=$RRD_PATH:suc:AVERAGE \
        DEF:v2=$RRD_PATH:ref:AVERAGE \
        DEF:v3=$RRD_PATH:nxr:AVERAGE \
        DEF:v4=$RRD_PATH:nxd:AVERAGE \
        DEF:v5=$RRD_PATH:rec:AVERAGE \
        DEF:v6=$RRD_PATH:fai:AVERAGE \
        DEF:v7=/root/study/sysinfo.rrd:named_cpu:AVERAGE \
        CDEF:t7=100,v7,* \
        CDEF:t6=v1,v2,v3,v4,v5,v6,+,+,+,+,+ \
        CDEF:t5=v1,v2,v3,v4,v5,+,+,+,+ \
        CDEF:t4=v1,v2,v3,v4,+,+,+ \
        CDEF:t3=v1,v2,v3,+,+ \
        CDEF:t2=v1,v2,+ \
        CDEF:t1=v6 \
        COMMENT:"DNS 查詢狀況---------------最大----------平均-----------最小-----------現在\n" \
        AREA:t6#006600:"查詢量 " \
                GPRINT:t6:MAX:"        %12.0lf "  \
                GPRINT:t6:AVERAGE:"%12.0lf "            \
                GPRINT:t6:MIN:"%12.0lf "                \
                GPRINT:t6:LAST:"%12.0lf \n"               \
        AREA:t5#339966:"回應量 " \
                GPRINT:t5:MAX:"        %12.0lf "  \
                GPRINT:t5:AVERAGE:"%12.0lf "            \
                GPRINT:t5:MIN:"%12.0lf "                \
                GPRINT:t5:LAST:"%12.0lf \n"               \
        AREA:t4#00ff99:"找不到域名 " \            
                GPRINT:v4:MAX:"    %12.0lf "  \
                GPRINT:v4:AVERAGE:"%12.0lf "            \
                GPRINT:v4:MIN:"%12.0lf "                \
                GPRINT:v4:LAST:"%12.0lf \n"               \
        AREA:t3#ffcc66:"找不到記錄 " \
                GPRINT:v3:MAX:"    %12.0lf "  \
                GPRINT:v3:AVERAGE:"%12.0lf "            \
                GPRINT:v3:MIN:"%12.0lf "                \
                GPRINT:v3:LAST:"%12.0lf \n"               \
        AREA:t2#ff6699:"參考量 " \
                GPRINT:v2:MAX:"        %12.0lf "  \
                GPRINT:v2:AVERAGE:"%12.0lf "            \
                GPRINT:v2:MIN:"%12.0lf "                \
                GPRINT:v2:LAST:"%12.0lf \n"               \
        AREA:t1#ff0000:"失敗數 " \
                GPRINT:v1:MAX:"        %12.0lf "  \
                GPRINT:v1:AVERAGE:"%12.0lf "            \
                GPRINT:v1:MIN:"%12.0lf "                \
                GPRINT:v1:LAST:"%12.0lf \n"               \
        LINE2:t7#ffff00:"DNS CPU 負載"  \
                GPRINT:t1:MAX:"   %12.0lf "  \
                GPRINT:t1:AVERAGE:"%12.0lf "            \
                GPRINT:t1:MIN:"%12.0lf "                \
                GPRINT:t1:LAST:"%12.0lf \n"               \
        -v "Query per second" -M -U 10 -s `date -d "-1 $r" +%s` \
        -Y -X b -h 200 -w 480
done        
sleep 300
done

產生出的圖檔





firebolt

  • 可愛的小學生
  • *
  • 文章數: 28
    • 檢視個人資料
MRTG/RRDTOOL --- DNS 流量統計
« 回覆 #7 於: 2003-08-03 03:16 »
關於上半部分使用MRTG畫出使用者PC某檔案中數據的部分可否在多給些參考資料呢?感謝啊!

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
MRTG/RRDTOOL --- DNS 流量統計
« 回覆 #8 於: 2003-08-03 17:52 »
不知道你所謂的參考資料是指做法還是顥示結果,
如果你要的是做法,可以去參考 Vbird 的文章
http://linux.vbird.org/linux_security/old/04mrtg.php
基本上只要對程式有一點點的概念( 一般大家都用 shell script),
並知道餵給 mrtg 的資料格式即可達到上述之功能
如果你想了解的更多些,且對英文還不陌生建議您直接到
mrtg 的官方網站.你會學到的更多

個人本亦都使用 mrtg, 但是有時要在一個圖上畫出 TCP/ICMP/UDP/TR,TX (IN/OUT)
八個數據時,mrtg 較難滿足我的需求,如果你的檔案中的數據超過兩個以上
可以參考
http://phorum.study-area.org/viewtopic.php?t=17869

不過用  rrdtool 有一個好處是,你可以匯整不同 rrd file 同一時間點的值,
usr/local/bin/rrdtool graph $image_path/named-query-$r.png \
--title "DNS 流量統計 (${r}ly)" \
DEF:v1=$RRD_PATH:suc:AVERAGE \
DEF:v2=$RRD_PATH:ref:AVERAGE \
DEF:v3=$RRD_PATH:nxr:AVERAGE \
DEF:v4=$RRD_PATH:nxd:AVERAGE \
DEF:v5=$RRD_PATH:rec:AVERAGE \
DEF:v6=$RRD_PATH:fai:AVERAGE \
DEF:v7=/root/study/sysinfo.rrd:named_cpu:AVERAGE \
DEF:v8=/root/study/packet.rrd:tr:AVERAGE \
DEF:v9=/root/study/packet.rrd:tx:AVERAGE \

當然這些圖的產出數據你都要自己定義,相較於 mrtg 是麻煩多了
(mrtg 與 rrdtool 是同一作者 ) rrdtool 開宗名義即說:

If you know MRTG, you can think of RRDtool as a reimplementation of MRTGs graphing and logging features. Magnitudes faster and more flexible than you ever thought possible

RRD is the Acronym for Round Robin Database. RRD is a system to store and display time-series data (i.e. network bandwidth, machine-room temperature, server load average). It stores the data in a very compact way that will not expand over time, and it presents useful graphs by processing the data to enforce a certain data density. It can be used either via simple wrapper scripts (from shell or Perl) or via frontends that poll network devices and put a friendly user interface on it.

oscar

  • 可愛的小學生
  • *
  • 文章數: 28
    • 檢視個人資料
MRTG/RRDTOOL --- DNS 流量統計
« 回覆 #9 於: 2003-12-25 20:19 »
請問: :oops:
  1.我依照以下程式結果出現錯誤訊息:syntax error: unexpected end of file,
     是不是下面程式內迴圈少了一個done,不知要加在那裡????
while [ 1 ]; do
rm -f $stats_file
rndc -c /etc/rndc.conf stats
cat /var/named/named.stats | grep -v 'Stat' | awk '{print $2}' >named_stat.1
i=1
rrd_record=""
while [ $i -le 6 ];do
        var1=`head -$i named_stat.1| tail -1`
        var2=`head -$i named_stat.2| tail -1`
        diff=`expr $var1 - $var2`
        diff=`expr $diff / $sec`
        rrd_record="$rrd_record$diff:"
        i=`expr $i + 1`
done

2.sysinfo.rrd是否須要自己另外產生此檔案?
   不知如何產生????
(我剩下此部份程式有問題,你前面所述的我已完成)
       ~謝謝~
----------------------------------------------------------------------
引述: "abelyang"
rrdtool 的做法~~
僅列程式......太長了難以講解...若有興趣去看 http://www.rrdtool.org
不了解再來問我好了


#建立 RRA file (rrdtool 的 DB)
rrdtool create /root/study/named.rrd  -s 300 \
DS:suc:GAUGE:600:0:10000000 \
DS:ref:GAUGE:600:0:10000000 \
DS:nxr:GAUGE:600:0:10000000 \
DS:nxd:GAUGE:600:0:10000000 \
DS:rec:GAUGE:600:0:10000000 \
DS:fai:GAUGE:600:0:10000000 \
DS:xxx:GAUGE:600:0:10000000 \
RRA:AVERAGE:0.5:1:2400  \
RRA:AVERAGE:0.5:6:2400  \
RRA:AVERAGE:0.5:24:2400         \
RRA:AVERAGE:0.5:288:2400            


#產生資料及圖檔
[root@pc071 study]# cat dns-flow.sh
#dns-flow.sh
stats_file=/var/named/named.stats
rrd_file=/root/study/named.rrd
RRD_PATH=$rrd_file
image_path=/home/httpd/html/enum/study/
sec=300
version="9.2.2 without ssl/pthread"


while [ 1 ]; do
rm -f $stats_file
rndc -c /etc/rndc.conf stats
cat /var/named/named.stats | grep -v 'Stat' | awk '{print $2}' >named_stat.1
i=1
rrd_record=""
while [ $i -le 6 ];do
        var1=`head -$i named_stat.1| tail -1`
        var2=`head -$i named_stat.2| tail -1`
        diff=`expr $var1 - $var2`
        diff=`expr $diff / $sec`
        rrd_record="$rrd_record$diff:"
        i=`expr $i + 1`
done
echo /usr/local/bin/rrdtool update $rrd_file N:${rrd_record}0
/usr/local/bin/rrdtool update $rrd_file N:${rrd_record}0
cp -f named_stat.1 named_stat.2

time_t="hour day week month year"    
for r in $time_t
do
        /usr/local/bin/rrdtool graph $image_path/named-query-$r.png \
        --title "DNS 流量統計  (${r}ly)" \
        DEF:v1=$RRD_PATH:suc:AVERAGE \
        DEF:v2=$RRD_PATH:ref:AVERAGE \
        DEF:v3=$RRD_PATH:nxr:AVERAGE \
        DEF:v4=$RRD_PATH:nxd:AVERAGE \
        DEF:v5=$RRD_PATH:rec:AVERAGE \
        DEF:v6=$RRD_PATH:fai:AVERAGE \
        DEF:v7=/root/study/sysinfo.rrd:named_cpu:AVERAGE \
        CDEF:t7=100,v7,* \
        CDEF:t6=v1,v2,v3,v4,v5,v6,+,+,+,+,+ \
        CDEF:t5=v1,v2,v3,v4,v5,+,+,+,+ \
        CDEF:t4=v1,v2,v3,v4,+,+,+ \
        CDEF:t3=v1,v2,v3,+,+ \
        CDEF:t2=v1,v2,+ \
        CDEF:t1=v6 \
        COMMENT:"DNS 查詢狀況---------------最大----------平均-----------最小-----------現在\n" \
        AREA:t6#006600:"查詢量 " \
                GPRINT:t6:MAX:"        %12.0lf "  \
                GPRINT:t6:AVERAGE:"%12.0lf "            \
                GPRINT:t6:MIN:"%12.0lf "                \
                GPRINT:t6:LAST:"%12.0lf \n"               \
        AREA:t5#339966:"回應量 " \
                GPRINT:t5:MAX:"        %12.0lf "  \
                GPRINT:t5:AVERAGE:"%12.0lf "            \
                GPRINT:t5:MIN:"%12.0lf "                \
                GPRINT:t5:LAST:"%12.0lf \n"               \
        AREA:t4#00ff99:"找不到域名 " \            
                GPRINT:v4:MAX:"    %12.0lf "  \
                GPRINT:v4:AVERAGE:"%12.0lf "            \
                GPRINT:v4:MIN:"%12.0lf "                \
                GPRINT:v4:LAST:"%12.0lf \n"               \
        AREA:t3#ffcc66:"找不到記錄 " \
                GPRINT:v3:MAX:"    %12.0lf "  \
                GPRINT:v3:AVERAGE:"%12.0lf "            \
                GPRINT:v3:MIN:"%12.0lf "                \
                GPRINT:v3:LAST:"%12.0lf \n"               \
        AREA:t2#ff6699:"參考量 " \
                GPRINT:v2:MAX:"        %12.0lf "  \
                GPRINT:v2:AVERAGE:"%12.0lf "            \
                GPRINT:v2:MIN:"%12.0lf "                \
                GPRINT:v2:LAST:"%12.0lf \n"               \
        AREA:t1#ff0000:"失敗數 " \
                GPRINT:v1:MAX:"        %12.0lf "  \
                GPRINT:v1:AVERAGE:"%12.0lf "            \
                GPRINT:v1:MIN:"%12.0lf "                \
                GPRINT:v1:LAST:"%12.0lf \n"               \
        LINE2:t7#ffff00:"DNS CPU 負載"  \
                GPRINT:t1:MAX:"   %12.0lf "  \
                GPRINT:t1:AVERAGE:"%12.0lf "            \
                GPRINT:t1:MIN:"%12.0lf "                \
                GPRINT:t1:LAST:"%12.0lf \n"               \
        -v "Query per second" -M -U 10 -s `date -d "-1 $r" +%s` \
        -Y -X b -h 200 -w 480
done        

產生出的圖檔





abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
MRTG/RRDTOOL --- DNS 流量統計
« 回覆 #10 於: 2003-12-25 23:20 »
程式最後處加
sleep 300
done
這是我沒有貼好......... :(
不然就將第一個 while [ 1 ] 拿掉改成用 cron 的方式亦可

sysinfo.rrd 可以不用建畫圖的那個 v7 拿掉即可
如果你一定要建:
代碼: [選擇]
rrdtool create /root/study/sysinfo.rrd -s 300 \
DS:mem:GAUGE:600:0:100 \             #記憶體使用
DS:swap:GAUGE:600:0:100 \            # SWAP 使用
DS:cpu_sys:GAUGE:600:0:100 \        # CPU System
DS:cpu_usr:GAUGE:600:0:100 \        # CPU USER
DS:cpu_idl:GAUGE:600:0:100 \         # CPU IDLE
DS:process:GAUGE:600:0:100 \        # PROCESS 數
DS:uptime_1:GAUGE:600:0:100 \      # 一分鐘負載
DS:uptime_5:GAUGE:600:0:100 \      # 5m
DS:uptime_15:GAUGE:600:0:100 \    # 15m
DS:conn:GAUGE:600:0:100 \           # 連線數
DS:named_cpu:GAUGE:600:0:100 \   # DNS 佔 CPU 使用率
DS:named_mem:GAUGE:600:0:100 \  # DNS 佔記憶體
DS:TR:COUNTER:600:0:10000000 \   # 以下就不打了,顧名思義
DS:TX:COUNTER:600:0:10000000 \
DS:ICMP_IN:COUNTER:600:0:10000000 \
DS:ICMP_OUT:COUNTER:600:0:10000000 \
DS:TCP_IN:COUNTER:600:0:10000000 \
DS:TCP_OUT:COUNTER:600:0:10000000 \
DS:UDP_IN:COUNTER:600:0:10000000 \
DS:UDP_OUT:COUNTER:600:0:10000000 \
RRA:AVERAGE:0.5:1:9600  \
RRA:AVERAGE:0.5:6:4800          \
RRA:AVERAGE:0.5:24:1200         \
RRA:AVERAGE:0.5:288:600                    

這個 sysinfo.rrd 的圖形如下,不過 rrdfile 我自己巳經砍掉了
所以現在沒數據


oscar

  • 可愛的小學生
  • *
  • 文章數: 28
    • 檢視個人資料
MRTG/RRDTOOL --- DNS 流量統計
« 回覆 #11 於: 2003-12-30 13:06 »
對不起,程式已經可以執行了.但是圖一直沒有變化.執行時.只會出現下列訊息.數字一直沒有增加.多是0:0:0:0:0:0:0

/usr/bin/rrdtool update /usr/local/oscar/rrdtool/named.rrd N:0:0:0:0:0:0:0
575x363
575x363
575x363
575x363
575x363
但如果手動執行rndc -c /etc/rndc.conf stats指令.named.stats這檔案內容會一直增加.但如果全部執行.檔案內容都一直不會變動.named_stat.1 named_stat.2兩個檔案大小也多一樣.下面是我的設定檔內容不知是否有錯.
謝謝.

#dns-flow.sh
stats_file=/var/named/chroot/var/named/named.stats
rrd_file=/usr/local/oscar/rrdtool/named.rrd
RRD_PATH=$rrd_file
image_path=/var/www/html/rrdtool/
sec=300
version="9.2.2-P3 without ssl/pthread"


while [ 1 ]; do
rm -f $stats_file
rndc -c /etc/rndc.conf stats
cat /var/named/chroot/var/named/named.stats | grep -v 'Stat' | awk '{print $2}' >named_stat.1
i=1
rrd_record=""
while [ $i -le 6 ];do
var1=`head -$i named_stat.1| tail -1`
var2=`head -$i named_stat.2| tail -1`
diff=`expr $var1 - $var2`
diff=`expr $diff / $sec`
rrd_record="$rrd_record$diff:"
i=`expr $i + 1`
done
echo /usr/bin/rrdtool update $rrd_file N:${rrd_record}0
/usr/bin/rrdtool update $rrd_file N:${rrd_record}0
cp -f named_stat.1 named_stat.2

time_t="hour day week month year"
for r in $time_t
do
/usr/bin/rrdtool graph $image_path/named-query-$r.png \
--title "DNS 流量統計 (${r}ly)" \
DEF:v1=$RRD_PATH:suc:AVERAGE \
DEF:v2=$RRD_PATH:ref:AVERAGE \
DEF:v3=$RRD_PATH:nxr:AVERAGE \
DEF:v4=$RRD_PATH:nxd:AVERAGE \
DEF:v5=$RRD_PATH:rec:AVERAGE \
DEF:v6=$RRD_PATH:fai:AVERAGE \
DEF:v7=/usr/local/oscar/rrdtool/sysinfo.rrd:named_cpu:AVERAGE \
CDEF:t7=100,v7,* \
CDEF:t6=v1,v2,v3,v4,v5,v6,+,+,+,+,+ \
CDEF:t5=v1,v2,v3,v4,v5,+,+,+,+ \
CDEF:t4=v1,v2,v3,v4,+,+,+ \
CDEF:t3=v1,v2,v3,+,+ \
CDEF:t2=v1,v2,+ \
CDEF:t1=v6 \
COMMENT:"DNS 查詢狀況---------------最大----------平均-----------最小-----------現在\n" \
AREA:t6#006600:"查詢量 " \
GPRINT:t6:MAX:" %12.0lf " \
GPRINT:t6:AVERAGE:"%12.0lf " \
GPRINT:t6:MIN:"%12.0lf " \
GPRINT:t6:LAST:"%12.0lf \n" \
AREA:t5#339966:"回應量 " \
GPRINT:t5:MAX:" %12.0lf " \
GPRINT:t5:AVERAGE:"%12.0lf " \
GPRINT:t5:MIN:"%12.0lf " \
GPRINT:t5:LAST:"%12.0lf \n" \
AREA:t4#00ff99:"找不到域名 " \
GPRINT:v4:MAX:" %12.0lf " \
GPRINT:v4:AVERAGE:"%12.0lf " \
GPRINT:v4:MIN:"%12.0lf " \
GPRINT:v4:LAST:"%12.0lf \n" \
AREA:t3#ffcc66:"找不到記錄 " \
GPRINT:v3:MAX:" %12.0lf " \
GPRINT:v3:AVERAGE:"%12.0lf " \
GPRINT:v3:MIN:"%12.0lf " \
GPRINT:v3:LAST:"%12.0lf \n" \
AREA:t2#ff6699:"參考量 " \
GPRINT:v2:MAX:" %12.0lf " \
GPRINT:v2:AVERAGE:"%12.0lf " \
GPRINT:v2:MIN:"%12.0lf " \
GPRINT:v2:LAST:"%12.0lf \n" \
AREA:t1#ff0000:"失敗數 " \
GPRINT:v1:MAX:" %12.0lf " \
GPRINT:v1:AVERAGE:"%12.0lf " \
GPRINT:v1:MIN:"%12.0lf " \
GPRINT:v1:LAST:"%12.0lf \n" \
LINE2:t7#ffff00:"DNS CPU 負載" \
GPRINT:t1:MAX:" %12.0lf " \
GPRINT:t1:AVERAGE:"%12.0lf " \
GPRINT:t1:MIN:"%12.0lf " \
GPRINT:t1:LAST:"%12.0lf \n" \
-v "Query per second" -M -U 10 -s `date -d "-1 $r" +%s` \
-Y -X b -h 200 -w 480
done
sleep 300
done

samyeh

  • 可愛的小學生
  • *
  • 文章數: 10
    • 檢視個人資料
MRTG/RRDTOOL --- DNS 流量統計
« 回覆 #12 於: 2004-01-11 15:20 »
不知道誰能跟我解釋一下這行語法
-v "Query per second" -M -U 10 -s `date -d "-1 $r" +%s` \
因為我執行會出現錯誤
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ...
            [-f fmt date | [[[[[cc]yy]mm]dd]HH]MM[.ss]] [+format]
ERROR: start time: There should be number after '-'
我用的是freebsd 5.2~ date的語法是不是不同??謝謝

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
MRTG/RRDTOOL --- DNS 流量統計
« 回覆 #13 於: 2004-01-12 18:26 »
覆樓上...是的
BSD 不同,但到底是何語法 BSD 的環境我就不知道了...

至於 oscar 兄...
您發生 0:0:0.... 原因可能在 script 沒處理好 ,也有可能是 rndc 沒處理好....,您丟一段 named.stats 的內容上來看看 ?
並請確認這一段:
cat /var/named/named.stats | grep -v 'Stat' | awk '{print $2}' >named_stat.1
i=1
rrd_record=""
while [ $i -le 6 ];do
var1=`head -$i named_stat.1| tail -1`
var2=`head -$i named_stat.2| tail -1`
diff=`expr $var1 - $var2`
diff=`expr $diff / $sec`
rrd_record="$rrd_record$diff:"
i=`expr $i + 1`
done
 是否有任何的值出來  ?

oscar

  • 可愛的小學生
  • *
  • 文章數: 28
    • 檢視個人資料
MRTG/RRDTOOL --- DNS 流量統計
« 回覆 #14 於: 2004-01-13 12:40 »
引述: "abelyang"
覆樓上...是的
BSD 不同,但到底是何語法 BSD 的環境我就不知道了...

至於 oscar 兄...
您發生 0:0:0.... 原因可能在 script 沒處理好 ,也有可能是 rndc 沒處理好....,您丟一段 named.stats 的內容上來看看 ?
並請確認這一段:
cat /var/named/named.stats | grep -v 'Stat' | awk '{print $2}' >named_stat.1
i=1
rrd_record=""
while [ $i -le 6 ];do
var1=`head -$i named_stat.1| tail -1`
var2=`head -$i named_stat.2| tail -1`
diff=`expr $var1 - $var2`
diff=`expr $diff / $sec`
rrd_record="$rrd_record$diff:"
i=`expr $i + 1`
done
 是否有任何的值出來  ?


這是單獨執行rndc -c /etc/rndc.conf stats
產生值為:
+++ Statistics Dump +++ (1072765375)
success 15720
referral 2192
nxrrset 2030
nxdomain 4501
recursion 9327
failure 738
--- Statistics Dump --- (1072765375)
+++ Statistics Dump +++ (1073966083)
success 25967
referral 707
nxrrset 485
nxdomain 6786
recursion 3162
failure 160
--- Statistics Dump --- (1073966083)
+++ Statistics Dump +++ (1073966125)
success 26003
referral 707
nxrrset 486
nxdomain 6787
recursion 3165
failure 160
--- Statistics Dump --- (1073966125)
+++ Statistics Dump +++ (1073966128)
success 26007
referral 707
nxrrset 486
nxdomain 6787
recursion 3165
failure 160
--- Statistics Dump --- (1073966128)

這是執行cat /var/named/named.stats | grep -v 'Stat' | awk '{print $2}' >named_stat.1
i=1
rrd_record=""
while [ $i -le 6 ];do
var1=`head -$i named_stat.1| tail -1`
var2=`head -$i named_stat.2| tail -1`
diff=`expr $var1 - $var2`
diff=`expr $diff / $sec`
rrd_record="$rrd_record$diff:"
i=`expr $i + 1`
done


產生值為:
named_stat.1
27024
737
495
6917
3218
161
named_stat.2
27024
737
495
6917
3218
161
named.stats
+++ Statistics Dump +++ (1073968148)
success 28054
referral 745
nxrrset 507
nxdomain 7659
recursion 3325
failure 181
--- Statistics Dump --- (1073968148)

這是各執行三次的數據
謝謝了

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
MRTG/RRDTOOL --- DNS 流量統計
« 回覆 #15 於: 2004-01-13 14:20 »
問一下,你 run 完這個 script 後, named.stats 還在嗎 ?
(理論上應不在)

代碼: [選擇]

rm -f $stats_file
rndc -c /etc/rndc.conf stats
cat /var/named/chroot/var/named/named.stats | grep -v 'Stat' | awk '{print $2}' >named_stat.1

這一段會刪掉 named.stats, 重建,再處理掉 ---- Stat .... 那兩行字再取出數字部份存成 named_stat.1
然後與上一次之 named_stat.2 六個數字相減
得出 N:x:x:x:x:x:x ,
你會為 0 , 實際狀況你得要自己從 script 中去判斷
script 執行完時, named_stat.1   與 .2 本來就是相同的
在執行中時才不同

oscar

  • 可愛的小學生
  • *
  • 文章數: 28
    • 檢視個人資料
MRTG/RRDTOOL --- DNS 流量統計
« 回覆 #16 於: 2004-01-13 15:05 »
引述: "abelyang"
問一下,你 run 完這個 script 後, named.stats 還在嗎 ?
(理論上應不在)

代碼: [選擇]

rm -f $stats_file
rndc -c /etc/rndc.conf stats
cat /var/named/chroot/var/named/named.stats | grep -v 'Stat' | awk '{print $2}' >named_stat.1

這一段會刪掉 named.stats, 重建,再處理掉 ---- Stat .... 那兩行字再取出數字部份存成 named_stat.1
然後與上一次之 named_stat.2 六個數字相減
得出 N:x:x:x:x:x:x ,
你會為 0 , 實際狀況你得要自己從 script 中去判斷
script 執行完時, named_stat.1   與 .2 本來就是相同的
在執行中時才不同


我run 完這個 script 後, named.stats 還在.我想問題應該出在named.stats這個檔案上.因為如果單獨執行rndc -c /etc/rndc.conf stats時.named.stats數據會一直增加像:
+++ Statistics Dump +++ (1073976524)
success 32560
referral 823
nxrrset 558
nxdomain 9081
recursion 4747
failure 400
--- Statistics Dump --- (1073976524)
+++ Statistics Dump +++ (1073977090)
success 32784
referral 823
nxrrset 561
nxdomain 9115
recursion 4819
failure 402
--- Statistics Dump --- (1073977090)
+++ Statistics Dump +++ (1073977092)
success 32786
referral 823
nxrrset 561
nxdomain 9115
recursion 4820
failure 402
--- Statistics Dump --- (1073977092)
+++ Statistics Dump +++ (1073977093)
success 32786
referral 823
nxrrset 561
nxdomain 9115
recursion 4820
failure 402
--- Statistics Dump --- (1073977093)
這樣.但如果run 整個 script數據就會像:
+++ Statistics Dump +++ (1073977243)
success 32878
referral 824
nxrrset 561
nxdomain 9122
recursion 4832
failure 402
--- Statistics Dump --- (1073977243)
這樣.永遠不燮.
不知如何解決.謝謝....

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
MRTG/RRDTOOL --- DNS 流量統計
« 回覆 #17 於: 2004-01-13 16:14 »
cat /var/named/chroot/var/named/named.stats | grep -v 'Stat' | awk
改成
cat /var/named/chroot/var/named/named.stats| tail -8 | grep -v 'Stat' | awk

其他不變

oscar

  • 可愛的小學生
  • *
  • 文章數: 28
    • 檢視個人資料
MRTG/RRDTOOL --- DNS 流量統計
« 回覆 #18 於: 2004-01-19 17:09 »
已經可以顯示資訊.只是無法顯示中文.
謝謝了.

飛行獸

  • 懷疑的國中生
  • **
  • 文章數: 61
    • 檢視個人資料
MRTG/RRDTOOL --- DNS 流量統計
« 回覆 #19 於: 2004-01-19 20:39 »
附註.....

secret "lnWw5u3Jlr/8jaTpjfWF6w==";
是DNS的雙方溝通鑰匙.......
可以防止與子網域或網域內的DNS溝通時被偷監聽......

在BIND9 執行..
#dnssec-keygen -a HMAC-MD5 -b 128 -n HOST 123.com
再用  ls 即可看到root內會出現2個 K1223.com+.....的檔案
 在K1223.com.......private裡面...
........
Key : qweqweqweqwe==

那個就是摟.......
記得還要到named.conf裡去設定....

alvin363

  • 可愛的小學生
  • *
  • 文章數: 4
    • 檢視個人資料
MRTG/RRDTOOL --- DNS 流量統計
« 回覆 #20 於: 2005-07-02 16:28 »
請問一下:

while [ 1 ]; do
rm -f $stats_file
rndc -c /etc/rndc.conf stats
cat /var/named/named.stats | grep -v 'Stat' | awk '{print $2}' >named_stat.1
i=1
rrd_record=""
while [ $i -le 6 ];do
var1=`head -$i named_stat.1| tail -1`
var2=`head -$i named_stat.2| tail -1`
diff=`expr $var1 - $var2`
diff=`expr $diff / $sec`
rrd_record="$rrd_record$diff:"
i=`expr $i + 1`

這串是什麼意思?
我在其他文件找不到相關的東東
能否幫我解釋一下
謝謝!

大白

  • 憂鬱的高中生
  • ***
  • 文章數: 128
    • 檢視個人資料
MRTG/RRDTOOL --- DNS 流量統計
« 回覆 #21 於: 2005-09-07 22:02 »
各位學長大家好,我的環境是 Fedora Core 3 ,使用預設的bind套件bind-9.2.4-2,已將SELinux 停用,有使用chroot...我想使用 rndc 觀看流量,出現以下錯誤訊息.....請問我該注意哪方面呢?謝謝
rndc: 'stats' failed: permission denied

我的步驟如下:
# rndc-confgen > /etc/rndc.conf
# cat rndc.conf >> /var/named/chroot/etc/named.conf
也有將 /etc/rndc.conf 和 named.conf 內容做修改,named正常啟動....
但卻執行 # rndc stats  或是 # rndc -c /etc/rndc.conf -s localhost stats出現錯誤訊息  rndc: 'stats' failed: permission denied