用cacti能夠監控本機、遠程機器資源與機器的狀態,包括cpu、內存、tcp等等信息,當被監控的機器超負載運行時會自動發郵件通知報警。
php
將一臺linux5.6機器做爲cacti服務器,另外2臺linux5.6模擬被監控的機器。要保證cacti服務器能夠訪問因特網。用到的軟件包有cacti087e_linux_generic-20100519-yrg.zip(cacti的一個模板,號稱通用模板)、cacti-0.8.7e-cn-utf8.tar.gz(cacti安裝版,中文版)、cacti-plugin-0.8.7d-PA-v2.4-cn-utf8.diff.gz(cacti插件)、cacti-spine-0.8.7e.tar.gz(一個cacti輪詢器—spine,cacti自帶了一個叫cmd.php的輪詢器,但性能不如spine的高)、epel-release-5-4.noarch.rpm(爲了安裝rrdtool須要預先配置yum源環境,該包的做用是配置yum源環境)、monitor-0.8.2.zip(cacti監控視圖插件)、settings-0.5.zip(cacti要有報警功能,爲了實現報警功能,cacti須要settings這個依賴包)、thold-0.4.1.tar.gz(cacti報警插件)html
配置過程:
mysql
對cacti服務器的操做:
linux
[root@localhost ~]# yum install httpd mysql-server php php-mysql gd net-snmp php-snmp net-snmp-utils net-snmp-devel mysql-devel openssl-devel fonts-chinese libtool gcc gcc-c++ -y ///說明:配置yum源用yum安裝所需軟件,cacti要基於lamp環境運行,因此要安裝Apache、mysql、php以及相關的軟件包,cacti同時也要靠snmp協議工做,在linux中snmp協議的軟件包是net-snmp,故也要把snmp裝上。cacti裝好以後打開瀏覽器查看,會發現圖像說明文字是亂碼,因此要安裝中文字體,這裏安裝fonts-chinese,在接下來要安裝的spine插件時,要預先安裝libtool包,不然會報:configure: error: cannot run /bin/sh config/config.sub這個錯誤,這裏用yum安裝的fonts-chinese以及libtool軟件包能夠不在此處安裝,等問題出現時再安裝也不遲。c++
[root@localhost ~]# service httpd startsql
[root@localhost ~]# service snmpd start數據庫
[root@localhost ~]# service mysqld start ///分別啓動Apache、snmp、mysql服務windows
[root@localhost ~]# chkconfig mysqld on瀏覽器
[root@localhost ~]# chkconfig httpd on服務器
[root@localhost ~]# chkconfig snmpd on ///分別將mysql、Apache、snmp服務設置成開機自啓動
mysql> create database cacti default character set utf8; ///進入mysql數據庫,建立名爲cacti的數據庫,設置默認的字體爲utf8
mysql> grant all privileges on cacti.* to cacti@localhost identified by 'cacti' with grant option; ///設置數據庫cacti的用戶名密碼分別是cacti
mysql> flush privileges; ///將上面新建的數據庫cacti生效
[root@localhost ~]# mkdir software //在root目錄下新建software目錄,把所須要的軟件包下載或拷貝到這個目錄下
[root@localhost software]# tar zxf cacti-0.8.7e-cn-utf8.tar.gz ///解壓縮cacti安裝包
[root@localhost software]# mv cacti-0.8.7e-cn-utf8 /var/www/html ///將解壓縮後的cacti安裝包拷貝到Apache文件目錄下,這裏用的是Apache的默認目錄,也能夠新建一個目錄,好比:/data1/www,而後將該包拷貝到/data1/www/下
[root@localhost html]# mv cacti-0.8.7e-cn-utf8 cacti
[root@localhost html]# vi /var/www/html/cacti/include/config.php ///修改配置cacti配置文件,將用戶名密碼改爲在數據庫裏面創建的用戶名密碼,這裏都是cacti
/* make sure these values refect your actual database/host/user/password */
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "cacti";
$database_port = "3306";
[root@localhost html]# vi /etc/httpd/conf/httpd.conf ///修改配置Apache配置文件,這裏是把cacti安裝在默認的Apache目錄下,若是是安裝在其餘目錄下,還須要更改DocumentRoot目錄以及更改<Directory ****>目錄
DirectoryIndex index.php index.html index.html.var
AddType application/x-httpd-php .php
[root@localhost html]# vi /etc/httpd/conf.d/cacti.conf ///建立cacti.conf文件,若是是將cacti安裝在其餘目錄下,要將裏面的目錄從新指定
Alias /cacti /var/www/html/cacti
<Directory /var/www/html/cacti>
DirectoryIndex index.php
AllowOverride all
order deny,allow
allow from all
php_flag magic_quotes_gpc on
php_flag track_vars on
</Directory>
[root@localhost cacti]# mysql -uroot -p cacti < /var/www/html/cacti/cacti.sql ///導入cacti庫所須要的數據結構
[root@localhost cacti]# crontab -e ///編輯crontab,設置每隔5分鐘刷新一次圖
*/5 * * * * php /var/www/html/cacti/poller.php > /dev/null
[root@localhost software]# rpm -ivh epel-release-5-4.noarch.rpm
[root@localhost software]# yum install rrdtool -y ///安裝rrdtool,做爲畫圖用
[root@localhost cacti]# /etc/init.d/httpd restart
[root@localhost cacti]# /etc/init.d/mysqld restart
[root@localhost cacti]# /etc/init.d/snmpd restart ///分別重啓相關服務
如今能夠打開瀏覽器,在地址欄輸入http://ip地址/cacti,開始在圖形界面上對cacti操做,個人ip是10.10.16.29.
將上面安裝的fonts-chinese安裝包路徑地址填寫到cacti的設置-->路徑-->rrdtool默認字體路徑下
[root@localhost software]# ls /usr/share/fonts/chinese/TrueType/ukai.ttf
/usr/share/fonts/chinese/TrueType/ukai.ttf
[root@localhost software]# php /var/www/html/cacti/poller.php
[root@localhost software]# php /var/www/html/cacti/poller.php --force ///也能夠手動強制觸發poller
01/23/2014 10:01:51 AM - SYSTEM STATS: Time:2.3562 Method:spine Processes:2 Threads:10 Hosts:4 HostsPerProcess:2 DataSources:77 RRDsProcessed:62
OK u:0.00 s:0.00 r:2.05
OK u:0.00 s:0.00 r:2.05
OK u:0.00 s:0.00 r:2.05
OK u:0.00 s:0.00 r:2.05
[root@localhost software]# tailf /var/www/html/cacti/log/cacti.log ///每次手動觸發,或者crontab自動觸發,在cacti日誌裏面都能看到相關記錄,若要報錯信息也會在這裏顯示
01/23/2014 09:45:04 AM - SYSTEM STATS: Time:2.3162 Method:spine Processes:2 Threads:10 Hosts:4 HostsPerProcess:2 DataSources:77 RRDsProcessed:62
01/23/2014 09:45:06 AM - SYSTEM THOLD STATS: Time:2.6616 Tholds:1 Hosts:0
01/23/2014 09:50:04 AM - SYSTEM STATS: Time:2.3266 Method:spine Processes:2 Threads:10 Hosts:4 HostsPerProcess:2 DataSources:77 RRDsProcessed:62
01/23/2014 09:50:06 AM - SYSTEM THOLD STATS: Time:2.3926 Tholds:1 Hosts:0
01/23/2014 09:55:04 AM - SYSTEM STATS: Time:2.3599 Method:spine Processes:2 Threads:10 Hosts:4 HostsPerProcess:2 DataSources:77 RRDsProcessed:62
01/23/2014 09:55:07 AM - SYSTEM THOLD STATS: Time:2.8152 Tholds:1 Hosts:0
01/23/2014 10:00:03 AM - SYSTEM STATS: Time:2.3356 Method:spine Processes:2 Threads:10 Hosts:4 HostsPerProcess:2 DataSources:77 RRDsProcessed:62
01/23/2014 10:00:06 AM - SYSTEM THOLD STATS: Time:3.1911 Tholds:1 Hosts:0
01/23/2014 10:01:51 AM - SYSTEM STATS: Time:2.3562 Method:spine Processes:2 Threads:10 Hosts:4 HostsPerProcess:2 DataSources:77 RRDsProcessed:62
01/23/2014 10:01:54 AM - SYSTEM THOLD STATS: Time:2.7351 Tholds:1 Hosts:0
到這裏,cacti基本的安裝已經完成,能夠實現監控本地機器,下面安裝cacti的相關插件:
1.安裝輪詢器spine插件
[root@localhost software]# tar zxf cacti-spine-0.8.7e.tar.gz
[root@localhost software]# cd cacti-spine-0.8.7e
[root@localhost cacti-spine-0.8.7e]# ./configure ///若是到這裏沒有安裝libtool依賴包,會報錯:configure: error: cannot run /bin/sh config/config.sub
[root@localhost cacti-spine-0.8.7e]# make &&make install
[root@localhost ~]# vi /usr/local/spine/etc/spine.conf ///修改spine輪詢器鏈接數據庫權限,更改配置文件裏面的鏈接數據庫的用戶名密碼
DB_Host localhost
DB_Database cacti
DB_User cacti
DB_Pass cacti
DB_Port 3306
[root@localhost ~]# ln -s /usr/local/spine/etc/spine.conf /etc/spine.conf ///將spine配置文件作軟鏈接
[root@localhost ~]# echo "/usr/local/spine/bin/spine" >> /etc/rc.local ///將spine設置爲開機自啓動
2.安裝cacti plugin插件
[root@localhost software]# gzip -d cacti-plugin-0.8.7d-PA-v2.4-cn-utf8.diff.gz
[root@localhost software]# mv cacti-plugin-0.8.7d-PA-v2.4-cn-utf8.diff /var/www/html/cacti/
[root@localhost software]# cd /var/www/html/cacti/
[root@localhost cacti]# patch -p1 -N < cacti-plugin-0.8.7d-PA-v2.4-cn-utf8.diff ///將該插件(補丁)打進去
[root@localhost cacti]# mysql -uroot -p cacti < pa.sql/var/www/html/cacti/pa.sql ///導入cacti庫所須要的cacti插件數據結構
[root@localhost cacti]# vi /var/www/html/cacti/include/global.php ////編輯cacti全局配置文件
/* Default database settings*/
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti"; ///將用戶名密碼分別改爲cacti
$database_password = "cacti";
$database_port = "3306";
......
$config['url_path'] = '/cacti/'; ///將此處的路徑由 / 改爲 /cacti/,注意這裏改爲的是/cacti/,不是/cacti,不然cacti會找不到圖片路徑,以前我犯過數次錯誤,通過很長一段時間排錯,發現錯誤的根源是少了「/」
3.安裝monitor插件
[root@localhost software]# mkdir monitor
[root@localhost software]# cp monitor-0.8.2.zip monitor/
[root@localhost monitor]# unzip monitor-0.8.2.zip
[root@localhost software]# mv monitor /var/www/html/cacti/plugins/
[root@localhost software]# mysql -uroot -p cacti < /var/www/html/cacti/plugins/monitor/monitor.sql ///導入cacti庫所須要的monitor數據結構
[root@localhost software]# vi /var/www/html/cacti/include/global.php ///再次編輯cacti全局配置文件,在$plugins = array();下面增長$plugins[] = 'monitor';
$plugins = array();
//$plugins[] = 'thold';
$plugins[] = 'monitor';
4.安裝thold報警插件
因爲thold軟件包依賴settings軟件包,因此要先安裝settings軟件包:
4.1安裝settings軟件包:
[root@localhost software]# mkdir settings
[root@localhost software]# cp settings-0.5.zip settings
[root@localhost settings]# unzip settings-0.5.zip
[root@localhost software]# mv settings /var/www/html/cacti/plugins ///只須要將settings配置文件拷貝到cacti的plugins目錄下就能夠了,不須要導入數據庫
4.2安裝thold報警軟件包
[root@localhost software]# tar zxf thold-0.4.1.tar.gz
[root@localhost software]# mv thold /var/www/html/cacti/plugins ///將thold包移到plugins下
[root@localhost software]# mysql -uroot -p cacti < /var/www/html/cacti/plugins/thold/thold.sql ///導入cacti庫所須要的thold數據結構
[root@localhost software]# vi /var/www/html/cacti/include/global.php ///又一次編輯cacti全局配置文件,在$plugins = array(); 這行下面增長下面兩行
$plugins[] = 'settings';
$plugins[] = 'thold';
走到這裏,cacti的須要的插件都安裝好了,也能夠選擇其餘貨更多的插件安裝,方法相似。下面用瀏覽器進入cacti圖形界面進行一些設置
進到cacti界面,先刷新一下,發現上面的工具欄會多出一個monitor的按鈕,點擊左邊樹狀的工具欄中的用戶管理,選擇admin,勾上view Thresholds,選擇保存如上圖。而後會發如今左側的工具欄中多了一個插件管理選項,點擊插件管理,點安裝Thresholds插件,點啓用Thresholds插件,此時會發現上面的工具欄多出了thold選項,這說明這裏的操做成功了,以下圖:
如今開始作添加遠程主機、並監控遠程主機的操做:
首先要在被監控的遠端機器上面啓用snmp協議(linux和windows主機都要啓用)
1.在被監控的linux主機上安裝net-snmp包,並修改snmp配置文件
[root@localhost ~]# yum install net-snmp -y
[root@localhost ~]# vi /etc/snmp/snmpd.conf ///修改第62行、第85行便可
62 access notConfigGroup "" any noauth exact all none none
....
85 view all included .1 80
[root@localhost ~]# service snmpd start
2.用瀏覽器登陸cacti服務器的ip地址,http://ip/cacti/
將cacti087e_linux_generic-20100519-yrg.zip這個模板解壓縮,將壓縮後獲得的配置文件導入到cacti中,具體作法:進入cacti圖形界面,選擇左側工具欄「導入/導出」裏的「導入模板」,點選擇文件,將剛剛解壓後的模板文件導進去,之後監控其餘主機就用這個模板,固然也能夠用其餘的模板,須要導入其餘的模板。以下圖:
爲了便於監控數以百計的服務器,接下來添加圖像樹,添加圖像樹的目的就是講被監控的機器分門別類的放到一塊兒,爲的是便於監控,選擇左側工具欄的「圖像樹」,在新出現的頁面的右上方選擇「添加」在新出現的頁面中填寫圖像樹的名稱(能夠寫的有意義一點),點擊「建立」便可。
接下來添加被監控的主機。選擇圖形界面上的左側的「管理」中的「設備」按鈕,在新彈出的界面中點擊右上角的「添加」,接下來具體作法以下圖,然選擇建立
點擊完建立以後會進入另外一個界面,在該界面的右上方點「爲此設備生成圖像」,接下來具體操做以下圖,右側劃紅線的部分能夠隨便選擇監控與否,底下的「選擇圖像類型」,選擇64位的,選擇默認的話之後會出現問題:
而後選擇左側工具欄中的「管理」裏的「圖像管理」選項,具體作法以下圖,選擇右側複選框勾選須要監控的資源,在底下選擇將這些藥監控的東西放到一個指定的圖像樹裏面,便於監控。
3.配置cacti,作報警信息:
選擇左側工具欄中的「配置」裏的「設置」選項,再選擇上方的「Alerting/Thold」,在相應位置填寫報警信息要發給的郵箱地址,以下圖:
而後選擇左側的「Templates」裏的「Threshold」選項,在出現的界面的右上方,選擇「添加」,在出現的界面中選擇要監控的主機名,選擇要監控的資源信息,選擇數據資源,選擇建立,以下圖:
在出現的界面中填寫相應信息,這裏的閥值(2和1)是我爲了演示更明顯才這麼作的,完成後,cacti會每隔5分鐘發一封郵件給我提示報警。以下圖:
到這裏,監控遠程機器併發郵件給本身的郵箱報警的功能已經完成。
下面對cacti服務器進行優化:
1. 採用spine輪詢器,即 設置-->輪詢器-->輪詢器類型spine
2. 設置spine 進程數和線程數,以下圖:
3. 增大php.ini 內的memory_limit ,即編輯文件 : vi /etc/php.ini ,按實際需求調整數值
4. 增大mysql的最大鏈接數,即:
mysql> use cacti
mysql> show variables like "%max_connections";
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 100 |
+-----------------+-------+
1 row in set (0.00 sec)
mysql> set global max_connections=5000;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like "%max_connections";
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 5000 |
+-----------------+-------+
1 row in set (0.00 sec)
5. 添加mysql table的index
CREATE INDEX `data_template_data_id` ON `data_input_data` (`data_template_data_id`);
CREATE INDEX `host_id_snmp_query_id_snmp_index` ON data_local (`host_id`,`snmp_query_id`,`snmp_index`);
CREATE INDEX `local_data_id_data_source_name` ON data_template_rrd (`local_data_id`,`data_source_name`);
CREATE INDEX `graph_template_id_local_graph_id` ON graph_templates_item (`graph_template_id`,`local_graph_id`);
CREATE INDEX `local_graph_template_item_id` ON graph_templates_item (`local_graph_template_item_id`);
CREATE INDEX `host_id_snmp_query_id_snmp_index` ON host_snmp_cache (`host_id`,`snmp_query_id`,`snmp_index`);
CREATE INDEX `local_data_id_rrd_path` ON poller_item (`local_data_id`,`rrd_path`);
CREATE INDEX `host_id_rrd_next_step` ON poller_item (`host_id`,`rrd_next_step`);
CREATE INDEX host_id_snmp_query_id ON host_snmp_cache (host_id,snmp_query_id);
CREATE INDEX host_id_snmp_port ON poller_item (host_id,snmp_port);
CREATE INDEX data_source_path ON data_template_data (data_source_path);
6. 加上RRA路徑結構,即 設置-->路徑-->勾選RRA路徑結構
7. 按期清理poller_output表
ok,到這裏cacti配置、監控、優化完成!