Cacti是一套基於PHP,MySQL,SNMP及RRDTool開發的網絡流量監測圖形分析工具。它通過snmpget來獲取數據,使用RRDtool繪畫圖形。它提供了非常強大的數據和用戶管理功能,可以指定每一個用戶能查看的樹狀結構、host以及任何一張圖,同時也能自己增加模板,功能非常強大完善,界面友好。其官方網站:http://www.cacti.net/
CactiEZ是一個專門用作運行cacti的linux發行版,該版本由Jimmy Conner 製作發行,基於CentOS。安裝後只會在系統中安裝cacti和webmin所必須的軟件,整個系統非常小(安裝光盤只有310M),並且已經安裝好了一些cacti的插件,如BackUp,Discovery,Flowview,Haloe,MacTrack,Monitor, NTop,RRDClean,Reports,Thold,Tools,Update等,其中有些需要用戶自己啟用才可使用。整個操作系統一旦安裝完成,配置好IP後即可使用Cacti,為大家節省了安裝配置時間,只不過需要佔用一台服務器。
Qno QVF8025 雙WAN高速路由器
|
該發行版的主頁地址為:http://cactiusers.org/。
從http://cactiusers.org/下載最新的CactiEZ穩定版ISO鏡像文件(截至本文撰稿時是0.4版),刻錄成啟動光盤。然後設置服務器從光盤啟動,放入刻錄好的光盤,重啟服務器即可。服務器會自動進入安裝界面,然後回車,會自動完成Cacti的安裝。
整個安裝過程大概耗時20分鐘左右。安裝結束後,取出光盤,重啟服務器。重起後進入登陸界面,默認系統root用戶的密碼為:CactiEZ。
Qno SVM8641 All Gigabit 大頻寬專用高速安全路由器
|
默認情況下,CactiEZ是以DHCP自動獲取IP地址的。如果您的機器需要配置靜態IP的話,使用以下命令:netconfig
回車,進入接口配置界面:
選擇YES,回車:
根據提示,設置相應的IP和DNS,配置完成後,選擇OK,回車。
接口配置修改後,必須重啟相應的服務,修改的配置才會生效。
輸入以下命令:service network restart
然後用ifconfig查看端口當前的配置,看是否修改成功。
TP-LINK TL-SG3424 網管型交換器
|
使用命令yum install openssh-server安裝SSH服務。根據提示,輸入y,自動下載安裝。
安裝完畢後,我們就可以從遠程登陸上去調測服務器了。(*^__^*) 嘻嘻……
首次登陸,使用root賬戶,密碼是CactiEZ。
然後我們要做的兩件事:一,增加非root賬戶;二,修改SSH配置文件,禁止root賬戶直接登陸,這樣做是為了保證CactiEZ服務器的安全。
使用“useradd 賬戶名”,增加相應的賬戶。
使用“passwd 賬戶名”,為相應的賬戶設置密碼。
接下來,修改SSH配置文件。
找到SSH配置文件所在,使用命令rpm –ql openssh-server
編輯sshd_config文件,使用命令vi /etc/ssh/sshd_config進入SSH配置文件的編輯模式。
在文件中找到PermitRootLogin這一行,將yes改為no,然後保存退出。
同理,要使配置生效,必須重啟相應的服務。
這樣一來,就只能以普通用戶的身份登陸,需要時再切換至root用戶。即使如此,設置密碼時還是不要過於簡單。
首先,修改默認時區。Vi /etc/sysconfig/clock
將ZONE修改為“Asia/Shanghai”:
複製相應的時區文件,替換系統默認時區
對於中國服務器則執行:
# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
CactiEZ自帶有NTP服務,但是默認情況下,並不向外部時鐘源同步時間,而且配置文件過於簡單,不利於控制。建議卸載重裝。命令:yum remove ntp
卸載完成後,重新使用yum install ntp命令安裝NTP服務。
用rpm –ql ntp 查看安裝的文件,並從中找出配置文件所在,進行必要的修改。
這裡只對常用的選項進行介紹,其餘的可以在網上查找相關資料。
告訴服務器默認情況下,不提供NTP查詢服務,不允許外部進行修改,不發送trap報文。
這一項無需修改,按照默認的就好了。
配置你想提供時間同步服務的客戶機所在的網絡,nomodify不允許客戶端修改服務器的配置,notrap不處理客戶端發送的trap報文。
配置你的時間服務器的上層時鐘源,一般可以從http://www.pool.ntp.org/上進行選取。
截圖中給出了區公司網管中心NTP服務器的外部時鐘源作為參考。
其餘的選項都可以保持默認值。然後重啟ntpd服務,使得配置文件生效。
查看對應的進程和端口是否啟用,確保服務是正常的。
ps aux | grep ntp
ntp使用udp協議,記得開放其123端口。
由於CactiEZ默認安裝有linux防火牆iptables,需要設置iptables,開放相關協議的端口。
考慮到iptables的配置較為麻煩,如果不熟悉的話,可以先將相關規則清除掉,再通過其他機制增強CactiEZ服務器的安全性。
刪除iptables規則,可用命令iptables –F。再用iptables –-list進行檢查,確認。
查看端口情況,可以用命令:netstat -unl
查看NTP服務器的同步狀態,使用ntpq -p 。
打*號的是當前提供時鐘源服務的上層時間服務器。
了解服務器當前狀態ntpstat
了解本地服務器和上層時間服務器之間的關係
從上圖看出,我們的上層時間服務器位於第2層,但是在查詢頂層服務器的時候出現了超時,有可能是該服務器做了限制查詢的。
這裡所說的漢化並非完全意思上的中文化,我們所做的只是讓Cacti盡可能多地支持中文的顯示,方便我們查看相關的圖標,但是整個Cacti的配置界面還是英文的。
TP-LINK R600VPN SafeStream™ Gigabit寬頻VPN路由器
|
CactiEZ到了0.4版,應該說已經做的比較好了。
默認情況下,直接輸入中文,在大部分web頁面都可以正常顯示。但是,在測試中發現還是有一個位置不能正常顯示中文,就是Data Source。(你目前看到的這個截圖是已經漢化過的,所以可以正常顯示中文。)
要漢化Data Source的頁面,需要修改data_suorces.php.
具體命令如下:
Find / -name data_suorces.php //找到data_suorces.php所在路徑
編輯data_suorces.php,刪除了"htmlentities"函數即可。
修改前:
form_selectable_cell("<a class='linkEditMain' href='data_sources.php?action=ds_edit&id=" . $data_source["local_data_id"] . "'>" . (($_REQUEST["filter"] != "") ? eregi_replace("(" . preg_quote($_REQUEST["filter"]) . ")", "<span style='background-color: #F8D93D;'>\\1</span>", title_trim(htmlentities( $data_source["name_cache"]), read_config_option("max_title_data_source"))) : title_trim(htmlentities($data_source["name_cache"]), read_config_option("max_title_data_source"))) . "</a>", $data_source[ "local_data_id"]);
修改後
form_selectable_cell("<a class='linkEditMain' href='data_sources.php?action=ds_edit&id=" . $data_source["local_data_id"] . "'>" . (($_REQUEST["filter"] != "") ? eregi_replace("(" . preg_quote($_REQUEST["filter"]) . " )", "<span style='background-color: #F8D93D;'>\\1</span>", title_trim($data_source ["name_cache"], read_config_option("max_title_data_source"))) : title_trim($data_source["name_cache"], read_config_option("max_title_data_source"))) . "</a>", $data_source["local_data_id"]);
至此,php頁面的漢化基本完成。
在大多數情況下,這樣程度的漢化能夠滿足我們的基本要求。
rrdtool的漢化是保證輸出的圖形可以正常顯示中文。這需要重新編譯rrdtool的源代碼,並安裝中文字體包。
a. 安裝編譯器和中文字體包
因為現在Cacti還不支持中文(希望以後的版本默認就可以支持中文,這樣就很省事情了,呵呵),主要是rrdtool在繪圖時不能正常現實中文字體,現在我們就要對rrdtool進行重新編譯。
rrdtool支持中文需要修改源代碼,重新編譯。但是CactiEZ沒有安裝c編譯器gcc、C++編譯器gcc-c++和中文字體ttfonts-zh_CN,在編譯之前,請用yum安裝好這些包。
yum install gcc
yum install gcc-c++
yum install ttfonts-zh_CN (字體默認安裝在/usr/share/fonts/)
b. 下載和安裝rrdtool依賴庫
編譯rrdtool需要先編譯好依賴庫freetype-2.1.10.tar.gz,libart_lgpl-2.3.17.tar.gz,libpng-1.2.10.tar.gz,然後修改rrdtool的源代碼文件,再編譯rrdtool。
整個過程如下:
cd ~
mkdir tmp
cd tmp
wget http://ftp.idilis.ro/mirrors/rrdtool/libs/freetype-2.1.10.tar.gz
wget http://ftp.idilis.ro/mirrors/rrdtool/libs/libart_lgpl -2.3.17.tar.gz
wget http://ftp.idilis.ro/mirrors/rrdtool/libs/libpng-1.2.10.tar.gz
注,實際編譯安裝時建議下載較新的源代碼包。如果想穩妥一點,直接按本文說明安裝即可
tar -zxvf freetype-2.1.10.tar.gz
tar -zxvf libart_lgpl-2.3.17.tar.gz
tar -zxvf libpng-1.2.10.tar.gz
cd freetype-2.1.10
./configure --prefix=/ usr ; make ; make install
cd ../libart_lgpl-2.3.17
./configure --prefix=/usr ; make ; make install
cd ../libpng-1.2.10
./configure --prefix=/usr ; make ; make install
cd ../
c.下載rrdtool和修改源文件
wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.2.26.tar.gz
tar -zxvf rrdtool-1.2.26.tar.gz
cd rrdtool-1.2.26 /src/
現在修改rrdtool的源文件,需要修改的文件是rrd_graph.c
修改rrd_graph.c:
vi rrd_graph.c
刪除rrd_graph.c文件中以下兩行:
setlocale(LC_TIME,"");
setlocale(LC_CTYPE,"");
在原來setlocale(LC_CTYPE,"")的位置增加以下內容:
setlocale(LC_ALL,"zh_CN.UTF-8");
現在修改完畢,可以開始編譯了
d.編譯新的rrdtool
編譯前運行
yum install ruby //安裝ruby的語言支持環境,編譯rrdtool時需要;不安裝,編譯也可以通過,最好是安裝進去
cd ../
./configure --prefix=/usr --exec-prefix=/usr/rrdtool1.2.26
make
make install
新版本rrdtool的可執行文件安裝在/usr/rrdtool1.2.26/bin中,系統原有的在/usr/bin中。需要修改cacti的設置,用新編譯好的rrdtool版本替換原有版本。
e. 修改Cacti的rrdtool設置,使其支持中文設備名和圖片中輸出中文
登陸Cacti,在主頁的左邊點擊setting,選擇paths頁(console>>setting>>paths)
將RRDTool Binary Path修改為:/usr/rrdtool1.2.26/bin/rrdtool
還需要修改rrdtool的字體設置:
登陸Cacti,在主頁的左邊點擊setting,選擇paths頁(console>>setting>>paths)
將RRDTool Default Font Path修改為:/usr/share/fonts/zh_CN/TrueType/gkai00mp.ttf
點擊save。
網管中心下載的是1.2.27版本的rrdtool源代碼編譯安裝的,使用的字體是zysong.ttf。
到這裡,Cacti服務器的安裝和漢化基本完成。
D-LINK mydlink 2 Bay 網路儲存伺服器DNS-320L
|
任何使用yum命令的操作完成之後,必須手工將其服務關閉。
默認情況下,CactiEZ服務器會在夜間實行自動更新功能。這對服務器的穩定性不利。尤其是,如果服務器自動升級了操作系統內核,很可能造成Cacti流量監控系統罷工。對於自動安裝的系統,不清楚底層相關配置的話,自動升級引起的問題很可能讓你束手無策。
所以,為了服務器的穩定性,強烈建議關閉yum自動更新功能。
注:即使使用手工的方式升級操作系統套件,但是堅決不能升級內核相關的東西。除非你很有信心可以自己搞定。
使用命令:service yum stop
並建議同時關閉yum的自啟動項目,命令:chkconfig yum off
查看CactiEZ的自啟動項目:chkconfig --list
這裡,yum在所有的啟動級別都是off,說明已經關閉yum的自啟動項目,yum不會隨服務器重啟而自動開啟。
如果你對iptables很熟悉並樂於用iptables來增強服務器的安全性的話,大可跳過本節。
如果你覺得iptables比較麻煩,又不想自己的服務器完全裸露在網絡中,可以嘗試本節介紹的方法。但是這種方法提供的功能有限,不能完全取代iptables。
/etc/hosts.allow和/etc/hosts.deny兩個文件是用來控制遠程訪問的,通過它可以允許或者拒絕某個ip或者ip段的客戶訪問linux的某項服務。
/etc/hosts.allow控制可以訪問本機的IP地址,/etc/hosts.deny控制禁止訪問本機的IP。兩個文件的檢查順序如下:
先判斷訪問是否被允許hosts.allow
->
允許就通過
不允許看訪問是否被禁止hosts.deny
->
如果2個文件都沒提到該服務那就默認允許
兩個配置文件的格式如下:
#服務進程名:主機列表:當規則匹配時可選的命令操作
server_name:hosts-list[:command]
例如,限制所有的ssh,除非從218.64.87.0——127上來:
hosts.allow:
in.sshd:218.64.87.0/255.255.255.128
hosts.deny:
in.sshd:ALL
其中IP地址範圍的寫法有若干中,主要的三種是:
1.網絡地址——子網掩碼方式:
218.64.87.0/255.255.255.0
2.省略的網絡地址方式
218.64.(即以218.64打頭的IP地址)
3.縮略子網掩碼方式,既數一數二進制子網掩碼前面有多少個“1”比如:
218.64.87.0/255.255.255.0《====》218.64.87.0/24
這裡給出網管中心Cacti服務器的配置,供大家參考。
CactiEZ默認安裝了其他一些服務,有興趣的同事可以自行研究。
如果只是用CactiEZ監控流量的話,以下服務均可關閉。
命令:service 服務名stop
chkconfig 服務名off
相關的服務有:
iptables 如果不用,可以有hosts.allow和hosts.deny替代
webmin linux圖形化配置界面,感興趣的同事可以看看,不過不怎麼好用,建議關閉
nagios 另一個服務監控系統(適用主機的),默認關閉,要啟用必須手工打開
ntop 流量分析軟件,默認關閉,要啟用必須手工打開
註釋掉定期作業中不需要的,默認的安裝如下:
我們只保留定期查詢流量的作業和備份的作業。將其餘2個netflow相關的作業OVER掉。
至此,終於可以進入Cacti流量監控系統的基礎應用部分了。真累人呀~555
華碩Wireless-N900 雙頻 Gigabit 無線路由器RT-N66U
|
要監控鏈路的流量,首先要將鏈路所屬的設備添加進去。
創建設備:雙擊在左上角“console”在打開的頁面中選擇“ Create devices for network”
在打開的頁面的右上角中單擊“ADD” 添加設備,並在打開的頁面中填寫相關的信息:填好後再右下角點擊“create”創建該設備監控。
(1)Description:該設備的描述。
(2)hostname:填寫該設備的IP地址。
(3)Host Template:選Generic SNMP-enable Host
(4)Monitor Host:打上勾,就會在minitor插件中出現一個主機的圖標。Cacti服務器就會在後台不停的ping這個主機,ip就是你先前填寫在hostname中的那個。
(5)Downed Device Detection:檢測設備down機的方式,如果是通過SNMP採集流量,一般選擇ping和SNMP。如果單純只是鏡像某條鏈路或者主機,選擇ping即可。
其他的默認就Ok。
(6)SNMP版本和團體字符視具體情況而定。其餘默認OK。
注意,如果是要採集設備的流量,在最下面的Associated Data Queries應該有SNMP-Interface Statistics這個數據查詢模板才對。
點擊右邊的Verbose Query,可以看到SNMP查詢結果。在後面打造自己的圖形模板時有些變量可能會用到。然後單擊Save進行保存。
如果Cacti服務器可以找到相應的設備,那麼在Devices界面,相應的設備狀態應該是up的。
Vigor 2110Vn 11N VoIP極速無線路由器
|
點擊相應的設備進入,點擊右上角的“ * Create Graphs for this Host ”為主機創建圖像。
在彈出的頁面中選擇需要監控的端口,在右下角下拉式菜單中選擇“In/Out Bit(64-bit counters)”這樣可以監控大於100M的流量。然後點擊Create創建圖表。
創建的圖表,默認你是不能直接看到的,必須把它掛到圖形樹上。Graphs插件看到的是圖形樹上的東西,想看什麼圖表,就把什麼圖表掛上去。
加碼送8G隨身碟
華碩802.11ac雙頻無線飆速路由器RT-AC66U
|
首先,我們來創建一棵樹。在左邊的菜單中單擊“ Graph Trees ”,在打開的頁面中點擊右上角“ADD”創建一棵樹。
然後彈出一個菜單,給這棵樹取名,例如“南寧城域網”。
下一項默認即可。點擊Create,這棵樹就生成了。
退回到圖形樹的界面,我們就看到這棵樹。
在這裡,我們看到很多樹。其中,除了我們之前創建的“南寧城域網”這棵樹,還有“Cacti服務器”這棵樹,還有“玉林城域網”,“欽州城域網”,“貴港城域網”等。
有了樹,我們就可以創建樹枝,這樣做是為了圖形查看方便的需要。
我們可以創建一個樹枝叫“核心層”,創建一個樹枝叫“匯聚層”,把核心層上聯鏈路的圖表掛在核心層的樹枝上,把匯聚層上聯鏈路的圖表掛在匯聚層的樹枝上。如果有特別關注的系統或者大客戶電路,可以單獨為其建立一棵樹,如上圖的“電信第二出口”,專門監控各地市的第二出口的電路。記住,樹是把圖表分類,樹枝只是將圖表分層顯示而已。
樹枝的創建也很簡單,在上圖的圖形樹中,任意選擇一棵樹單擊進去。如玉林城域網
在右上角有個“Add”,單擊它即可創建想要的樹枝。
(1)Parent Item:這個選項是說樹枝掛在哪裡。默認就是root,樹根。很形象,就是從樹根長出樹枝來,但是樹枝的創建是沒有限制的。有時為了細分圖形,創建了一級的樹枝,還需要再創建二級,三級的樹枝。這個時候,就是通過這個選項告訴服務器,我要創建哪一級的樹枝,並且掛在誰的下面。掛在root下肯定就是第一級的樹枝,掛在第一級樹枝下的就是第二級的了,以此類推。
(2)Tree Item Type
當創建樹枝的時候選Header。(一般都選Header)
當想在這裡直接添加圖表或者主機時,選擇Graph或Host。(不建議這樣做,當圖表很多的時候)
(3)Title:給樹枝一個名稱。
其餘的默認即可。
圖形樹創建完畢後,只是給了一個框架,裡面什麼都沒有。就像你買了一個書櫃,都分類貼好標籤,哪一層放什麼書。現在就等你放書上去了。我們先前已經將需要監控的圖表生成,現在只需把圖表掛上去即可。
在console界面的Management --》Graph Management中,可以看到我們之前創建的圖形。
如果圖形較多,可以通過Host選項篩選。
找到你想要的圖形,單擊它,(單擊藍色的圖形標題就會進入該圖形界面,這裡不需要)
選中之後會變成黃色。
在右下角的下拉菜單中,選擇一個動作。
一般用的最多的就2個,一個是Delete,刪除掉不需要的圖表;
另一個是Place on a tree,放置在某棵樹上。
選定之後,點擊“go”即可。如果是刪除,它會讓你再次確認。如果是放置在某棵樹上,它會讓你選擇掛在哪裡,是root還是某個樹枝上。根據提示操作即可。搞定之後,就跑到graphs界面下看看自己的圖表吧。
華碩AC超值組合(RT-AC66U+PCE-AC66)
|
留言列表