工做原理
Cacti能夠從邏輯上分爲三個部分php
- 第一部分:被檢測的對象,也就是客戶端。
- 第二部分:檢測平臺,也就是服務器端。
- 第三部分:管理平臺。
Cacti採用了兩種結構實現功能,一種是C/S結構主要是實現服務器到客戶端監控另一種就是B/S主要完成對Cacti平臺的管理,從下圖咱們能夠看出,管理端是在Web上對Cacti進行管理。html
Cacti的工做過程。
首先經過LAMP平臺部署Cacti監控工具,以後經過客戶端的web登陸Cacti進行對其餘客戶端的設置,能夠從下圖看到Cacti採集數據時必需要使用SNMP協議來鏈接客戶端進而可以採集數據,也就是說客戶端必須支持SNMP協議,監控以後經過RRDtool來生成圖表。
.mysqlCacti的工做結構
C/S模式,採集監測數據
B/S模式,管理監測平臺
.
測試LAMP平臺
cacti服務器監控系統與windows操做系統中的「性能監視器」屬於同一類,都是爲了監控cpu佔用,內存使用,運行進程數,磁盤空間,網卡流量等各類數據。
但不一樣的是,cacti不只能夠監控linux,也能夠監控windows服務器,路由器,交換機等網絡設備,主要基於snmp協議來蒐集數據。linuxCacti自己是一個web界面的軟件,經過調用net-snmp工具來採集檢測數據,並結合RRDtool(輪詢數據庫工具)記錄數據並繪製圖片,最終以web頁面展現給管理員用戶。cacti須要運行在lamp平臺上,配置簡單,直觀,並且支持插件和數據模板,可擴展其功能。
.
配置Cacti服務器web
- . 安裝各類支持軟件
LAMP平臺、Net-SNMP、RRDtool- 部署並配置cacti套件
部署源碼包、創建數據庫表、調整
配置文件- 完成初始化安裝
根據網頁安裝嚮導進行- 配置Cacti客戶機
Linux被控主機的設置
安裝net-snmp、lm_sensors包
簡單配置snmpd,並啓動服務使用Cacti的Web控制檯sql
- 登陸Web控制檯
- 添加被控設備/主機,設置監控項目
- 生成監測圖像
- 按期採集監測數據
- 查看監測結果
.
環境以下;
cacti:192.168.1.1
mysql:192.168.1.2
客戶端:192.168.1.3數據庫
服務器的配置
配置cacti須要LAMP環境以前的文章有介紹,本篇不作解釋vim
開啓httpd服務開啓mysql服務 [root@centos1 /]# service httpd start [root@centos1 /]# service mysqld start
.
須要開啓例外windows
[root@centos1 /]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT [root@centos1 /]# iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
.centos
爲mysql設置一個密碼 [root@centos1 /]# mysqladmin -u root -p password 'pwd123'
.
編寫一個php測試頁
[root@centos1 /]# vim /var/www/html/text.php <?php phpinfo(); ?>
.
[root@centos1 /]# service httpd restart
.
在瀏覽器訪問測試
.
安裝net-snmp-utils軟件包
Cacti平臺經過snmp協議採集檢測數據,這些工具程序由net-snmp-utils軟件包提供,安裝方法以下。
[root@centos1 /]# yum -y install net-snmp net-snmp-utils . [root@centos1 /]# service snmpd start [root@centos1 /]# chkconfig snmpd on
.
安裝rrdtool軟件包
Rrdtool軟件包主要用於數據記錄和圖表繪製。
首先安裝依賴包:
[root@centos1 /]# umount /dev/cdrom /media/ [root@centos1 /]# mount /dev/cdrom /media/ [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 perl per-devel [root@centos1 /]# cd /media/
.
裝rddtool源碼包:
[root@centos1 media]# ls [root@centos1 media]# tar zxf rrdtool-1.4.8.tar.gz -C /root/ [root@centos1 /]# cd /root/rrdtool-1.4.8/ [root@centos1 rrdtool-1.4.8]# ./configure --prefix=/usr/local/ && make && make install
.
部署cacti,設置數據庫鏈接
部署cacti源碼包(將下載的cacti源碼包釋放到web服務器的網頁目錄)
[root@centos1 /]# cd /media/ [root@centos1 media]# tar zxf cacti-0.8.8b.tar.gz -C /usr/src/ [root@centos1 media]# cd /usr/src/ [root@centos1 src]# mv cacti-0.8.8b/ /var/www/html/cacti
.
添加一個用來讀寫檢測數據的用戶帳戶,並調整目錄的屬主,以便正常讀取及寫入數據。
[root@centos1 src]# useradd cacti [root@centos1 src]# chown -R cacti:cacti /var/www/html/cacti
.
創建數據庫,表結構(建立用於cacti監測平臺的數據庫,並受權一個數據庫用戶cacti,而後使用cacti源碼目錄下的cacti.sql腳本,導入預設的各類數據表)
[root@centos1 /]# mysql -u root -p mysql> CREATE DATABASE cacti DEFAULT CHARACTER SET utf8; mysql> FRANT all ON cacti.* TO 'cacti'@'localhost' IDENTIFDED BY 'cacti';
[root@centos1 /]# cd /var/www/html/cacti/ [root@centos1 /]# mysql -u cacti -p cacti < cacti.sql [root@centos1 /]# mysql -u cacti -p
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | cacti | | mysql | | test | +--------------------+ 4 rows in set (0.00 sec)
mysql> use cacti; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed
mysql> show tables; +---------------------------+ | Tables_in_cacti | +---------------------------+ | cdef | | cdef_items | | colors | | data_input | | data_input_data | | data_input_fields | | data_local | | data_template | | data_template_data | | data_template_data_rra | | data_template_rrd | | graph_local | | graph_template_input | ........ +---------------------------+ 52 rows in set (0.00 sec)
.
調整cacti配置文件
[root@centos1 /]# vim include/config.php $database_type = "mysql"; //指定鏈接的類型 $database_default = "cacti"; //鏈接的庫 $database_hostname = "localhost"; //登錄源 $database_username = "cacti"; //用戶名 $database_password = "cacti"; //用戶密碼 $database_port = "3306"; /鏈接的端口 $database_ssl = false; //不啓用ssl /* Edit this to point to the default URL of your Cacti install ex: if your cacti install as at http://serverip/cacti/ this would be set to /cacti/ */ $url_path = "/"; //指定cacti的根目錄這個目錄是cacti的文件目錄下,因此後面還須要修改httpd支配文件
[root@centos1 /]# vim /etc/httpd/conf/httpd.conf [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 /]# service httpd restart [root@centos1 /]# netstat -anpt | grep 80 tcp 0 0 0.0.0.0:58052 tcp 0 0 :::80
.
服務器配置完成
.
(客戶端)
初始化cacti系統
在瀏覽器中輸入http://192.168.1.1,而後根據提示安裝。
.
111
.
.
.
.
.
.
到此爲止服務器配置完成了,下面開始配置一臺linux客戶端(mysql主192.168.1.2),而後使用cacti監控客戶端。
配置客戶端(被控端snmpd)
不管是路由器、交換機、仍是linux或windows服務器,只要正確支持SNMP協議,並容許Client服務器採集數據,就可以對其進行監測。下面僅介紹在linux服務器中啓用SNMP支持並設置共同體名的簡單方法。
ps:共同體名,值的是一種驗證機制,全部的client都必須使用同一個共同體名,就像咱們以前學習的hsrp的組同樣,只有組號相同才能是一個組的,這裏也是如此,只有共同體名相同的時候,Cacti才能經過這個共同體名對client進行監控。
須要安裝net-snmp、lm_sensors軟件包,而後經過修改其配置文件/etc/snmp/snmpd.conf,並啓動snmpd服務,並創建規則,默認監聽UDP的161號端口。
.
(mysql主)
.
[root@centos1 /]# yum -y install net-snmp lm_sensors [root@centos1 /]# vim /etc/yum.repos.d/index.repo 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@centos1 /]# service snmpd start [root@centos1 /]# netstat -anpt | grep "snmpd" [root@centos1 /]# netstat -anpu | grep "snmpd"
.
開例外 [root@centos1 /]# iptables -I INPUT -p udp --dport 161 -j ACCEPT
.
使用cacti的web控制檯(下面以5個部分說明)
.
.
添加被控設備/主機,設置監控項目
單擊導航欄中的「management(管理)」下的「devices(設備)」,能夠管理被控設備或主機。點擊devices---Add
.
.
而後單擊右下角的「create」建立,將自動鏈接目標執行snmp查詢
設置要監測的項目
成功鏈接被控端後會看到save successful提示,以下圖:
.
.
.
生成檢測圖像
建立圖像
單擊導航欄中create下的new graphs(圖表),選擇被控端,選中最須要的圖像條目,最後單擊下方的create按鈕完成建立。
.
.
添加圖像至監測樹
單擊導航欄中的management下的graph trees,在單擊default tree就能夠對默認的圖像監測樹進行管理。單擊右側的add,能夠向監測樹種添加「樹項目」,完成以後點擊create,並點擊save保存。
.
.
按期採集監測數據
Cacti系統經過poller.php頁面採集監測數據,能夠結合計劃任務按期採集(默認的刷新間隔是5分鐘)
執行完成以後,會出現不少的提示信息,通常狀況下是指時區不正確,建議將時區改成Asia/Chongqing
因爲是php報的錯誤,因此經過php.ini主配置文件解決這個問題
[root@centos1 cacti]# vim /etc/php.ini date.timezone = Asia/Chongqing //946行去掉註釋 [root@centos1 /]# crontab -e */5 * * * * /usr/bin/php /var/www/html/cacti/poller.php . [root@centos1 /]# crontab -u cacti -e */5 * * * * /usr/bin/php /var/www/html/cacti/poller.php > /dev/null
.
刷新 [root@centos1 /]# /usr/bin/php /var/www/html/cacti/poller.php
查看監測結果
單擊cacti管理控制檯左上方的graphs標籤,而後展開左側的default tree樹,選擇被控主機後便可看到各監測圖像。
安裝percona-mysql-monitor插件
Cacti工具默認的模板只能監控機器的cpu,內存和磁盤等信息,若是想要監控mysql,就須要安裝插件,操做以下。
解壓縮軟件到目標位置
[root@centos1 /]# umount /dev/cdrom /media/ [root@centos1 /]# mount /dev/cdrom /media/ [root@centos1 /]# cd /media/ [root@centos1 /]# ls [root@centos1 /]# tar zxf percona-monitoring-plugins-1.1.4.tar.gz -C /usr/src/ [root@centos1 /]# cd /usr/src/percona-monitoring-plugins-1.1.4/ [root@centos1 /]# ls [root@centos1 /]# cd cacti/scripts/ [root@centos1 /]# cp ss_get_mysql_stats.php /var/www/html/cacti/script
.
在mysql數據庫受權用戶
[root@centos1 /]# mysql -u root -p mysql> grant process , super on *.* to cactiuser@'192.168.1.1' identified by 'cactiuser'; . [root@centos1 /]# iptables -I INPUT -p tcp --dport 3306 -j ACCEPT .
爲設備添加項目
在Cacti管理界面中進行添加,點擊Consose——Import Templates——選擇文件, 將宿主機下的壓縮目錄解壓到一個文件夾內,選擇解壓後的cacti\templat目錄下的cacti_host_template_percona_mysql_server_ht_0.8.6i-sver1.1.4.xml,最後單擊import導入。
.
.
.
.
.
.
.
.
.
.
.
.
.
.
[root@centos1 /]# /usr/bin/php /var/www/html/cacti/poller.php [root@centos1 /]# /usr/bin/php /var/www/html/cacti/poller.php --force