歡迎您光臨本站 註冊首頁

使用 cacti 批量監控伺服器以及其 PHP 運作環境配置

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  
本文主要介紹說明用於支持 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:

  1. cacti-0.8.6j.tar.gz
  2. rrdtool-1.2.27.tar
  3. net-snmp-5.0.9-2.30E.15
  4. net-snmp-devel-5.0.9-2.30E.15
  5. net-snmp-libs-5.0.9-2.30E.15
  6. net-snmp-utils-5.0.9-2.30E.15

PHP:

  1. php-5.2.6.tar.gz
  2. curl-7.15.0.tar.gz
  3. freetype-2.1.9.tar.gz
  4. gettext-0.16.1.tar.gz
  5. gd-2.0.35.tar.gz
  6. jpegsrc.v6b.tar.gz
  7. libart_lgpl-2.3.17.tar.gz
  8. libpng-1.2.18.tar.gz
  9. libxml2-2.6.32.tar.gz
  10. ZendOptimizer-3.3.0a-linux-glibc21-i386.tar.gz
  11. zlib-1.2.3.tar.gz
  12. libxml2-2.6.32.tar.gz

Apache:

httpd-2.2.6.tar.gz

Mysql:

mysql-5.1.24-rc.tar.gz

開始構建完整的 PHP 運行的環境,我們以全新安裝的 RedHatAs4 updata4 操作系統環境為例。

首先編譯安裝Apache httpd server

  1. # tar zxvf httpd-2.2.6.tar.gz
  2. # cd httpd-2.2.6
  3. # ./configure --prefix=/usr/local/apache26 --enable-module=so --with-mpm=worker --enable-module=rewrite
  4. # make && make install

第二步安裝 PHP+GD 等所需的支持插件

編譯安裝libxml

  1. # tar zxvf libxml2-2.6.32.tar.gz
  2. # cd libxml2-2.6.32.tar.gz
  3. # ./configure --prefix=/usr/local/libxml2/
  4. # make && make install

編譯安裝zlib

  1. # tar zxvf zlib-1.2.3.tar.gz
  2. # cd zlib-1.2.3
  3. #./configure --prefix=/usr/local/zlib2/
  4. # make && make install

編譯安裝jpeg支持

  1. # tar -zxf jpegsrc.v6b.tar.gz
  2. # cd jpeg-6b/
  3. # ./configure --prefix=/usr/local/jpeg6
  4. # make
  5. # make install-lib
  6. # make install

( 該版本的 jpeg 在實際安裝過程中,make install 的時候會出現好幾個找不到目錄,或目錄不存在的 error 。只需按照提示人手創建缺失目錄,然後再令其 make install 直到無任何錯誤提示且順利完成為止。 )

編譯安裝 libpng

  1. # tar zxvf libpng-1.2.18.tar.gz
  2. # cd libpng-1.2.18.tar.gz
  3. #cp scripts/makefile.gcmmx makefile
  4. #./configure --disable-shared --prefix=/usr/local/libpng2/
  5. # make && make install

編譯安裝 freetype

  1. # tar zxvf freetype-2.1.9.tar.gz
  2. # cd freetype-2.1.9
  3. #./configure --disable-shared --prefix=/usr/local/freetype2/
  4. # make && make install

編譯安裝 libart_lgpl

  1. # tar zxvf libart_lgpl-2.3.17.tar.gz
  2. # cd ibart_lgpl-2.3.17
  3. #./configure --disable-shared --prefix=/usr/local/libart/
  4. # make && make install

編譯安裝 gettext

  1. # tar zxvf gettext-0.16.1.tar.gz
  2. # cd gettext-0.16.1
  3. # ./configure --prefix=/usr/local/gettext/
  4. # make && make install

編譯安裝 gd 庫 :

  1. # tar zxvf gd-2.0.35.tar.gz
  2. # cd gd-2.0.35
  3. # ./configure --prefix=/usr/local/gd2 --with-zlib=/usr/local/zlib2/ --with-png=/usr/local/libpng2/ --with-jpeg=/usr/local/jpeg6/ --with-freetype=/usr/local/freetype2/ --with-libart=/usr/local/libart/ --with-gettext=/usr/local/gettext/ --with-libxml=/usr/local/libxml2
  4. # make && make install

編譯安裝 Curl 支持

  1. # tar zxvf curl-7.15.0.tar.gz
  2. # cd curl-7.15.0
  3. # ./configure --prefix=/usr/local/curl
  4. # make && make install

編譯安裝 PHP

  1. # tar zxvf php-5.2.6.tar.gz
  2. # cd php-5.2.6
  3. # ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache26/bin/apxs --with-jpeg-dir=/usr/local/jpeg6/ --with-png-dir=/usr/local/libpng2/ --with-gd=/usr/local/gd2/ --with-freetype-dir=/usr/local/freetype2/ --with-zlib-dir=/usr/local/zlib2/ --with-mysql=/usr/local/mysql --with-curl=/usr/local/curl --with-gettext=/usr/local/gettext
  4. # make && make install
  5. # cp php.ini-dist /usr/local/php/lib/php.ini ( 拷貝 PHP 配置文件至安裝目錄 )
  6. # vi /usr/local/apach26/conf/httpd.conf ( 修改 apache 配置文件並載入 PHP 支持 )

要改的有如下幾處

  1. 一般都在 #AddType application/x-tar .tgz 下加一行 :
#LoadModule php5_module modules/libphp5.so    AddType application/x-httpd-php .php

  1. 如果你搜索其它地方沒有以下這行 :
LoadModule php5_module modules/libphp5.so

請把上面的 # 號去掉,還有找到
DirectoryIndex index.html index.html.var
在後面加 index.php 讓它把 index.php 做為默認頁

  1. 保存 httpd.conf 文件 .
    啟動 apache
    # /usr/local/apache2/bin/apachectl start
    如果沒有出錯 , 寫一個測試頁放到你網頁目錄下 . 訪問就應該可以看到 php 的版本等信息了 !

用 ZendOptimizer 加速 PHP

  1. #tar zxvf ZendOptimizer-2.5.3-linux-glibc21-i386.tar.gz
  2. #cd ZendOptimizer-2.5.3-linux-glibc21-i386
  3. #./install.sh


安裝的時候注意輸入正確的安裝 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

  1. com2secnotConfigUser default public
    改為:com2secnotConfigUser 127.0.0.1 public
  2. access  notConfigGroup ""  any   noauth    exact  systemview  none none
    改為:accessnotConfigGroup""anynoauthexact all none none
  3. #view all    included  .1         80
    將前面的 # 註釋 去掉。
    保存退出 :wq
  4. 重新啟動 snmp 服務
    # service snmpd restart

安裝 / 配置 cacti

  1. # tar zxvf cacti-0.8.6j.tar.gz
  2. # mv cacti-0.8.6j /data/web_server/admin/cacti
    ( 把 cacit 剪切到自定的 web 目錄下 )
  3. # chmod 777 – Rf /data/web_server/admin/cacti
    ( 設置目錄許可權 , 避免因許可權問題而導致目錄無法寫入 )
  4. # cd /data/web_server/admin/cacti
    在Mysql中創建一個新的庫,並導入cacti 目錄中cacti.sql 並設置好該表的用戶許可權,然後編輯 cacti 的資料庫配置文件。
  5. # vi /data/web_server/admin/cacti/include/config.php
    $database_type= “ mysql ” ;    $database_default = “資料庫名稱” ;    $database_hostname = “默認是 localhost ” ;    $database_username = “用戶名” ;    $database_password = “密碼” ;


    更改用戶、密碼等項與上面給出的對應保存退出

  6. # crontab – e (加入自動執行規則,每 5 分鐘執行。)
    */5 * * * * /usr/local/php/bin/php /data/web_server/admin/cacti/poller.php  \         > /dev/null 2>&1   (其中 /usr/local/php/bin/php 這個為 php 的安裝目錄)

  7. 保存退出:wq
  8. 在 apache 上設置好 cacti 所在 web 目錄
  9. 打開瀏覽器 http://youhostname/cacti
  10. 進入 cacti 的初始設置頁面
    第一次默認登陸賬號:admin 密碼 admin
    登陸后它就會讓你立即修改新密碼

說一下 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,登陸用戶等的統計圖 .


圖 1. Cacti 統計圖

但默認 Cacti 是沒有創建網卡流量的監控圖的。要我們自己來加。

回到 console 菜單

選擇 Devices 監控設備。


圖 2. 設備監控


圖 3. 添加設備

然後點擊右上角的 Add 進行添加

Description 設備名稱 ( 可隨意輸入 )

Hostname 設備地址 ( 如果是本機就填 127.0.0.1 )

Host Template 設備的類型 ( 選擇 ucd/net SNMP Host )

然後其他按照默認即可,如下圖


圖 4. 添加的新設備

點 create 創建。

如果剛才填寫的地址無誤,創建成功后,會在該頁面左上方出現所新建設備的 SNMP Information

然後點擊隔壁醒目的 * Create Graphs for this Host 即開始創建監控圖表


圖 5. 創建圖表-1


圖 6. 創建圖表-2

如圖 6,溝選你所要監控的網卡以及 IP,點 create 。

這樣就完成了你所指定設備統計圖的創建。


圖 7. 添加的設備統計圖

點擊菜單中的 Graph Management 即可瀏覽到你剛才所創建的圖表,如圖 7 箭頭所示。


圖 8. 統計圖表

有一個小技巧,初次要求 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 管理協議的網路設備。





實際應用

下邊我們舉出實應用的例子。
設備結構:

  1. 網路入口路由器 Linksys RV042。
    Linksys 的一款路由器,主要負責,外網接入路由,防火牆,以及埠映射。
  2. server1 WEB 應用伺服器
    操作系統: Linux RedHat As4
    Eth0,Eth1 雙網卡工作。前者接入路由器映射至外網。後者直連至 server2
    進行反向代理 ( proxy ) 以及數據備份以及同步等功能。
    IP 分別為 192.168.3.2 以及 192.168.10.2
  3. server2儲存,FTP與WEB 應用伺服器
    操作系統: Windows2003 r2
    與 server1 網路環境相仿,雙網卡工作。
    IP 分別為 192.168.3.3 以及 192.168.10.3

Cacti 已經配置完成,安裝在 server1 上。第一台添加到監控表裡邊的是路由器 RV042 。打開路由器的 WEB 設置頁面,勾選並啟用 SNMP 功能。如圖 9

Send SNMP Trap to: 192.168.3.2( server1 的 IP )

然後其他輸入框按照默認留空即可,但需留意 Get Community Name: 所填寫的組名: public 。保存設置。


圖 9. 保存設置

登陸 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 創建監控圖表


圖 10. 創建監控圖表

路由器 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

  1. com2secnotConfigUser default public
    改為:com2secnotConfigUser 192.168.3.2(server1 地址) public
  1. access  notConfigGroup ""  any   noauth    exact  systemview  none none

改為:accessnotConfigGroup""anynoauthexact all none none

  1. #view all    included  .1         80
    將前面的 # 註釋 去掉。
  1. 保存退出 :wq

重新啟動 snmp 服務

# service snmpd restart

在 Cacti ,Devices中創建新設備,

填寫 Server3 IP 地址,設備類型: ucd/net SNMP Host , 創建圖表 , 完成。

到 Server2 的 win2003 系統了。

  1. 給 Windows 安裝 SNMP 協議支持

    通常由於 SNMP 是一個建議關閉的協議 ( 因為有安全漏洞 ),所以 Windows 2003 不是預設安裝的。但 Cacti 用的就是 SNMP 協議,而且伺服器處於內網中,有路由器防火牆對外隔著,所以裝吧。

    控制面板– > 添加或刪除程序– > 添加 / 刪除 Windows 組件– > 管理和監視工具– > 簡單網路管理協議 (SNMP)

  2. 修改 SNMP 的安全設置

     這台服務是被監控方,所以需要像剛才舉例的 Server3 那樣修改 SNMP 的配置。否則在 server 1 裡頭的 Cacti 則永遠也收不到 SNMP 的消息。打開 Services 窗口並找到 SNMP 服務,打開右鍵菜單,選擇屬性。在打開的窗口中找到“安全”選項頁。在選項頁中有兩部分設置,上半部分是指 SNMP 服務接受哪種 Community 指示字,預設情況下 Windows 2003 不對任何指示字反饋,我一般都添加設置為。

    團體名稱:public, 許可權:只讀

    下半部分添加可信任的主機名、IP 或是 IPX 名稱。這裡就也是添加 server1 的 IP 192.168.3.2 如圖 11



    圖 11. 修改 SNMP 的安全設置


  3. 修改防火牆

    如果你安裝了防火牆,還要記得打開 UDP 161 埠。

    完成後重新啟動 SNMP server 服務

    登陸 Cacti 點 Devices 創建新設備。

    填寫 Server2 IP 地址,設備類型:Windows 2000/XP hosts

    從 Windows 上獲取到的 SNMP 信息也挺多,CPU,內存,虛擬內存,硬碟空間使用,網卡流量,一應俱全。最後創建圖表 , 完成。



    圖 12. 修改防火牆






總結

Cacti 真是一個世界。在正式使用 Cacti 接管原來的 MRTG 負責伺服器狀態監控的這段時間, 我所能最深刻感受到的,不止是它漂亮的界面跟圖表。而且是對監控設備的創建,跟管理,都有著史無前例地簡單,高效。作為系統管理員,我真相當感激 Cacti 的作者能開發出這一套如此拔尖的監控程序。

雖然它所運行的 PHP 環境以及 RRDtool 在前期配置的時候要花好多的時間跟功夫,

但也未嘗不是一個新的選擇。試想一下,你只需一陣子的功夫在一台伺服器上把環境配好,Cacti 裝好。以後,無論你要再添更多的伺服器,要了解他們的”情緒”,就只需簡單地在瀏覽器上登陸 Cacti – > 新建設備 – > 新建圖表。區區幾步,整整有條的伺服器列表,CPU,硬碟,網卡等等讀數的曲線都能一清二楚地顯示在你面前。

當然! Cacti 帶來的強大功能以及方便還遠不止這些,就交由大家之後去使用,去體驗了。(責任編輯:A6)



[火星人 ] 使用 cacti 批量監控伺服器以及其 PHP 運作環境配置已經有2515次圍觀

http://coctec.com/docs/linux/show-post-68910.html