服務器監控Cactiphp
在企業網絡運維過程當中,管理員必須時刻關注服務器的運行狀態,如CPU、內存、磁盤空間使用狀況等。爲了可以及時的發現問題,儘可能減小故障的發生。當網絡中的設備,服務器等數量較多時,能夠部署一套監控系統來實時跟蹤服務器,咱們一般會藉助一些軟件來實現html
今天咱們就以Cacti套件爲例,介紹服務器集中監測體系的構建和使用mysql
Cacti是一款使用PHP語言開發的性能與流量監測工具,監測的對象可使linux或windows服務器也能夠是路由交換等網絡設備,主要是基於SNMP(Simple Network Management Protocol 簡單網絡管理協議)來蒐集CPU、佔用、內存使用、運行進程數以及磁盤使用空間、網卡流量等各類數據。說白了就是監控服務器狀態。linux
實際上Cacti自己只是一個Web界面的管理套件,經過調用Net-SNMP工具來採集檢測數據 並結合RRDtool(Round Robin Database tool 輪詢數據庫工具)記錄數據並繪製圖片。如圖1所示web
圖1sql
Cacti提供了優秀的整合和協調能力,充分利用LAMP技術平臺、SNMP協議工具以及RRDtool數據引擎、不只配置簡單、直觀、並且支持插件和數據模板,使用時很是整潔,便於擴展。數據庫
實際上Cacti能夠從邏輯上分爲三個部分、第一部分:被檢測的對象,也就是客戶端。第二部分:檢測平臺,也就是服務器端。第三部分:管理平臺。Cacti採用了兩種結構實現功能,一種是C/S結構主要是實現服務器到客戶端監控另一種就是B/S主要完成對Cacti平臺的管理。從圖1咱們能夠看出,管理端是在Web上對Cacti進行管理。vim
簡單的整理一下Cacti的工做過程。windows
首先經過LAMP平臺部署Cacti監控工具,以後經過客戶端的web登陸Cacti進行多其餘客戶端的設置,能夠從圖1看到Cacti採集數據時必需要使用SNMP協議來鏈接客戶端進而可以採集數據嗎,也就是說客戶端必須支持SNMP協議。監控以後經過RRDtool來生成圖表,其實這個圖表是靜態的,通過頻繁的數據採集,咱們也能夠認爲是動態的,也就是說Cacti是基於某段時間的監控。centos
主機 |
操做系統 |
IP地址 |
主要軟件 |
centos1 |
CentOS 6.5 x86_64 |
192.168.1.1 |
Cacti-0.8.8b.tar.gz Rrdtool-1.4.8.tar.gz |
centos2 |
CentOS 6.5 x86_64 |
192.168.1.102 |
Mysql.5.5.tar.gz |
構建Cacti集中監測平臺的服務器端時,應提早安裝好LAMP或者是LNMP平臺,以及Net-SNMP和RRDtool等軟件支持,而後下載Cacti源碼包
前面已經學習過了如何部署源碼包的LAMP或LNMP平臺,爲了方便演示這裏直接以RPM包的LAMP平臺爲基礎搭建Cacti。所需安裝包以下所述。若還提示缺乏一些包請在以YUM的方式進行安裝便可。
[root@centos1 ~]# yum -y install httpd
[root@centos1 ~]# yum -y install mysql mysql-server mysql-devel
[root@centos1 ~]# yum -y install zlib freetype libjpeg fontconfig gd libxml2 libxml2-devel php-gd //安裝PHP須要的庫文件
[root@centos1 ~]# yum -y install php php-mysql
[root@centos1 ~]# service httpd start
[root@centos1 ~]# chkconfig httpd on
[root@centos1 ~]# service mysqld start
[root@centos1 ~]# chkconfig mysqld on
[root@centos1 ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
[root@centos1 ~]# iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
[root@centos1 ~]# mysqladmin -u root -p password '123.abc'
Enter password:
服務啓動以後咱們能夠編寫測試頁來驗證LAMP平臺的協同工做
[root@centos1 ~]# vim /var/www/html/test.php
<?php
$link=mysql_connect('localhost','root','123.abc');
if ($link) echo "mysql connect is ok!!";
mysql_close();
phpinfo();
?>
以後在客戶端進行訪問
圖2
通過測試LAMP平臺已經可以徹底的結合在一塊兒並運行。
Cacti平臺經過SNMP協議採集檢測數據,這些工具由net-snmp-utils軟件包提供,所需安裝的軟件包以下所示。
[root@centos1 ~]# yum -y install net-snmp net-snmp-utils
n 下載rrdtool軟件到/root目錄下
n 經過YUM確認並安裝相關軟件包
[root@centos1 ~]# yum -y install cairo-devel zlib libxml2 libxml2-devel glib2 glib2-devel libpng libpng-devel freetype freetype-devel libart_lgpl pango pango-devel perl-CPAN
若是提示須要其餘軟件包,在另行安裝。
n 安裝rddtool源碼包
[root@centos1 ~]# tar zxf rrdtool-1.4.8.tar.gz
[root@centos1 ~]# cd rrdtool-1.4.8
[root@centos1 rrdtool-1.4.8]# ./configure --prefix=/usr/local/ && make && make install
下載到root目錄下
將下載的源碼包解壓到root下並移動到網頁文檔根目錄下更名爲cacti
[root@centos1~]#wget \
> http://www.cacti.net/downloads/cacti-0.8.8b.tar.gz
[root@centos1 ~]# tar zxf cacti-0.8.8b.tar.gz
[root@centos1 ~]# mv cacti-0.8.8b /var/www/html/cacti
添加一個用戶,用來讀寫檢測數據的用戶帳戶(如cacti),並調整期目錄的屬主,以便正常讀取以及寫入數據
[root@centos1 ~]# useradd cacti
[root@centos1 ~]# chown cacti:cacti -R /var/www/html/cacti/
先建立一個用於cacti檢測平臺的數據庫,並受權一個用戶cactiuser而後使用cacti源碼目錄下的cacti.sql腳本,導入預設的各類數據表
[root@centos1 ~]# mysql -u root -p123.abc
mysql> create database cacti default character set utf8;
mysql> grant all on cacti.* to cactiuser@'localhost' identified by '123.abc';
[root@centos1 cacti]# mysql -u cactiuser -p cacti < cacti.sql
Enter password: //輸入密碼
[root@centos1 cacti]# mysql -u root -p123.abc
mysql> use cacti;
mysql> show tables; //驗證是否導入表到cacti庫中
上訴操做中,建立Cacti庫時,指定默認的編碼字符集爲utf8,便於中文支持,導入預設庫時最好是使用cactiuser導入。最後驗證一下是否導入。
cacti的配置文件位於源碼目錄下的include/目錄下,名稱爲config.php,要使Cacti系統可以正常訪問並使用數據庫,必須修改config.php文件,卻保數據庫鏈接參數正確。
[root@centos1 cacti]# vim include/config.php
$database_type = "mysql"; //指定鏈接的類型
$database_default = "cacti"; //鏈接的庫
$database_hostname = "localhost"; //登陸源
$database_username = "cactiuser";//用戶名
$database_password = "123.abc";//用戶密碼
$database_port = "3306"; //鏈接的端口
$database_ssl = false; //不啓用ssl
$url_path = "/"; //指定cacti的根目錄,這個目錄是cacti的文件目錄下,咱們後面還須要修改httpd的主配置文件。
修改httpd的主配置文件,設置好網頁文檔根目錄、自動索引頁
[root@centos1 cacti]# vim /etc/httpd/conf/httpd.conf
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行
</Directory> //346行
DirectoryIndex index.php index.html index.html.var //402行
AddDefaultCharset UTF-8 //759行
[root@centos1 cacti]# service httpd restart
在遊覽器中訪問Cacti服務器的Web服務,如http://192.168.1.1,除此訪問時會自動跳轉至安裝指南界面如圖3所示
圖4
以上就是安裝界面,內容是一些歡迎信息,直接點擊下一步繼續
圖5
選擇新的安裝,點擊Next繼續
圖6
以上信息必須所有都爲綠色,若是出現紅色,請檢查相關步驟。點擊Finish完成安裝
圖7
只要看到了這個登陸界面,那麼咱們今天的Cacti就部署完成了,默認的用戶名和密碼都是admin,首次登陸以後須要修改密碼。我的建議先不要進行登陸,先進行一下操做,以後在進行登陸。
不管是路由器、交換機、仍是linux或windows服務器,只要正確支持SNMP協議,並容許Client服務器採集數據,就可以對其進行監測。下面僅介紹在linux服務器中啓用SNMP支持並設置共同體名的簡單方法
ps:共同體名,值的是一種驗證機制,全部的client都必須使用同一個共同體名,就像咱們以前學習的hsrp的組同樣,只有組號相同才能是一個組的,這裏也是如此,只有共同體名相同的時候,Cacti才能經過這個共同體名對client進行監控。
須要安裝net-snmp、lm_sensors軟件包,而後經過修改其配置文件/etc/snmp/snmpd.conf,並啓動snmpd服務,並創建規則,默認監聽UDP的161號端口。
[root@centos2 ~]# yum -y install net-snmp lm_sensors
[root@centos2 ~]# vim /etc/snmp/snmpd.conf
com2sec notConfigUser 192.168.1.1 public //41行
access notConfigGroup "" any noauth exact all none none //62行
view all included .1 80 //85行
第41行 192.168.1.1指的是Cacti的服務器IP(默認是default),表示容許其查詢本機數據,public指的就是共同體名,用來識別及驗證
第62行 all表示開放全部的SNMP查詢權限(默認是 SystemView)
第85行 去掉註釋以後,以便支持各類查詢。
[root@centos2 ~]# service snmpd restart
[root@centos2 ~]# iptables -I INPUT -p udp --dport 161 -j ACCEPT
配置好Cacti的主控端、被控端以後,就能夠設置集中監測任務了。下面講學習在Cacti系統的Web控制檯的基本操做,以及如何經過添加插件來擴展集中監測功能。
在遊覽器中訪問Cacti系統,如http://192.168.1.1,輸入用戶和密碼,便可登陸到Web控制檯界面
圖8
密碼修改完成點擊save保存,以後就能進入到管理界面。
圖9
Cacti的管理界面是純英文的界面,剛開始使用起來有點難度,反覆的操做幾遍以後至關簡單。
點擊導航欄中「Management」下的"Devices"連接,在右上角有一個add連接,能夠打開添加設備的界面
圖10
圖11
以上就是添加了被檢測的設備,以後點擊下拉鍊條,向下拉。,點擊右下角的create建立。
成功連接以後會看到"Save Successful"的提示信息,頁面下方也能夠看到默認監控的項目如圖12所示
圖12
咱們通常在默認的狀況下在添加一些監控項目,如圖13所示
圖13
想要添加一些項目首先須要肯定要添加的項目①,以後點擊右側的add②,就能夠添加成功了,最後點擊右下角的save進行保存。
在Cacti管理控制檯設置好被控端忠厚,須要爲每一個監控項目生成直觀的圖像,而後再將圖像添加到檢測樹、以便集中查看
點擊導航欄的Create下的「Nwe Graphs」鏈接,進入圖像建立頁面後,選擇被監控的主機或設備,並選擇其中最須要的圖像條目圖圖13所示,最後點擊下方的「Create按鈕」再出現頁面以後在次點擊create按鈕完成圖像的建立
圖13
圖14
被監控的各類圖像在Cacti系統中以樹形結構展現,所以對於新建立的圖像對象,應該將其添加到「Graph Trees」中,以方便用戶分類查看。單擊導航欄中「Mangaement」下的「Graph Trees」連接,在點擊「Default Tree」能夠對默認的圖像檢測樹進行管理,如圖15所示
圖15
默認只存在本機的127.0.0.1,因此須要添加其餘設備,點擊右上角的add
圖16
將樹的類型設置爲host表名這是一臺主機,點擊右下角的create就能夠添加完成了,以後點擊最上面的導航Graphs
三、按期採集數據
Cacti系統經過poller.php頁面來採集檢測數據,須要使用php程序解釋執行。爲了得到持續穩定的數據,應結合計劃任務按期來執行,如沒5分鐘執行一次(默認Cacti每5分鐘刷新間隔)
[root@centos1 cacti]# /usr/bin/php /var/www/html/cacti/poller.php
執行完成以後,會出現不少的提示信息,如圖17所示,通常狀況下是指時區不正確,他建議你將時區改成亞洲的重慶
圖17
因爲是php報的錯誤,因此咱們經過php.ini這個主配置文件解決這個問題
[root@centos1 cacti]# vim /etc/php.ini
date.timezone = Asia/Chongqing //946行去掉註釋
[root@centos1 cacti]# crontab -e
*/5 * * * * /usr/bin/php /var/www/html/cacti/poller.php
圖18
以上所有部署完成以後,就能夠看到這張圖片,那麼恭喜你,已經完成了整個的Cacti的監控系統,可是因爲默認存在的監控項目實在是少的可憐,因此咱們還須要從官網下砸其餘監控項目,這裏咱們稱之爲添加插件。咱們以添加mysql爲例
插件能夠在http://www.percona.com/下載
[root@centos1 cacti]# cd
[root@centos1 ~]# tar zxf percona-monitoring-plugins-1.1.4.tar.gz
[root@centos1 ~]# cd percona-monitoring-plugins-1.1.4/cacti/scripts/
[root@centos1scripts]#cp ss_get_mysql_stats.php /var/www/html/cacti/scripts/
[root@centos2 ~]# mysql -u root -p123.abc
mysql> grant process , super on *.* to cactiuser@'192.168.1.1' identified by 'cactiuser';
[root@centos2 ~]# iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
在Cacti管理界面中進行添加,一次進入Consose——Import Templates——選擇文件
將win7下的壓縮目錄解壓到一個文件夾內,選擇解壓後的cacti\templat目錄下的cacti_host_template_percona_mysql_server_ht_0.8.6i-sver1.1.4.xml而後點擊import按鈕導入到Cacti如圖19
圖19
圖20 導入後的狀況
以後就能夠添加檢測項目了。
圖21
以後也是同樣生成圖表
圖22
圖23
圖24
以上結果,就是最後的驗證,若是沒有出現上圖結果時,不要着急,請將這個添加的管理設備刪除以後,在從新添加一回就能夠了
圖25
以後從新進行檢測
[root@centos1 scripts]# /usr/bin/php /var/www/html/cacti/poller.php
再次查看就能夠看到結果了。