Cacti是一款優秀的開源監控軟體,使用php實作,它的主要特點是使用snmp服務擷取資料,然後用rrdtool存儲和更新資料,當使用者檢視資料的 時候,rrdtool生成圖表呈現給使用者。mysql資料庫用于存儲變量并進行調用。mysql資料庫并不存儲snmp捕獲到的資料,snmp捕獲到的數 據,存在于rrdtool生成的rrd檔案中,這些檔案位于cacti目錄下的rra目錄中。
本文主要介紹cacti中文版的安裝,配置,cacti插件的安裝,配置。英文版的安裝跟中文版大同小異,但是中文版會麻煩點,是以就以中文版為例。
系統:linux 5.6
軟體:cacti-0.8.7b
一、 準備軟體的安裝
由于cacti使用php來實作,通過WEB來管理,使用snmp來捕獲資料,使用rrdtool來生成圖表,使用mysql來存儲變量,是以需要先安裝這些軟體,直接使用yum進行安裝即可,共需安裝以下rpm包:
httpd/mysql-server/php/php-mysql/rrdtool/gd/net-snmp/php-snmp/net-snmp-utils/net-snmp-devel/mysql-devel/openssl-devel
各個rpm包的作用為:
httpd WEB伺服器apache
mysql-server 資料庫mysql
php cacti使用php來實作
php-mysql php支援mysql
rrdtool 用來生成cacti圖像
gd rrdtool繪制圖像需要的圖形庫
php-snmp php支援snmp
net-snmp-utils 一些snmp的擴充指令,如:snmpwalk、snmpget等,cacti需要
net-snmp-devel/mysql-devel/openssl-devel cactid/spine需要
如果之前有LAMP 環境就不需要安裝LAMP 了建議是php5.3的版本。如果沒安裝
yum -y install httpd gettext mysql mysql-server mysql-devel php php-mysql php-p
yum -y install php-mysql mysql perl mysql-server perl-DBI perl-DBD-MySQL httpd gcc glibc glibc-common gd gd-devel php
由于RH元件中是不帶rrdtool的需要源碼安裝之前安裝過了Nagios 是以不用在安裝
設定開機自啟動
#chkconfig httpd on
#chkconfig mysqld on
#chkconfig snmpd on
二、 MySQL資料設定
由于cacti依靠mysql來存儲必要的變量,我們有必要對MySQL做些設定。
啟動并初始化mysql資料庫
#service mysqld start
為root使用者設定密碼(以linuxpad為例),并更改登入權限,預設密碼為空
#mysql –u root –p 回車後輸入密碼(空)
mysql>use mysql;
mysql>update user set password=password(‘linuxpad’) where user=’root’;
mysql>grant all privileges on *.* to [email protected] identified by ‘linuxpad’ with grant option;
mysql>flush privileges;
添加cacti庫和cacti使用者,并為其設定權限
mysql>create database cacti default character set utf8; //資料庫字元集設定utf8,否則亂碼
mysql>grant all privileges on cacti.* to [email protected] identified by ‘linuxpad’ with grant option;
mysql>flush privileges;
三、 安裝Cacti
下載下傳cacti-0.8.7e-cn-utf8.tar.gz,位址為http://blogimg.chinaunix.net/blog /upfile2/090815172648.gz (這個連結是tar.gz格式的,請下載下傳後更改檔案格式),假設下載下傳目錄為/opt/soft,下面相同
#cd /opt/soft
#tar zxvf 090815172648.tar.gz
#mv cacti-0.8.7e-cn-utf8 /var/www/cacti
修改配置檔案
#vi /var/www/cacti/include/config.php
修改内容如下
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "linuxpad";
關于cacti添加使用者,網上常見的做法是添加一個cacti的使用者,并更改rra和log目錄屬主。經過本人測試這裡并不需要添加cacti使用者并更改 rra和log的屬主,直接使用root即可。原因是因為官方的安裝文檔上使用的是FreeBSD,在計劃任務那步使用的是:
*/5 * * * * cacti php /var/www/cacti/poller.php &>/dev/null,使用使用者cacti來執行任務。
但是centos并不是識别這個cacti參數,是以也就無需使用cacti來執行任務,我們直接使用root來執行任務就OK了,于是不用更改目錄權限,crontab内容為
*/5 * * * * php /var/www/cacti/poller.php >/dev/null &2>1
還有另外一種的解決方案,就是添加一個cacti使用者,更改rra和log目錄屬主為cacti,然後在cacti使用者環境下設定crontab,内容為
*/5 * * * * php /var/www/cacti/poller.php >/dev/null &2>1
這樣就能實作crontab計劃是由cacti使用者來執行的了。
建立并編輯apache的cacti配置檔案
#vi /etc/httpd/conf.d/cacti.conf
内容如下:
Alias /cacti /var/www/cacti
<Directory /var/www/cacti>
DirectoryIndex index.php
AllowOverride all
order deny,allow
allow from all
php_flag magic_quotes_gpc on
php_flag track_vars on
</Directory>
導入資料庫
#mysql –u root –p cacti < /var/www/cacti/cacti.sql
啟動服務,然後通路http://ip/cacti開始安裝cacti
#service mysqld start
#service httpd start
#service snmpd start
直接下一步,選擇”全新安裝”,來到下面的一個界面,如圖1
請确認所有路徑都已找到,并選擇SNMP應用程式版本為5.x,RRDTool版本為1.3.x。
完成之後來到登入頁面,預設使用者名admin,密碼admin,登入之後會提示你強制更改密碼。
設定計劃任務
#crontab –e
追加以下内容
*/5 * * * * php /var/www/cacti/poller.php >/dev/null &2>1
安裝ttf-arphic-ukai_0.1.20060928.orig.tar.gz字型
Tar zxvf ttf-arphic-ukai_0.1.20060928.orig.tar.gz
cd ttf-arphic-ukai-0.1.20060928
cp ukai.ttf /usr/share/fonts/zh_CN/TrueType/
cd /usr/share/fonts/zh_CN/TrueType/
ttmkfdir –d在目前目錄下會更新fonts.scale檔案,把新的字型ukai.ttf加入此檔案。
以上所有軟體安裝完。
打開Cacti,控制台->配置->設定->路徑:
将RRDTool預設字型路徑設為/usr/share/fonts/zh_CN/TrueType/ukai.tttf
配置無誤,會顯示檔案已找到。
四、 配置本機snmp
yum -y install net-snmp* php-snmp
編輯snmp配置檔案/etc/snmp/snmp.conf
修改:
com2sec notConfigUser default public
改為:
com2sec notConfigUser 127.0.0.1 public
修改:
access notConfigGroup "" any noauth exact systemview none none
改為:
access notConfigGroup "" any noauth exact all none none
去掉這句的注釋
#view all included .1 80
重新開機snmp服務并測試
#service snmpd restart
# snmpwalk -v 1 -c public localhost IP-MIB::ipAdEntIfIndex
IP-MIB::ipAdEntIfIndex.127.0.0.1 = INTEGER: 1
IP-MIB::ipAdEntIfIndex.xxx.xxx.xxx.xxx = INTEGER: 2
IP-MIB::ipAdEntIfIndex.xxx.xxx.xxx.xxx = INTEGER: 3

顯示以上資訊,則snmp配置成功,xxx.xxx.xxx.xxx會根據你本機的IP資訊配置而不同。
Find / -name rrdtool 把路徑寫入下面的配置。
圖1
如果配置正确,隔幾分鐘,我們的cacti就會有資料了,如圖2,你也可以手動執行以下指令手動生成rrd圖像
#/usr/bin/php /var/www/cacti/poller.php &>/dev/null
圖2
五、 安裝Spine
由于預設cmd.php來輪詢資料,速度會很慢,特别是在監控節點比較多的情況下,cmd.php就更顯不足了,是以我們采用Spine來輪詢資料。cacti-spine是一個由C語言開發的,用于替代cmd.php的快速擷取速度的引擎。
下載下傳位址:http://www.cacti.net/downloads/spine/cacti-spine-0.8.7e.tar.gz
安裝spine之前請確定它所依賴的包net-snmp-devel、mysql-devel、openssl-devel都已安裝完畢。
以下是安裝步驟
#cd /opt/soft
#wget http://www.cacti.net/downloads/spine/cacti-spine-0.8.7e.tar.gz
#tar zxvf cacti-spine-0.8.7e.tar.gz
#cd cacti-spine-0.8.7e
#./configure
#make && make install
編輯spine配置檔案
#vi /usr/local/spine/etc/spine.conf
修改内容如下:
DB_Host localhost
DB_Database cacti
DB_User cacti
DB_Pass linuxpad
DB_Port 3306
将spine啟動并設定開機自啟動
#/usr/local/spine/bin/spine
#echo /usr/local/spine/bin/spine >>/etc/rc.d/rc.local
Cacti設定:
Cacti控制台->配置->設定
路徑:将Spine輪詢器路徑設定為/usr/local/spine/bin/spine
輪詢器:輪詢器類型選擇Spine
到此為止,我們已經成功安裝Spine輪詢器并使用。
php add_device.php --list-snmp-queries 檢視裝置類型
php add_device.php --list-host-templates 檢視主機模版
php add_device.php --list-graph-templates 檢視圖形模版
php add_device.php --list-communities 檢視共同體名
php add_device.php --list-snmp-fields --host-id=405 檢視主機snmp類型
php add_device.php --list-trees #檢視樹的id
php add_device.php --list-hosts # 檢視存在主機
php -q add_tree.php --list-trees #檢視樹的ID
Cacti如何監控Mysql
Cacti如何監控Mysql:Cacti和Nagios是現在比較用得多的網絡監控軟體。cacti偏重于網絡流量,系統負載方面的監控。Nagios則比較注重于主機和服務的監控。但是他們詳細的差別在哪兒呢。本文講述的是Cacti如何監控Mysql
AD:
cacti監控mysql資料庫的方法
環境:
Cactiez或者cacti主機:192.168.12.5
被監控mysql資料庫主機:192.168.5.231
1. 安裝監控插件
1 cd /opt
2
3 tar -xzvf mysql-cacti-templates-1.1.2.tar.gz
4
5 cp /opt/mysql-cacti-templates-1.1.2/ss_get_mysql_stats.php /var/www/html/scripts/
6
其實裡面我們要監控mysql用到的是:acti_host_template_x_db_server_ht_0.8.6i.xml和mysql_definitions.pl
其他則是監控Apache和Nginx的,接下來我們會介紹到,這裡不再詳細的講了。
7 chown -R apache.apache /var/www/html/scripts
8
9 chmod -R 755 /var/www/html/scripts
10
使用 http 通路 cacti主機 導入
11 /opt/mysql-cacti-templates-1.1.2/cacti_host_template_x_db_server_ht_0.8.6i.xml
12
13 http://192.168.12.5
14
預設CactiEZ 和Cacti别是 admin admin
控制台 - 導入導出 - 模闆導入 - 浏覽
選中 cacti_host_template_x_db_server_ht_0.8.6i.xml
儲存
2. 配置cacti的mysql插件
修改 ss_get_mysql_stats.php
15 vi /var/www/html/scripts/ss_get_mysql_stats.php
16
17 $mysql_user = 'cacti';
18
19 $mysql_pass = 'cacti';
20
21 $cache_dir = "/tmp/cacti/cache/";
22
這個賬戶和密碼是 被監控端主機 給 Cacti主機 授權的 賬戶和密碼
Cacti需要這個賬戶和密碼去連接配接 被監控機 查詢狀态
23 mkdir -p /tmp/cacti/cache
24
25 chown -R apache.apache /tmp/cacti
26
27 chmod -R 755 /tmp/cacti
28
設定 cacti 緩存目錄在 /tmp/cacti/cache/ 并給予權限
3. 配置被監控端(192.168.5.231)的mysql 給 cacti 主機授權
29 mysql -uroot -p
30
31 grant process,super on *.* to 'cacti'@'192.168.12.5' identified by 'cacti';
32
33 exit
34
grant process,super on *.* to '賬戶'@'Cacti主機IP位址' identified by '密碼';此指令意義
隻允許IP為 192.168.12.5 的主機 以賬戶 cacti 密碼 cacti 去通路 本機資料
4. 在Cacti主機上(192.168.12.5) 監控Mysql
4.1 為主機添加mysql子產品
控制台 - 管理 - 裝置 - 選中之前建立好的主機
然後移到最下面的 添加圖形模版 選中 Mysql相關子產品 然後儲存
4.2 為mysql子產品建立圖形
控制台 - 建立 - 建立圖形 - 選中該主機 - 選中mysql子產品 - 建立
4.3 插件mysql性能資料
螢幕 - 選中該主機 - 查閱對應的mysql
完畢
-----一些資料庫操作語句
35 mysqld_safe --user=mysql &
36
37 mysql -uroot -p
38
39 mysql -uroot -proot
40
41 grant ALL PRIVILEGES ON *.* to ‘root’@"%" identified by "root" WITH GRANT OPTION;
42
43 exit
44
45 grant select,insert,update,delete on cacti.* to ‘cacti’@”*”identified by "cacti";
46
47 exit
48
49 grant process,super on *.* to 'cacti'@'%' identified by 'cacti';
50
51 grant all privileges on cacti.* to ‘cacti’@"%" identified by "cacti";
52
用戶端開啟Cacti通路本機mysql的權限
53 grant process,super on *.* to 'cacti'@'192.168.12.5' identified by 'cacti';
54
55 grant process,super on *.* to 'cacti'@'192.168.5.231' identified by 'cacti';
56
57 = = = = =
58
59 mysql -ucacti -pcacti -h 192.168.5.231
轉載于:https://www.cnblogs.com/centos-python/articles/8532031.html