天天看點

伺服器Cacti部署監控系統

    在企業網絡運維過程中,管理者必須時刻關注伺服器的運作狀态,如CPU、記憶體、磁盤空間使用情況等。為了能夠及時的發現問題,盡量減少故障的發生。當網絡中的裝置,伺服器等數量較多時,可以部署一套監控系統來實時跟蹤伺服器,我們通常會借助一些軟體來實作。本篇部落格以Cacti套件為例,介紹伺服器集中監測體系的建構和使用。

Cacti簡介

    Cacti是一款使用PHP語言開發的性能與流量監測工具,與Windows作業系統中的“性能螢幕”屬于同一類,都是為了監控CPU占用,記憶體使用,運作程序數,磁盤空間,網卡流量等各種資料。但不同的是,Cacti不僅可以監控Linux,也可以監控Windows伺服器,路由器,交換機等網絡裝置,主要基于SNMP協定來搜集資料。Cacti本身是一個web界面的軟體,通過調用Net-SNMP工具來采集檢測資料,并結合RRDtool(輪詢資料庫工具)記錄資料并繪制圖檔,最終以Web頁面展示給管理者使用者。Cacti需要運作在LAMP平台上,配置簡單,直覺,而且支援插件和資料模闆,可擴充其功能。

1. 工作原理

    Cacti可以從邏輯上分為三個部分、第一部分:被監測的對象,也就是用戶端。第二部分:監測平台,也就是伺服器端。第三部分:管理平台。Cacti采用了兩種結構實作功能,一種是C/S結構,主要是實作伺服器到用戶端監控;另外一種就是B/S結構,主要完成對Cacti平台的管理,從下圖我們可以看出,管理端是在Web上對Cacti進行管理。

伺服器Cacti部署監控系統

    簡單的整理一下Cacti的工作過程。

    首先通過LAMP平台部署Cacti監控工具,之後通過管理端的浏覽器登入Cacti進行對其他用戶端的設定,可以從上圖看到Cacti采集資料時必須要使用SNMP協定來連接配接用戶端進而能夠采集資料,也就是說用戶端必須支援SNMP協定,監控之後通過RRDtool來生成圖表。

案例:建構Cacti監測系統

實驗環境:公司的網關、網站、資料庫等多台伺服器均采用RHEL6.5系統,要求建構Cacti監測系統。以便管理者更快速、便捷的了解各伺服器的狀态,及時發現和解決潛在的問題,如下圖所示:

伺服器Cacti部署監控系統

描述需求: 

(1)通過Cacti集中監測網關、網站、資料庫等伺服器

(2)能在網管工作站中使用浏覽器檢視監測資料

(3)監測的資訊包括CPU占用、記憶體使用、網卡流量、根分區使用情況

配置步驟如下:

1. 配置Cacti集中監測平台

(1)搭建LAMP平台

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# yum -y install mysql mysql-server mysql-devel
[root@localhost ~]# yum -y install zlib freetype libjpeg fontconfig gd libxml2 php-gd
[root@localhost ~]# yum -y install php php-mysql
[root@localhost ~]# service httpd start
[root@localhost ~]# service mysqld start
[root@localhost ~]# vim /var/www/html/index.php
<?php
phpinfo();
?>      

    測試LAMP平台是否工作正常,如果出現下面的頁面,說明配置成功。

伺服器Cacti部署監控系統

(2)安裝Net-SNMP、RRDtool等軟體支援 

Cacti平台通過snmp協定采集檢測資料,這些工具程式由net-snmp-utils軟體包提供,Rrdtool軟體包主要用于資料記錄和圖表繪制。

[root@localhost ~]# yum -y install net-snmp net-snmp-utils
[root@localhost ~]# service snmpd start   
[root@localhost ~]# chkconfig snmpd on

[root@localhost ~]# yum -y install cairo-devel zlib libxml2 libxml2-devel glib2 glib2-devel \
> libpng libpng-devel freetype freetype-devel libart_lgpl pango pango-devel perl perl-devel perl-CPAN
[root@localhost ~]# tar zxf rrdtool-1.4.8.tar.gz 
[root@localhost ~]# cd rrdtool-1.4.8
[root@localhost rrdtool-1.4.8]# ./configure --prefix=/usr/local/rrdtool
[root@localhost rrdtool-1.4.8]# make && make install      

(3)安裝Cacti源碼包,設定資料庫連接配接

[root@localhost ~]# tar zxf cacti-0.8.8b.tar.gz 
[root@localhost ~]# mv cacti-0.8.8b/ /var/www/html/cacti
[root@localhost ~]# useradd cacti
[root@localhost ~]# chown -R cacti:cacti /var/www/html/cacti/
[root@localhost ~]# mysql -u root 
mysql> create database cacti default character set utf8;
Query OK, 1 row affected (0.01 sec)         //建立資料庫

mysql> grant all on cacti.* to 'cacti'@'localhost' identified by 'cacti';
Query OK, 0 rows affected (0.04 sec)        //授權一個資料庫使用者

mysql> exit
Bye
[root@localhost ~]# cd /var/www/html/cacti/       //導入預設庫
[root@localhost cacti]# mysql -u cacti -pcacti cacti < cacti.sql 

[root@localhost cacti]# vim include/config.php    //調整Cacti配置檔案
$database_type = "mysql";                //資料庫類型
$database_default = "cacti";             //資料庫名稱
$database_hostname = "localhost";        //資料庫伺服器位址
$database_username = "cacti";            //授權使用者
$database_password = "cacti";            //授權密碼
$database_port = "3306";                 //資料庫服務的端口
$database_ssl = false;                   //不啟用ssl
$url_path = "/";                         //指定cacti的根目錄      

(4)Cacti的初始化安裝

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf     //修改httpd配置
DocumentRoot "/var/www/html/cacti"            //292行,指定網站根目錄
<Directory "/var/www/html/cacti">             //317行,設定目錄通路權限
    Options Indexes none                      //331行
    AllowOverride None                        //338行
    Order allow,deny                          //343行
    Allow from all                            //344行
DirectoryIndex  index.php index.html          //402行,第一預設首頁為index.php
AddDefaultCharset UTF-8                       //757行
[root@localhost ~]# service httpd restart   
[root@localhost ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
[root@localhost ~]# iptables -I INPUT -p tcp --dport 3306 -j ACCEPT      

2. 配置用戶端(監測對象)

    無論是路由器、交換機、還是Linux或Windows伺服器,隻要正确支援SNMP協定,并允許Client伺服器采集資料,就能夠對其進行監測。下面僅介紹在linux伺服器中啟用SNMP支援并設定共同體名(識别及驗證字串)的簡單方法。

PS:共同體名,指的是一種驗證機制,所有的Client都必須使用同一個共同體名,隻有共同體名相同的時候,Cacti才能通過這個共同體名對Client進行監控。

     需要安裝net-snmp、lm_sensors軟體包,然後通過修改其配置檔案/etc/snmp/snmpd.conf,并啟動snmpd服務,并建立規則,預設監聽UDP的161号端口。 

[root@localhost ~]# yum -y install net-snmp lm_sensors
[root@localhost ~]# vim /etc/snmp/snmpd.conf
com2sec notConfigUser  192.168.4.254       public   //41行
access  notConfigGroup ""      any       noauth    exact all none none   //62行                                                                                                              //62行
view all    included  .1               80                         //85行 
第41行:192.168.4.254指的是Cacti的伺服器IP(預設是default),表示允許其查詢本機資料,public指的就是共同體名,用來識别及驗證
第62行:all表示開放所有的SNMP查詢權限(預設是 SystemView)
第85行:去掉注釋之後,以便支援各種查詢。
[root@localhost ~]# service snmpd start
[root@localhost ~]# iptables -I INPUT -p udp --dport 161 -j ACCEPT      

3. 在網管工作站

(1)在浏覽器中通路Cacti伺服器的Web服務,初次通路将會自動跳轉到Cacti安裝指南界面,根據提示,即可進入Web管理界面。

伺服器Cacti部署監控系統
伺服器Cacti部署監控系統
伺服器Cacti部署監控系統
伺服器Cacti部署監控系統
伺服器Cacti部署監控系統

(2)添加被控裝置/主機,設定監控項目

單擊導航欄中的“management(管理)”下的“devices(裝置)”,可以管理被控裝置或主機。點選devices---Add

伺服器Cacti部署監控系統
伺服器Cacti部署監控系統

(2)生成監測圖像

建立圖像

伺服器Cacti部署監控系統

添加圖像到監測樹

伺服器Cacti部署監控系統
伺服器Cacti部署監控系統
伺服器Cacti部署監控系統

(3)定期采集監測資料

[root@localhost ~]# vim /etc/php.ini
date.timezone = Asia/Chongqing      //946行去掉注釋
[root@localhost ~]# /usr/bin/php /var/www/html/cacti/poller.php    //執行首次資料采集
[root@localhost ~]# crontab -u cacti -e      //每5分鐘,執行一次
*/5 * * * * /usr/bin/php /var/www/html/poller.php > /dev/null      

(4)檢視監測結果

單擊cacti管理控制台左上方的graphs标簽,然後展開左側的default tree樹,選擇被控主機後即可看到各監測圖像。

(5)安裝percona-mysql-monitor插件

Cacti工具預設的模闆隻能監控機器的cpu,記憶體和磁盤等資訊,如果想要監控mysql,就需要安裝插件,操作如下

1)解壓縮軟體到目标位置

[root@localhost ~]# tar zxf percona-monitoring-plugins-1.1.4.tar.gz
[root@localhost ~]# cd percona-monitoring-plugins-1.1.4/cacti/scripts
[root@localhost scripts]# cp ss_get_mysql_stats.php /var/www/html/cacti/scripts/      

2)在mysql資料庫授權使用者

[root@localhost ~]# mysql -u root -p
mysql> grant process , super on *.* to cactiuser@'192.168.4.254' identified by 'cactiuser';
[root@localhost ~]# iptables -I INPUT -p tcp --dport 3306 -j ACCEPT      

3)為裝置添加項目

    在Cacti管理界面中進行添加,點選Consose——Import Templates——選擇檔案,選擇解壓後的cacti\templat目錄下的cacti_host_template_percona_mysql_server_ht_0.8.6i-sver1.1.4.xml,最後單擊import導入。

伺服器Cacti部署監控系統

     導入後的情況如下圖所示:

伺服器Cacti部署監控系統

4)添加模闆

伺服器Cacti部署監控系統

5)建立圖像

伺服器Cacti部署監控系統

6)重新采集(或者等5分鐘之後)

[root@localhost scripts]# /usr/bin/php /var/www/html/cacti/poller.php      

7)檢視監測結果

伺服器Cacti部署監控系統