本文主要介紹說明用於支持 Cacti 運作的 PHP+RRDtool 環境的詳細配置方法。使其能集中式監控多台,不同平台類型的伺服器。以及支持 SNMP 網路設備運作狀態。
前言
Cacti 功能類似於我們所熟悉的 MRTG 。 MRTG 確實是非常好的老牌系統監控工具,但由於他歷史實在很久了,使得許多功能以及配置等方面都比較落後。實現得比較費勁,管理起來很麻煩。比如我有幾百個被監測點,分佈在不同的機房,而且我需要將這些伺服器和網路設備分類,這樣的話我就要將這些被監測點放在不同的 mrtg 配置文件中,運行多個 crontab,而且還要自己寫了一些 html 頁面對其進行管理。
Cacti 其實是一套 php 程序,一個 rrdtool 工具。它運用 snmpget 採集數據,使用 rrdtool 繪圖。界面非常漂亮,它提供了強大的數據管理和用戶管理功能,一張圖是屬於一個 host 的,每一個 host 又可以掛載到一個樹狀的結構上。
用戶的管理上,作為一個開源軟體,它做到為指定一個用戶能查看的“樹”、host、甚至每一張圖,還可以與 LDAP 結合進行用戶的驗證。 Cacti 還提供自己增加模板的功能,讓你添加自己的 snmp_query 和 script 。功能相當強大!
本文前半部分是教程,主要介紹了 Cacti 以及其 PHP 運行環境的安裝配置。後半部分將實際舉例如何使用 Cacti 監控諸如 Linux,Windows 。以及支持 SNMP 管理協議的路由器等網路設備。
![]() ![]() |
環境搭建
Cacit 運行環境需要 PHP + Mysql + rrdtool 以及 snmp 工具的支持。
下邊是本次配置需要用到的軟體。
Catci:
PHP:
Apache:
httpd-2.2.6.tar.gz
Mysql:
mysql-5.1.24-rc.tar.gz
開始構建完整的 PHP 運行的環境,我們以全新安裝的 RedHatAs4 updata4 操作系統環境為例。
首先編譯安裝Apache httpd server
第二步安裝 PHP+GD 等所需的支持插件
編譯安裝libxml
編譯安裝zlib
編譯安裝jpeg支持
( 該版本的 jpeg 在實際安裝過程中,make install 的時候會出現好幾個找不到目錄,或目錄不存在的 error 。只需按照提示人手創建缺失目錄,然後再令其 make install 直到無任何錯誤提示且順利完成為止。 )
編譯安裝 libpng
編譯安裝 freetype
編譯安裝 libart_lgpl
編譯安裝 gettext
編譯安裝 gd 庫 :
編譯安裝 Curl 支持
編譯安裝 PHP
要改的有如下幾處
#LoadModule php5_module modules/libphp5.so AddType application/x-httpd-php .php |
LoadModule php5_module modules/libphp5.so |
請把上面的 # 號去掉,還有找到
DirectoryIndex index.html index.html.var
在後面加 index.php 讓它把 index.php 做為默認頁
用 ZendOptimizer 加速 PHP
安裝的時候注意輸入正確的安裝 apache 的路徑等內容 !
安裝完畢 , 再看看 phpinfo 頁面的 zend 選項就發現了 !!
安裝MYSQL# groupadd mysql # useradd -g mysql mysql # tar zxvf mysql-5.1.24-rc.tar.gz # cd mysql-5.1.24-rc # ./configure --prefix=/usr/local/mysql --localstatedir=/data/mysql ( 指定數據文件目錄 ) --without-innodb --without-debug --with-extra-charsets=gbk --with-extra-charsets=all --enable-assembler --with-pthread --enable-thread-safe-client --with-client-ldflags=-all-static # make && make install # cp ./support-files/mysql.server /etc/init.d/mysql ( 複製 Mysql 啟動服務至系統 ) # chmod 777 /etc/init.d/mysql ( 賜予可執行許可權 ) # chown mysql:mysql /data/mysql ( 設置數據文件目錄屬性 ) |
設置數據文件目錄屬性這一步相當重要,許多朋友第一次使用 tar 包安裝 Mysql 的時候就因該目錄許可權問題導致 Mysql 無法啟動。相當頭大 .
# /usr/local/mysql/bin/mysql_install_db ( 初始化資料庫 ) # service mysql start ( 啟動 Mysql) # /usr/local/mysql/bin/mysqladmin -u root -p password 'xxxxx' ( 設置管理員密碼 xxx 默認值為空 ) |
好了,至此 mysql 安裝完畢 .
這樣構建 Cacit 運行的 PHP+Mysql 環境就基本上完成了。
下邊開始安裝 Cacit 所需要的 rrdtools 圖形工具以及 snmp 工具
編譯安裝 rrdtools
# tar zxvf rrdtool-1.2.27.tar # cd rrdtool-1.2.27 # ./configure --prefix=/usr/local/rrdtool # make && make install |
如果 ./configure 時出現下面這個錯誤
configure: error: Please fix the library issues listed above and try again. |
表明系統有功能缺失,需安裝 libart_lgpl-devel.rpm 這個包
如果還是提示聽樣的錯誤,有可能是找不到 FreeType
把 /usr/local/freetype2/lib/pkgconfig 下的 .pc 文件拷貝到 /usr/lib/pkgconfig 下即可
如果 make install 時出現 [tclrrd.o] 錯誤
就安裝 tcl-8.4.7-2.i386.rpm 以及 tcl-devel-8.4.7-2.i386.rpm 這 2 個包
安裝 net-snmp、snmpwalk 和 snmpget 命令 # rpm -qa | grep net-snmp ( 查看系統中有否已經裝有所需的軟體 ) net-snmp-5.0.9-2.30E.15 net-snmp-devel-5.0.9-2.30E.15 net-snmp-libs-5.0.9-2.30E.15 net-snmp-utils-5.0.9-2.30E.15 |
沒有或者缺少的話都需要逐一安裝上。
而且還很有可能會因 rpm 的依存關係無法順利安裝,須使用 - - nodeps 參數。
以上所需的 rpm 安裝包都能在 RedHatAs4 安裝光碟上找到 .
![]() ![]() |
安裝配置
至此,Cacti 所需的運行環境都已經準備好了,接下來開始進行安裝以及配置。
稍微修改系統中 snmp 的配置
# vi /etc/snmp/snmpd.conf |
安裝 / 配置 cacti
$database_type= “ mysql ” ; $database_default = “資料庫名稱” ; $database_hostname = “默認是 localhost ” ; $database_username = “用戶名” ; $database_password = “密碼” ; |
更改用戶、密碼等項與上面給出的對應保存退出
*/5 * * * * /usr/local/php/bin/php /data/web_server/admin/cacti/poller.php \ > /dev/null 2>&1 (其中 /usr/local/php/bin/php 這個為 php 的安裝目錄) |
說一下 cacti 設置頁中各項“零件”的路徑。
當修改好新密碼進入,第一個顯示出的頁面就是讓你設置 rrdtool,snmp 等工具的路徑。這是個很重要的環節,必須無誤,要不然 cacti 將無法生成出統計圖。
snmpwalk Binary Path : /usr/bin/snmpwalk snmpget Binary Path: /usr/bin/snmpget RRDTool Binary Path: /usr/local/rrdtool/bin/rrdtool PHP Binary Path: /usr/local/php/bin/php Cacti Log File Path: /data/web_server/admin/cacti/log/cacti.log Cactid Poller File Path: /data/web_server/admin/cacti/poller.php |
默認的配置中會出現許多“ NotFound ”
按照上邊的路徑把“ NotFound ”的項都重新填上。
手動運行一次
/usr/local/php/bin/php /data/web_server/admin/cacti/poller.php > /dev/null 2>&1
你就能在頂上 graphs 中 localhost 裡頭看到本機的內存,CPU,登陸用戶等的統計圖 .
但默認 Cacti 是沒有創建網卡流量的監控圖的。要我們自己來加。
回到 console 菜單
選擇 Devices 監控設備。
然後點擊右上角的 Add 進行添加
Description 設備名稱 ( 可隨意輸入 )
Hostname 設備地址 ( 如果是本機就填 127.0.0.1 )
Host Template 設備的類型 ( 選擇 ucd/net SNMP Host )
然後其他按照默認即可,如下圖
點 create 創建。
如果剛才填寫的地址無誤,創建成功后,會在該頁面左上方出現所新建設備的 SNMP Information
然後點擊隔壁醒目的 * Create Graphs for this Host 即開始創建監控圖表
如圖 6,溝選你所要監控的網卡以及 IP,點 create 。
這樣就完成了你所指定設備統計圖的創建。
點擊菜單中的 Graph Management 即可瀏覽到你剛才所創建的圖表,如圖 7 箭頭所示。
有一個小技巧,初次要求 cacti 創建指定設備的統計圖表,通過 Graph Management 進入圖 8 所示頁面時,統計表圖片會是一個 X ( 叉 ) 。這是因為在配置初期指定系統中每 5 分鐘執所行的 php 語句還沒到點運作。要麼你就等 5 分鐘,要麼你就直接進入系統手動執行:
/usr/local/php/bin/php /data/web_server/admin/cacti/poller.php > /dev/null 2>& |
然後曲線表中就能出現第一個峰值,每 5 分鐘自動更新。 24 小時后,曲線圖就能完整地出現在你眼前。
回到圖 7 Graph Management 的界面勾選新建的圖表項,然後在下邊
Choose an action 框中選擇 Place on a Tree(default Tree)
就能把該圖表類似快捷方式的樣子張貼到本文圖 1 所示的 Graphs,Default tree 欄目中。然而你也能自己在菜單欄的 Graph Trees中新建定製欄目,然後用相同的方法把新建的統計圖往你所定製的欄目中放。
Cacti 的強大功能不單止可以通過 snmp 獲取裝有 Linux,Unix 操作系統伺服器的運行狀態,還能監控 Windows 系統伺服器。跟諸如 Cisco,Linksys, 路由器,交換機,無線 AP 。或者其他支持 snmp 管理協議的網路設備。
![]() ![]() |
實際應用
下邊我們舉出實應用的例子。
設備結構:
Cacti 已經配置完成,安裝在 server1 上。第一台添加到監控表裡邊的是路由器 RV042 。打開路由器的 WEB 設置頁面,勾選並啟用 SNMP 功能。如圖 9
Send SNMP Trap to: 192.168.3.2( server1 的 IP )
然後其他輸入框按照默認留空即可,但需留意 Get Community Name: 所填寫的組名: public 。保存設置。
登陸 Cacti ,console 菜單欄中點擊 Devices。跟前邊圖 1 至 8 添加新設備以及創建統計圖表的步驟相同
Description 設備名稱 ( 我們這裡自定為 Linksys RV042)
Hostname 設備地址 ( 路由器的地址 192.168.3.1 )
Host Template 設備的類型 ( 選擇 ucd/net SNMP Host 或者是 Cisco Router )
然後其他按照默認即可。
創建成功后,也會在該頁面左上方出現所新建設備的 Linksys RV042 SNMP Information
點擊隔壁 *Create Graphs for this Host 創建監控圖表
路由器 RV042 的埠以及 IP 等數據都取出來了。
勾選好所要監控的埠,點擊 create 就能完成路由器監控圖表的建立。
Cacti 運行在 Server1 上,所以配置方式跟前邊所介紹是一樣的,這裡就掠過了。但順帶說一下,如果環境中還存在 Server3,而且跟 Server1 一樣都是 Linux 系統,需要添加到 cacti 裡頭。哪么只需在該伺服器上修改 snmp 配置,修改的內容也跟 server1 上幾乎一樣,不同的是。
編輯 /etc/snmp/snmpd.conf 的時候,原來填 127.0.0.1 ( 本機地址 ) 的地方換成 Cacti 所在運行的伺服器 IP,即 server1: 192.168.3.2
改為:accessnotConfigGroup""anynoauthexact all none none
重新啟動 snmp 服務
# service snmpd restart
在 Cacti ,Devices中創建新設備,
填寫 Server3 IP 地址,設備類型: ucd/net SNMP Host , 創建圖表 , 完成。
到 Server2 的 win2003 系統了。
通常由於 SNMP 是一個建議關閉的協議 ( 因為有安全漏洞 ),所以 Windows 2003 不是預設安裝的。但 Cacti 用的就是 SNMP 協議,而且伺服器處於內網中,有路由器防火牆對外隔著,所以裝吧。
控制面板– > 添加或刪除程序– > 添加 / 刪除 Windows 組件– > 管理和監視工具– > 簡單網路管理協議 (SNMP)
這台服務是被監控方,所以需要像剛才舉例的 Server3 那樣修改 SNMP 的配置。否則在 server 1 裡頭的 Cacti 則永遠也收不到 SNMP 的消息。打開 Services 窗口並找到 SNMP 服務,打開右鍵菜單,選擇屬性。在打開的窗口中找到“安全”選項頁。在選項頁中有兩部分設置,上半部分是指 SNMP 服務接受哪種 Community 指示字,預設情況下 Windows 2003 不對任何指示字反饋,我一般都添加設置為。
團體名稱:public, 許可權:只讀
下半部分添加可信任的主機名、IP 或是 IPX 名稱。這裡就也是添加 server1 的 IP 192.168.3.2 如圖 11
如果你安裝了防火牆,還要記得打開 UDP 161 埠。
完成後重新啟動 SNMP server 服務
登陸 Cacti 點 Devices 創建新設備。
填寫 Server2 IP 地址,設備類型:Windows 2000/XP hosts
從 Windows 上獲取到的 SNMP 信息也挺多,CPU,內存,虛擬內存,硬碟空間使用,網卡流量,一應俱全。最後創建圖表 , 完成。
![]() ![]() |
總結
Cacti 真是一個世界。在正式使用 Cacti 接管原來的 MRTG 負責伺服器狀態監控的這段時間, 我所能最深刻感受到的,不止是它漂亮的界面跟圖表。而且是對監控設備的創建,跟管理,都有著史無前例地簡單,高效。作為系統管理員,我真相當感激 Cacti 的作者能開發出這一套如此拔尖的監控程序。
雖然它所運行的 PHP 環境以及 RRDtool 在前期配置的時候要花好多的時間跟功夫,
但也未嘗不是一個新的選擇。試想一下,你只需一陣子的功夫在一台伺服器上把環境配好,Cacti 裝好。以後,無論你要再添更多的伺服器,要了解他們的”情緒”,就只需簡單地在瀏覽器上登陸 Cacti – > 新建設備 – > 新建圖表。區區幾步,整整有條的伺服器列表,CPU,硬碟,網卡等等讀數的曲線都能一清二楚地顯示在你面前。
當然! Cacti 帶來的強大功能以及方便還遠不止這些,就交由大家之後去使用,去體驗了。(責任編輯:A6)
[火星人 ] 使用 cacti 批量監控伺服器以及其 PHP 運作環境配置已經有2444次圍觀