linux下的cacti安裝、監控遠程主機及優化

    用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

    wKioL1PEkqWyY2YSAAYZuxnPEKM328.jpg    能夠在cacti服務器的終端商手動觸發poller:

    [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圖形界面進行一些設置

    wKiom1PEoDPxOnT2AAXcCVJN518035.jpg    進到cacti界面,先刷新一下,發現上面的工具欄會多出一個monitor的按鈕,點擊左邊樹狀的工具欄中的用戶管理,選擇admin,勾上view Thresholds,選擇保存如上圖。而後會發如今左側的工具欄中多了一個插件管理選項,點擊插件管理,點安裝Thresholds插件,點啓用Thresholds插件,此時會發現上面的工具欄多出了thold選項,這說明這裏的操做成功了,以下圖:

wKioL1PEoTaB_WSoAAQYFFvUh9U029.jpg


    如今開始作添加遠程主機、並監控遠程主機的操做:

    首先要在被監控的遠端機器上面啓用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圖形界面,選擇左側工具欄「導入/導出」裏的「導入模板」,點選擇文件,將剛剛解壓後的模板文件導進去,之後監控其餘主機就用這個模板,固然也能夠用其餘的模板,須要導入其餘的模板。以下圖:

wKioL1PEpNWRpDOfAAMamqU4lYM557.jpg

    爲了便於監控數以百計的服務器,接下來添加圖像樹,添加圖像樹的目的就是講被監控的機器分門別類的放到一塊兒,爲的是便於監控,選擇左側工具欄的「圖像樹」,在新出現的頁面的右上方選擇「添加」在新出現的頁面中填寫圖像樹的名稱(能夠寫的有意義一點),點擊「建立」便可。

    接下來添加被監控的主機。選擇圖形界面上的左側的「管理」中的「設備」按鈕,在新彈出的界面中點擊右上角的「添加」,接下來具體作法以下圖,然選擇建立

wKiom1PEpbSSiRjXAAYjCviuxHM144.jpg點擊完建立以後會進入另外一個界面,在該界面的右上方點「爲此設備生成圖像」,接下來具體操做以下圖,右側劃紅線的部分能夠隨便選擇監控與否,底下的「選擇圖像類型」,選擇64位的,選擇默認的話之後會出現問題:

wKiom1PEpmKhSZWoAAZGdE8jsI0838.jpg而後選擇左側工具欄中的「管理」裏的「圖像管理」選項,具體作法以下圖,選擇右側複選框勾選須要監控的資源,在底下選擇將這些藥監控的東西放到一個指定的圖像樹裏面,便於監控。

wKiom1PEp3CAL4caAAsYtaHU-Uw883.jpg到這裏,監控其餘機器運行狀態的操做完成。


3.配置cacti,作報警信息:

選擇左側工具欄中的「配置」裏的「設置」選項,再選擇上方的「Alerting/Thold」,在相應位置填寫報警信息要發給的郵箱地址,以下圖:

wKioL1PEqimRcZNYAAkeFsGm5RU091.jpg而後再選擇上方工具欄中的「Mail/DNS」選項,以下圖:

wKiom1PEqs7wyVbxAAeDsjfFXUo300.jpg而後選擇左側的「Templates」裏的「Threshold」選項,在出現的界面的右上方,選擇「添加」,在出現的界面中選擇要監控的主機名,選擇要監控的資源信息,選擇數據資源,選擇建立,以下圖:

wKioL1PEq2vwL4_cAAJ6CjYVc44275.jpg

    

   在出現的界面中填寫相應信息,這裏的閥值(2和1)是我爲了演示更明顯才這麼作的,完成後,cacti會每隔5分鐘發一封郵件給我提示報警。以下圖:

wKioL1PEq8_TEybIAAeAgnI4RIE034.jpg 到這裏,監控遠程機器併發郵件給本身的郵箱報警的功能已經完成。


下面對cacti服務器進行優化:

1. 採用spine輪詢器,即 設置-->輪詢器-->輪詢器類型spine

2. 設置spine 進程數和線程數,以下圖:

wKiom1PErU7CdKttAAXUq-plf0o896.jpg

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配置、監控、優化完成!    

相關文章
相關標籤/搜索