首页 > 学技术 > 技术网文 > 网络技术 > 正文

[原创] RRDTOOL with CU POST/REPLY 統計


来源 chinaunix.net 酷勤网整理

寫了 CU 各版主題/回覆的文章流量統計..
有興趣的人參考看看囉 
http://211.72.210.251/CU/

可以下載回去研究,download 回去的文件會有說明,及相關的 link
sample 頁:


[url=http://211.72.210.251/CU/index.php?f=29&name=%CF%B5%CD%B3%BA%CD%CD%F8%C2%E7%B0%B2%C8%AB]本版統計

Good luck !

中文Solution 在 README 的 link 中有寫,自去看看囉



 mazu 回复于:2004-09-14 08:46:35

:em02:  :em02:  :em02:  :em02:  :em02:  :em02: 谢谢热心的GG


 tristan 回复于:2004-09-14 09:01:08

呵呵,谢谢谢谢


 lsw 回复于:2004-09-14 09:10:12

不错,厉害


 wingger 回复于:2004-09-14 09:31:13

:lol:  :lol:  :lol:


 我爱臭豆腐 回复于:2004-09-14 09:33:38

:lol: 多谢多谢


 rollingpig 回复于:2004-09-14 13:44:52

近期也是在作rrdtool统计画图


 abel 回复于:2004-09-14 14:05:15

嗯~難得有同好哦...
有什麼問題可以來問我...(但請不要叫我重頭到尾教人)
我將源代碼都看過N次,將 rrdtool graph 改成支援 TTF ,  mysql ..
這東西不難,難的是作者的網頁的英文太難,有些地方也寫得稍為少了一點
不好理解,做過了才會知道:




 我爱臭豆腐 回复于:2004-09-14 14:41:23

引用:原帖由 "abel"]
 发表:



非常羡慕楼主有3750 啊. :em03:  :em02:


 abel 回复于:2004-09-14 15:14:39

引用:原帖由 "我爱臭豆腐" 发表:


非常羡慕楼主有3750 啊. :em03:  :em02:


嗯~還好啦,單位願意花錢買,我們都有很多機會摸到
像 17 29 就不用說了,也有幾部 26 或 53 

53 接E1 trucking 到 Nortel M1 主要拿來做 VoIP GW 
(不用 FXO/FXS 來做,那個東西常有頻率問題,掛不掉電話),
同仁出遠門或出國在外,都可以連回來由單位內下車
若有人打電話來,若人在國外,也可以 VoIP 轉接到國外 

所以,小弟還是老本行,就用 RRD 來畫通話統計了:


學會RRD 後小弟就從沒有用過 mrtg 了  :mrgreen:


 deeperpurple 回复于:2004-09-14 15:24:04

恩~~强~~ 不错不错!


 我爱臭豆腐 回复于:2004-09-14 15:26:46

引用:原帖由 "abel" 发表:

學會RRD 後小弟就從沒有用過 mrtg 了  :mrgreen:




你们真是不错啊.我头几年作过一次用netmeeting 打电话.电话到netmeeting估计和你这个差不多.
真是羡慕你们啊.我就拿手摸过一次3750 :em06:


 abel 回复于:2004-09-14 19:10:44

引用:原帖由 "我爱臭豆腐" 发表:



你们真是不错啊.我头几年作过一次用netmeeting 打电话.电话到netmeeting估计和你这个差不多.
真是羡慕你们啊.我就拿手摸过一次3750 :em06:


嗯~ netmeeting 是 H323 的東西,如果沒有 Gatekeeper 支持的話
很難互連互通,變成只有自己人才知道的狀況 .

不過我們實現的是透過 IVR , 達到雙向之目的,人再怎麼走,也都可以找到
只是我們採用的是 SIP/ENUM 技術,和 H323 稍有點小不同.

H323->;GW->;FXO-PBX->;PSTN 這種做法不難,只要 GW 能支援 H323 即可,但是別人要找這個 H323 Client 就會較費事些,所以得有一個 
Gatekeeper , 只是 GK 和 GW 常有相容性問題
會變成 H323->;GK->;GW->;FXO->;PBX->;PSTN
GK 當 Routing/Register 角色...只是若用 FXO 有時因信令問題,會發生
電話一直忙線中,不知您是否碰過否 !?
每次碰到這種就會讓人抓狂...跟老板解釋說因為 xxxx, 老板也不懂,
當然,現在有掛斷訊號偵測器這種東西就好用多了.

版上 VoIP 的朋友好像不多..真是可惜..
VoIP 未來幾年應很有看頭,只是 telecom 的東西都不太好懂 ....苦惱
近年 SIP 算是一種很好的 Signaling 的技術, debug 起來也容易許多了
若有心的人,可以多研究看看哦


 deeperpurple 回复于:2004-09-14 19:55:27

"只是 telecom 的東西都不太好懂"


更苦恼~~ (-_-!)


 纳兰婷 回复于:2004-09-14 21:48:06

不错,真厉害啊


 我爱臭豆腐 回复于:2004-09-15 07:22:41

引用:原帖由 "abel" 发表:

嗯~ netmeeting 是 H323 的東西,如果沒有 Gatekeeper 支持的話
很難互連互通,變成只有自己人才知道的狀況 .

不過我們實現的是透過 IVR , 達到雙向之目的,人再怎麼走,也都可以找到
只是我們採用的是 SIP/ENUM ..........



不错不错非常同意你的观点.但是现在在我们这里使用voip的还是不是很多.但是这个东西确实是一个很好的发展方向.也不知道什么时候能够都普及了 :em17:


 saintdragon 回复于:2004-09-15 10:46:12

高人!!


 odin_free 回复于:2004-09-15 10:46:39

hehe 
欧弄过voip
用隧道作成gk为服务器下面走iad+tel
挺好啊 开源的gatekeeper就能用 我们公司用这个懵了几百万了
上海的项目基本都是我一个人弄得 累死了


 odin_free 回复于:2004-09-15 10:47:48

h323实现起来不难 就改改认证 别的基本都能用啊


 sakulagi 回复于:2004-09-15 12:45:13

不错诶,虽然不懂,不过还是强烈支持!


 hope365 回复于:2004-09-15 21:34:24

用这个测试了一下职业生涯,确实是个好东西,很直观
尽管还有些东西弄不明白,也许是以前没接触过的缘故
不过有这个测试对我们还是比较有用处的,以前仅仅是凭自己长时间主观判断,有了这个会更直观
想了解得更多一些,谁能帮帮忙啊


 abel 回复于:2004-09-15 21:39:55

我那個 網頁有download ...
可以抓回去看
裏面的 README 先看,會看到你想了解的東西...

由於 RRDTOOL 中文教學我巳在台灣貼過了,所以沒有帶來這,
以台灣的經驗來說,貼了那個教學會被問到發瘋,阿 cat 阿 dog 都來問...
本來我沒公佈中文 TTF  patch(自己改的),結果也是一堆人問呀....
(不少來自大陸或海外的也來問)
後來又做了一個 mysql 的版本,不過那位幫我寫文檔的 ada 朋友對
mysql 沒興趣,所以就沒寫出來了.

貼了那篇後,遇到不少業界挖角的....,所以後來我連在台灣也很少寫教學
像這個 http://211.72.210.251/spamcop.html 功能也是很多
做 Free Mail 廠商的 dream, 我用 100 行的procmailrc 語法就實現了,
在單位內實施每個人都說讚呀!比任何產品 anti-spam/anti-virus 都好.
 而且所有定義都是 User Choice,真正符合自身需求. 這個我也在 
netman 兄的網站上貼過.支援 Email 中的任何 encoding  (QP,MIME,or locale/charset problem) 都可以還原.

小弟的東西還很多,看大家怎麼挖囉 ... :mrgreen:


 猫小 回复于:2004-09-16 08:35:13

感觉自己越来越无知,感谢abel,很棒
有时间琢磨一下未知领域


 abel 回复于:2004-09-16 13:42:00

有什需要可先做功課再來詢問哦...

做過功課的人我都很樂意解答的,唯不喜那種只要配置過程的人


 zhangr 回复于:2004-09-16 15:18:54

真是佩服阿!兄弟以前也用过rrd,比起楼主,真是小巫见大巫了! 8-)
刚开始还纳闷,楼主怎么取到CU的数据,后来一看才知道http://bbs.chinaunix.net/forum/已经写的轻轻楚楚了!wget后在匹配一下,真是不错!又学了一手! 8-)
谢谢!


 abel 回复于:2004-09-16 15:31:15

是的,您是內行人,看門道就知道,
重點不過

wget http://bbs.chinaunix.net/forum/ -O $output 2>;/dev/null
rrd_data=`cat $output | grep -E 'class=row[1-2]'|grep gensmall |sed -e :a -e "s/<[^>;]*>;//g;/</N;//ba" | grep -E '^[0-9][0-9]' | tr '\n' ':'`
rrd_data="${rrd_data}0"
/usr/bin/rrdtool-gb update $RRD_FILE $now:$rrd_data

 sed 的那一句,只要了解 sed 那句,就算用 mrtg 都可以做得出來
更何況 phpBB 的 html tag 都差不多,就可以寫成一個 phpBB 的外掛了


 rollingpig 回复于:2004-09-17 09:33:22

RRDTOOL 的中文教程
楼主的这篇文章是网络上最好的中文教程了


http://phorum.study-area.org/viewtopic.php?t=18496

对于初学者来说,更胜于官方的maunal
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/manual/index.html


 abel 回复于:2004-09-17 12:54:24

過獎了~ :em02: 

其實會學 rrdtool 也是有一天,老板說,你給我看每一台的 DNS 數據(mrtg)
這樣我可以很清楚每台的狀況,但是我要知道總合數據...如此才知道整個全
台灣 DNS Query 活動的情形,什麼時候多,什麼時候少,從以前到現在的成
長如何 ...(一台一台看很難看出來總體變化),結果就硬著頭皮去學 RRD 了.

學 RRD 最難的地方就是起頭處,當然你若整體程度不夠(forntend 能力),
學起來效果就不好了,巳經有一定程度(如懂script/perl ..或 SNMP/RMON),
只要學會 RRD 的語法,後面大概沒有什麼困難的了.

官網對於 RRD create 語法講最少,徧那又是最重要的地方,所以我才寫了
這樣的文件 (當然,有幾個小筆誤,但不影響全盤的了解).

我是不限轉載的,只要原文保留即可,我也很樂意分享,但我也不主動拿來這
邊貼,因為信件會如同雪片般來,而且,說實在話,我看到大陸上有幾個人轉
載在自己的 blog 上,但把我的宣告拿掉了,這點也是讓人較失望的地方.


 我爱臭豆腐 回复于:2004-09-17 13:26:51

:P 这是最近半年在cu看到最好的帖子了.至少我是这么认为 :em04:


 rollingpig 回复于:2004-09-17 15:14:42

hehe

其实对于统计CU post&reply的case,用多个rrdfile(不定数的)好像要胜于在一个rrdfile里create 数十个DS,至少在可伸缩性方面会好点(比如真假或减少板块)


#!/bin/ksh
RRDFILEDIR=/var/tmp/rrdfile
RRDGIF=/var/htdocs
#function createRRD,create RRD files
#usages: createRRD <forumID>;
function createRRD {
RRDFILE=$1
rrdtool create $RRDFILE -s 1800 \
DS:post:COUNTER:1800:0:1000 \
DS:reply:COUNTER:1800:0:1000 \
RRA:AVERAGE:0:1:4200   \
RRA:AVERAGE:0:6:1200   \
RRA:AVERAGE:0:24:2400  \
RRA:AVERAGE:0:288:2400
}

#function updateRRD
#usage: updateRRD <forumID>; <post>; <reply>;
function updateRRD {
RRDFILE=$RRDFILEDIR/CU$forumID.rrd
forumID=$1
post=$2
reply=$3
if [ ! -f $RRDFILE ] ; then
         createRRD $RRDFILE
fi

rrdtool update $RRDFILE N:$post:$reply
}


output=$RRDFILEDIR/CU.html
wget http://bbs.chinaunix.net/forum/ -O $output 2>;/dev/null

#save cu post & reply data.
cat $output | egrep  'class=row[1-2]' |grep gensmall |sed -e :a -e "s/<[^>;]*>;//g;/</N;//ba" | egrep  '^[0-9][0-9]' >; $RRDFILEDIR/cu_stat_list

i=1
#get forum id fo chinaunix,for each row id,update the post & reply data.
cat  $output|grep viewforum.php?f=|sed 's/viewforum.php?f=/\|/'|cut -d"|" -f2|cut -d" " -f1 | while read forumID ; do

#post data in line 1,3,5...
post=`cat cu_stat_list|sed "${i}p"`
((i=i+1))
#reply data in line 2,4,6...
reply=`cat $RRDFILEDIR/cu_stat_list|sed "${i}p"`
((i=i+1))

#update.
updateRRD $forumID $post $reply
done


这样,就算是增加或者减少板块,也不需要重新修改程序和重新create rrd files了。


 abel 回复于:2004-09-17 18:10:24

yeh~
您也是個中高手呀~
弟在這個 sample 只考慮用最簡單最快的方式來解決,在擴充性上來想
若不熟悉 RRD 的人必然會碰到您提的問題.

RRD 的 contrib 中附了一個 add_ds.pl , 倒是可以解決這個煩人的困擾哦
讓人可以在既有的 rrd file 中加入新的 ds , 算是可以很 easy 的解決問題
不過若版本刪掉可能就會如您說的一樣

rrdfile 以 Round Robin 的方式來儲存資料是一種很好的方法,儲存的量由
RRA 來決定,但是這個部份在為了更有效應用 rrdfile 中的 real data 可能
也會造成問題.



rrdtool graph filename [-s|--start seconds] [-e|--end seconds]
        [-x|--x-grid x-axis grid and label]
        [--alt-y-grid]
        [-y|--y-grid y-axis grid and label]
        [-v|--vertical-label string] [-w|--width pixels]
        [-h|--height pixels] [-o|--logarithmic]
        [-u|--upper-limit value] [-z|--lazy]
        [-l|--lower-limit value] [-r|--rigid]
        [-g|--no-legend]
        [--alt-autoscale]
        [--alt-autoscale-max]
        [--units-exponent value]
        [--step seconds]
        [-f|--imginfo printfstr]
        [-a|--imgformat GIF|PNG]
        [-c|--color COLORTAG#rrggbb] [-t|--title string]
        [DEF:vname=rrd:ds-name:CF]
        [DEF:vname=mysql,MVM(max/avg/min),host_id,target_id:ds-name:CF]
..........

所以弟除了中文化外,也寫了一個將 RRD 資料存入 mysql 的版本,如此在
應用上,可以達到最大的便利性,弟寫出一套好的網管系統給單位用,如此
單位既不用花錢,我又可以練功,又能符合自己公司的最大需求.將來再適當
美化,個人相信亦是一套非常 Nice 的 Web Base 網管軟體,絕不輸 http://www.cacti.net/  哦


 rollingpig 回复于:2004-09-21 08:55:40

厉害,我对C是一窍不通,仅能看懂代码。
:)


 牙齿晒太阳 回复于:2004-09-27 00:26:11

引用:原帖由 "abel" 发表:

學會RRD 後小弟就從沒有用過 mrtg 了  :mrgreen:



汗~~~看来rrd更强~我还是先继续弄我的mrtg吧,这个还晕着呢


 牙齿晒太阳 回复于:2004-09-27 00:29:41

官方数据查询结果: 211.72.210.251   -  台湾


 abel 回复于:2004-09-27 10:58:44

牙齿晒太阳 兄~
從那來的不重要,重要的是你要先學好基礎的知識,不然碰到問題都不知
道怎處理是不能及格的.另外,就是英文一定要懂,不能不懂英文就來學這
類的東西.

以你的狀況,真的需要好好補補基本功及英文,不然很難學的好
學 mrtg 的前提是要懂 snmp 較好,但 snmp 大多是英文的資料
若設了又不 work 就會回到基本功的層面問題....
環環相扣,讓你不從頭打好基礎都不行...

我學了 linux 一年才碰 SNMP, 並將 SNMP 學的很清楚,對於設備的
MIBS 使用或 NET-SNMP 的應用都了然於心,你一步就要到 mrtg
是很難的,即使到了也只是形似而非神到...這是你應多注意的


 bewhi 回复于:2005-01-25 10:40:33

我想问问abel 大虾,你的


中文字是如何帖上去的? :?:  :?:  :?: 


盼指教。


 abel 回复于:2005-01-25 11:15:50

follow up:
http://phorum.study-area.org/viewtopic.php?t=18496


 skylove 回复于:2005-01-25 13:16:20

太强了。。。寒假我就学rrdtool和继续啃正则吧。。。争取把我这里所有的服务都能作成跟您一样的图形统计 。




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=406037
转载请注明作者名及原文出处



收藏本页到: