1. 程式人生 > >構建Cacti監測系統

構建Cacti監測系統

報警郵件 table 通過 .gz 功能 修改 local CP 目前

案例1:部署Cacti監控平臺 案例2:構建Cacti監測系統

1 案例1:部署Cacti監控平臺
1.1 問題

本案例要求部署一臺Cacti監控主機,並安裝相關監控組件,為進一步執行具體的監控任務做準備:

安裝net-snmp、net-snmp-utils
安裝LAMP及相關依賴軟件包
部署Cacti監控平臺
初始化監控頁面

1.2 方案

使用1臺RHEL7虛擬機,安裝部署LAMP環境、Cacti及相關的snmp組件包,配置數據庫並對Cacti監控平臺進行初始化操作。
1.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:準備基礎軟件包

1)安裝LAMP環境

Cacti監控需要通過Web頁面展示出來,並且還需要使用MySQL來存儲一些變量數據,因此需要先為Cacti準備基礎LAMP環境。因為Cacti監控其他主機數據時使用的是snmp協議,所以還需要安裝net-snmp和net-snmp-utils軟件包。

[root@svr5 ~]# yum -y install httpd php php-mysql php-ldap >php-xml mysql mysql-server net-snmp net-snmp-utils  lm_sensors
[root@svr5 ~]# service httpd start;chkconfig httpd on        //啟動httpd服務
[root@svr5 ~]# service mysqld start;chkconfig mysqld on        //啟動mysqld服務
[root@svr5 ~]# mysqladmin -u root password ‘111‘            //設置數據庫管理員密碼

2)源碼安裝RRDTool

Cacti監控的數據存儲和繪圖功能主要依賴於該軟件,如果沒有該軟件則Cacti無法存儲監控數據並繪制出監控圖像。

[root@svr5 ~]# tar zxf rrdtool-1.4.5.tar.gz
[root@svr5 ~]# cd rrdtool-1.4.5
[root@svr5 rrdtool-1.4.5]# ./configure --prefix=/usr/local
[root@svr5 rrdtool-1.4.5]# make && make install

步驟二:部署Cacti套件

1)解壓部署Cacti軟件包

Cacti是由PHP開發的Web頁面套件,PHP代碼通過使用snmp協議來獲得監控數據,並代用RRDTool存儲數據和繪制監控圖像,所以在安裝完成基礎LAMP環境後,首先需要做的就是將Cacti軟件包解壓放置在Web服務器的網頁根路徑下。

[root@svr5 ~]# tar zxf cacti-0.8.7g.tar.gz
[root@svr5 ~]# mv cacti-0.8.7g/ /var/www/html/cacti
[root@svr5 ~]# cd /var/www/html/cacti
[root@svr5 cacti]# useradd cactiuser
[root@svr5 cacti]# chown -R root.root ./
[root@svr5 cacti]# chown -R cactiuser.cactiuser rra/  log/

2)創建數據庫並初始化

Cacti需要使用MySQL來存儲部分動態數據,這裏還需要給Cacti創建一個數據庫,並使用Cacti提前準備好的數據文件,對數據庫進行初始化。

[root@svr5 cacti]# mysql -u root -p
Enter password:                                        //密碼為前面初始化的密碼
mysql> CREATE DATABASE cactidb DEFAULT CHARACTER SET utf8;  //創建數據庫
mysql> GRANT all ON cactidb.* TO ‘cactiuser‘@‘localhost‘ IDENTIFIED BY ‘pwd123‘;    //創建賬戶並賦權
mysql> QUIT
[root@svr5 cacti]# mysql -u cactiuser -p cactidb < cacti.sql  //初始化數據庫

3)修改Cacti的PHP源碼文件,指定數據庫名稱及相關賬戶信息。

[root@svr5 ~]# cd /var/www/html/cacti
[root@svr5 cacti]# vim include/config.php
<?php
$database_default = "cactidb";                     //設置數據庫名稱
$database_username = "cactiuser";                     //設置賬戶名稱
$database_password = "pwd123";                     //設置密碼
……
?>
[root@localhost cacti]# vi lib/functions.php
<?php
setlocale(LC_CTYPE,"zh_CN.UTF-8");                    //定義語言
……

4)調整http配置文件,重新定義根路徑

httpd配置文件使用DocumentRoot "/var/www/html"語句來定義網站頁面根路徑,默認路徑為/var/www/html/,這裏需要修改為/var/www/html/cacti。

[root@svr5 ~]# vim /etc/httpd/conf/httpd.conf
.. ..
DocumentRoot "/var/www/html/cacti"
.. ..

5)訪問Cacti監控頁面,並進行初始化設置

第一次登錄Cacti需要進行一些簡單的初始化操作,主要是設置幾個主要的依賴程序的存儲位置。
2 案例2:構建Cacti監測系統
2.1 問題

沿用練習一,為監控客戶端主機安裝net-snmp並設置監控權限,並通過調整Cacti服務端配置,實現以下目標:

主機192.168.1.200上搭建Cacti系統
監測網關、網站、郵件三臺Linux服務器
監控被監控端的CPU負載、網絡流量、磁盤空間
發郵件給root@localhost

2.2 方案

準備4臺Linux虛擬機,1臺部署Cacti監控系統,3臺作為服務器同時也是被監控的對象,拓撲結構如圖-1所示。

圖-1

實驗沿用練習一的成果,cacti監控平臺已經部署完畢,目前需要給所有被監控節點安裝net-snmp,並通過修改配置文件設置監控權限。
2.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:被監控主機設置

註意:由於所有被監控主機均允許cacti監控服務器從本機提取監控數據,因此所有被監控主機都需要做如下操作,下面以網關服務器為例。

1)安裝net-snmp軟件

Cacti監控其他主機是通過簡單網絡管理協議(SNMP)收集被監控端數據信息,因此被監控端服務器都需要安裝net-snmp以及lm_sensors。lm_sensors軟件可以幫助我們來監控硬件信息如CPU的工作電壓等數據。

[root@router ~]# yum -y install net-snmp lm_sensors 

2)修改snmp配置文件

SNMP配置文件主要包括四個部分內容需要修改,第一步映射通訊名稱到安全用戶名稱,第二步將用戶加入到組中,第三步為組賦予訪問視圖的權限,第四步定義all視圖。主配置文件設置完成後重啟服務即可通過客戶端訪問該服務器獲得系統信息,SNMP使用的端口號為UDP 161端口以及TCP 199端口。

[root@router ~]# vim /etc/snmp/snmpd.conf
……
com2sec notConfigUser  192.168.1.200    public    //社區名稱映射為安全名稱
group   notConfigGroup v1           notConfigUser    //將賬戶加入組
group   notConfigGroup v2c           notConfigUser
access  notConfigGroup ""  any   noauth   exact  all none none  //賦予notConfigGroup組對all視圖的訪問權限
view all    included  .1        80                //定義all視圖及相關權限
……
[root@router ~]# service snmpd start;chkconfig snmpd on

3)查看SNMP服務運行狀態,設置防火墻

默認SNMP監聽udp的161端口和tcp的199端口,通過netstat命令可以查看該端口的監聽狀態,設置防火墻規則允許這兩個端口的入站數據。

[root@router ~]# netstat -anpu | grep "snmpd"
udp       0      0  0.0.0.0:161      0.0.0.0:*        16452/snmpd
[root@router ~]# iptables -I INPUT -p udp --dport 161 -j ACCEPT
[root@router ~]# iptables -I INPUT -p tcp --dport 199 -j ACCEPT
[root@router ~]# service iptables save

步驟二:設置Cacti監控服務器

註意:本練習案例要求將3臺被監控端主機均加入到Cacti系統,這裏以Web服務器為例添加監控對象並生成監控圖像。其它監控節點做相關操作即可。

1)添加監控主機

登錄Web控制臺(http://192.168.1.200),默認的管理賬號、密碼為 admin,首次登錄時要求強制重設密碼。添加被監控端主機時需要設置目標地址,並正確選擇主機模板、設置社區名稱。

登錄Web控制臺後,進入Devices菜單後點擊Add添加被監控主機,如圖-2所示。此時系統會要求填寫相關表單信息,需要填寫的項目參數描述見表-1,填寫完所需項目表單後點擊右下角的Create即可創建新的設備主機,同時在下方會出現圖形模版以及數據查詢模版,管理員可以根據實際需要繼續添加需要監控的參數對象,確定後點擊Save保存所有設置,效果如圖-3所示。

/

圖-2

表-1 項目參數描述表

圖-3

2)創建監控圖像

通過以上操作,設備主機以及需要監控的性能指標已經創建完成,下面需要通過New Graphs菜單為Web服務器創建圖形。進入新建圖形界面後在Host列表中選擇上一步添加的設備主機,並在需要監控的性能模版後點選對勾,設置完成後選擇Create為被監控設備添加圖形,如圖-4所示。

圖-4

3)創建監控圖像樹

Cacti監控系統最終通過樹狀列表來查看被監控主機性能圖形,我們可以創建多棵圖形樹,在每棵圖形樹下可以插入多個設備主機的圖形信息。Cacti初始狀態有一個名為Default的圖形樹,本案例中我們將創建一棵新的圖形樹,並將被監控端主機的圖形添加進來。通過點擊Graph Trees菜單打開圖形樹的設置界面。選擇Add可以添加新的圖形樹,如圖-5所示,提示輸入Name(圖形樹名稱)後點擊Create(創建),本案例設置名稱為Web,此時在Graph Trees界面中會出現Default與Web兩棵圖形樹。點擊進入Web樹中,選擇Add按鈕添加上一步操作中創建的圖形,如圖-6所示。

圖-5

圖-6

4)監控服務器定期收集被監控端主機信息

Cacti監控服務器需要通過SNMP收集數據信息並最終生成圖形窗口,在Cacti軟件包中已經自帶了這麽一個用於收集數據的PHP腳本,默認Cacti系統需要每五分鐘收集一次數據,管理員可以通過計劃任務實現每五分鐘執行該腳本,也可以手動執行該腳本立即同步數據。

5)查看監控頁面效果

最後,通過Cacti平臺的graphs選項卡進入圖形窗口,該窗口將以樹狀顯示,案例中我們創建了一棵名為Web的圖形樹,並在Web樹下添加了3臺被監控主機的圖形,最終查看效果如圖-7所示。

[root@cacti ~]# crontab -e
*/5 * * * * /usr/local/php5/bin/php /usr/local/apache2/htdocs/cacti/poller.php

圖-7

步驟三:實現郵件報警機制

1)安裝插件補丁

[root@cacti ~]# tar -xzf cacti-plugin-0.8.7g-PA-v2.9.tar.gz
[root@cacti ~]# mv cacti-plugin-arch /var/www/html/cacti/
[root@cacti ~]# cd /var/www/html/cacti
[root@cacti cacti]# patch > -p1 -N < cacti-plugin-arch/cacti-plugin-0.8.7g-PA-v2.9.diff  //打補丁
[root@cacti cacti-plugin-arch]# pwd
/var/www/html/cacti/cacti-plugin-arch
[root@cacti cacti-plugin-arch]# mysql –u cactiuser –ppwd123 cactidb <pa.sql //插入數據庫

2)修改配置文件,正確設置數據庫信息

[root@cacti cacti]# vim /var/www/html/cacti/include/global.php
$database_type = "mysql"
$database_default = "cactidb"
$database_hostname = "localhost"
$database_username = "cactiuser"
$database_password = "pwd123"
$database_port = "3306"
[root@cacti cacti]# vim /var/www/html/cacti/include/config.php
$url_path = "/cacti/"

3)修改權限

默認admin賬戶並沒有開啟插件功能,需要點擊"User Management"菜單,在刷新出來的頁面中找到"admin"賬戶,如圖-8所示。點擊進入admin賬戶設置頁面。在"Realm Permissions"選項卡下找到"Plugin Management"並點選對勾賦予賬戶插件管理權限,如圖-9所示。

圖-8

圖-9

4)安裝郵件報警插件

插件即是PHP源代碼文件,解壓後復制到Cacti目錄下即可。

[root@cacti ~]# tar -xzf thold-v0.4.9-3.tgz
[root@cacti ~]# tar -xzf setting-v0.71-1.tgz
[root@cacti ~]# tar –xzf monior-v1.3-1.tgz
[root@cacti ~]# mv monitor settings thold /var/www/html/cacti/plugins

刷新Web控制臺查看Plugin Management頁面內容如圖-10所示。下一步還需要點擊插件名稱左邊的圖標(向下的箭頭)進行安裝。

圖-10

5)啟用Thold插件

首先需要定義報警郵件列表,點擊"Notification Lists",在刷新出的頁面中點擊“Add"按鈕,在彈出的頁面中填寫報警通知的郵件賬戶列表,如圖-11所示。

圖-11

其次,還需要設置發送郵件的服務器,效果如圖-12所示。

圖-12

6)使用Thold監控具體對象參數

監控web服務器的/boot空間,如果該分區的已用空間已達到80M以上,那麽將發送郵件報警。

點擊"Thresholds",在彈出的頁面中選擇"Add"按鈕添加被監控主機及監控圖像,具體報警參數設置如圖-13至圖-15所示。

圖-14

圖-15

7)驗證

在web服務上向/boot分區寫入較大的文件,使得該分區已用空間超過80%,測試報警是否正確工作。

構建Cacti監測系統