cacti 是用 php 語言實現的一個軟件,它的主要功能是用 snmp 服務獲取數據, snmp 須要的變量數據是經過讀取 mysql 數據庫獲得,而後用 rrdtool 儲存和更新數據,當用戶須要查看數據的時候用 rrdtool 生成圖表呈現給用戶。php
1. Snmp 用來收集數據;html
2. Rrdtool 用來存儲數據和生成圖表;mysql
3. Mysql 用來配合 PHP 程序存儲一些變量數據並對變量數據進行調用。linux
Cacti自己只是一個web界面的管理套件,經過調用Net-SNMP工具來採集檢測數據,客戶端必須支持SNMP協議。並結合RRDtool(Round Robin Database tool,輪詢數據庫工具)記錄數據並繪製圖片,最終,以Web頁面的形式展現給管理員用戶。c++
Cacti能夠從邏輯上分爲三個部分,web
第一部分:被檢測的對象,也就是客戶端。sql
第二部分:檢測平臺,也就是服務器端。shell
第三部分:管理平臺。數據庫
Cacti採用了兩種結構實現功能,apache
一種是C/S結構,主要是實現服務器到客戶端監控;
另一種就是B/S,主要完成對Cacti平臺的管理。
一. 安裝apache
準備工做
(1)yum方式安裝gcc、gcc-c++
# yum install gcc gcc-c++ -y
(2)安裝pcre
pcre下載地址:
http://jaist.dl.sourceforge.net/project/pcre/pcre/8.35/
#tar zxf pcre-8.35.tar.gz
#cd pcre-8.35
#./configure prefix=/usr/local/pcre
#make && make install
(3)安裝apr和apr-util
apr和apr-unit下載地址:
http://archive.apache.org/dist/apr/
1)解壓文件
#tar zxf apr-1.5.0.tar.gz
#tar zxf apr-util-1.5.3.tar.gz
#tar zxf httpd-2.4.9.tar.gz
2)將apr和apr-util拷到http的srclib目錄下,並去掉版本號
#cp -r apr-1.5.0 httpd-2.4.9/srclib/apr
#cp -r apr-util-1.5.3 httpd-2.4.9/srclib/apr-util
3)編譯安裝
安裝apr
#cd httpd-2.4.9/srclib/apr
#./configure --prefix=/usr/local/apr
#make && make install
安裝apr-util
#cd /root/httpd-2.4.9/srclib/apr-util/
#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
#make && make install
2.正式安裝apache
Apache下載地址:
http://archive.apache.org/dist/httpd/
#cd httpd-2.4.9
#./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/ --with-pcre=/usr/local/pcre/
#make && make install
啓動apache服務
#service httpd start
安裝成功,啓動httpd服務並加入開機啓動
#chkconfig httpd on
二. 安裝mysql
1.準備工做
(1)yum方式安裝ncurses-devel
#yum install ncurses-devel –y
(2)安裝cmake
cmake下載地址:
http://wwwNaNake.org/files/v3.0/
#tar zxf cmake-3.0.0.tar.gz
#cd cmake-3.0.0
#./configure
#make && make install
2.建立mysql的安裝目錄及數據庫存放目錄
#mkdir /usr/local/mysql/date -pv
/usr/local/mysql/ //mysql安裝目錄
/usr/local/mysql/data //存在數據庫
3.建立mysql用戶和用戶組
#groupadd mysql
#useradd -r -g mysql mysql
useradd [option] username
[option]:
-d<登入目錄> 指定用戶登入時的目錄。
-g<羣組> 初始羣組。
-G<羣組> 非初始羣組。
-m 自動建立用戶的家目錄。
-M 不要建立用戶的家目錄。
-N 不要建立以用戶名稱爲名的羣組。
-s 指定用戶登入後所使用的shell。
-c comment 給新用戶添加備註
-d home_dir 爲主目錄指定一個名字(若是不想用登陸名做爲主目錄名的話)
-e expire_date 用YYYYY-MM-DD格式指定一個帳戶過時的日期
-f inactive_days 指定這個賬戶密碼過時後多少天這個帳戶被禁用;
0表示密碼一過時就當即禁 用,-1表示禁用這個功能
-k 必須和-m一塊兒使用,將/etc/skel目錄的內容複製到用戶的HOME目錄
-n 建立一個同用戶登陸名同名的新組
-r 建立系統帳戶
-p passwd 爲用戶帳戶指定默認密碼
-s shell 指定默認登陸shell
-u uid 爲帳戶指定一個惟一的UID
4.源碼方式安裝mysql
Mysql下載地址:
http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.17.tar.gz
#tar zxf mysql-5.6.17.tar.gz
#cd mysql-5.6.17
#cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock -DWITH_DEBUG=0
#make && make install
參數說明:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql //安裝目錄
-DMYSQL_DATADIR=/usr/local/mysql/data //數據庫存放目錄
-DMYSQL_TCP_PORT=3306 //端口號
-DENABLED_LOCAL_INFILE=1 //容許從本地導入數據
5.配置mysql
(1)設置目錄權限
#chown mysql:mysql /usr/local/mysql/ -R
(2)初始化mysql數據庫
#cd /usr/local/mysql/
#./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data/ --basedir=/usr/local/mysql/
(3)複製mysql服務啓動腳本
#cp ./support-files/mysql.server /etc/init.d/mysqld
(4)配置環境變量
#vim /etc/profile
添加:
PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib
從新加載重啓生效
#source /etc/profile
(5)修改mysql主配置文件/etc/my.cnf
所有內容以下:
6.啓動mysql
(1)開啓守護進程,生成pid
#./mysqld_safe &
(2)啓動mysql
#service mysqld restart
7.設置mysql管理員密碼
#./mysqladmin password "123456" -u root
三. 安裝PHP
準備工做
1)安裝zlib
zlib下載地址:
http://www.zlib.net/
#tar zxf zlib-1.2.8.tar.gz
#cd zlib-1.2.8
#./configure --prefix=/usr/local/zlib
#make && make install
2)安裝libpng
libpng下載地址:
http://sourceforge.net/projects/libpng/postdownload?source=dlp
注意:這裏建議下載libpng-1.5.18版本,由於libpng與zlib存在版本兼容的問題,若是版本不合適,會make的時報錯
已知 zlib-1.2.8和libpng-1.6.10之間就存在這種問題, zlib-1.2.8和libpng-1.5.18能夠正常安裝,有篇文章對此問題進行了一些描述
#tar zxf libpng-1.5.18.tar.gz
#cd libpng-1.5.18
#./configure --prefix=/usr/local/libpng
#make && make install
編譯的時候後面加上--with-zlib-prefix=/usr/local/zlib/,仍是提示相同的錯誤
明明已經安裝了zlib,爲何提示zlib沒有安裝,原來是沒有安裝zlib-devel,下面咱們使用yum方式安裝zlib-devel
#yum install zlib-devel
下面編譯就成功了
#./configure --prefix=/usr/local/libpng --with-zlib-prefix=/usr/local/zlib/
再安裝
3)安裝freetype
freetype下載地址:
http://sourceforge.net/projects/freetype/files/freetype2/2.5.3/
#cd freetype-2.5.3
#./configure --prefix=/usr/local/freetype
#make && make install
4)安裝jpeg
jpeg下載地址:
http://www.ijg.org/files/
#tar zxf jpegsrc.v9.tar.gz
#cd jpeg-9/
#./configure --prefix=/usr/local/libjpeg
#make && make install
5)yum方式安裝fontconfig、gd、libxml2*、libjpeg-devel
# yum install fontconfig gd –y
# yum install libxml2* libjpeg-devel –y
2.正式安裝PHP
PHP下載地址:wget http://cn2.php.net/distributions/php-5.5.14.tar.gz
#tar zxf php-5.5.14.tar.gz
#cd php-5.5.14
#./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-gd --with-mysql=/usr/local/mysql/ --with-zlib-dir=/usr/local/zlib/ --with-png-dir=/usr/local/libpng/ --enable-gd-native-ttf --with-ttf --enable-gd-jis-conv --enable-mbstring --enable-sockets --enable-xml --disable-fileinfo
#make && make install
最後創建一個軟鏈接
ln -s /usr/local/php/bin/* /usr/local/bin/
四. 安裝rrdtool
1.準備工做
(1)yum方式安裝cairo-devel、pango、pango-devel、libpng-devel、libart_lgpl-devel、intltool、freetype-devel
#yum install cairo-devel pango pango-devel libpng-devel libart_lgpl-devel intltool freetype-devel –y
(2)yum方式安裝perl-ExtUtils-CBuilder、perlExtUtils-MakeMaker
# yum install perl-ExtUtils-CBuilder perlExtUtils-MakeMaker –y
2.正式安裝rrdtool
rrdtool下載地址:
http://download.chinaunix.net/down.php?id=35595&ResourceID=9078&site=1
#tar zxf rrdtool-1.4.5.tar.gz
#cd rrdtool-1.4.5
#./configure --prefix=/usr/local/rrdtool --disable-tcl
#make && make install
2.增長連接
ln -s /usr/local/rrdtool/bin/* /usr/local/bin/
五. 安裝net-snmp
(1)yum方式安裝net-snmp
# yum install net-snmp* -y
(2)配置net-snmp(主配置文件/etc/snmp/snmpd.conf)
1)找到:
修改爲:
其中的192.81.128.66就是你容許哪臺主機能夠訪問到你(即cacti服務器)
2)找到:
將註釋去掉,即:
3)找到:
將註釋去掉
(3)啓動net-snmp
service snmpd start
監控的端口是161,查看是否已打開
netstat -an |grep snmp
(4)驗證是否有數據
1)localhost
# snmpwalk -v 2c -c public localhost
2)本機ip測試
# snmpwalk -v 2c -c public 192.81.128.66
192.81.128.66就是被監控機的IP(這裏測試的是本機,因此就是本機IP)
六. 安裝cacti
cacti下載地址:
http://www.cacti.net/downloads/
1. 解壓cacti後,把cacti的目錄移到httpd裏存放網頁的htdocs目錄,並去掉版本號
#tar zxf cacti-0.8.7h.tar.gz
#mv cacti-0.8.7h /usr/local/apache/htdocs/cacti
2.增長cacti用戶,並修改目錄權限
cd /usr/local/apache/htdocs
useradd catic
chown -R cacti.cacti ./
3.root身份登錄mysql,新建數據並受權
mysql -uroot -p
> grant all on cacti.* to cacti@'localhost' identified by '123456';
> flush privileges;
4.導入數據庫
cd /usr/local/apache/htdocs/cacti
# /sur/local/mysql/bin/mysql -u cacti -p123456 cacti < cacti.sql
vim include /config.php
這裏有cacti鏈接使用的數據庫類型,用戶名,密碼信息,按照本身的須要進行配置
並增長:$url_path="/cacti/";
5.配置apache(配置文件/usr/local/apache/conf/httpd.conf)
找到:
修改爲:
檢測一下httpd的配置文件語法重啓httpd服務
/usr/local/apache/bin/apachectl configtest
yum install php-mysql -y
6.關閉防火牆和selinux,訪問cacti安裝界面
setenforce 0
service iptables stop
7.重啓apache服務
service httpd restart
七. 登錄cacti,進行cacti安裝
1.在瀏覽器輸入http://192.81.128.66/cacti,進入web界面
點擊Next
2.出現如1界面
3.出現以下界面,沒有錯誤,perfect
點擊Finish
從新訪問一下看看
這是就出現了cacti的登錄界面
4.第一次登錄,用戶名,密碼都是admin
7.這是成功登錄cacti
當出現上圖狀況時,cacti已安裝完畢,可正常使用。
但cacti默認是使用cmc.php方式去畫圖的,但聽說使用spine方式比較節省系統資源消耗,
8. 生成圖形文件
在界面中點擊graphs,圖形不顯示,使用以下命令生成圖形文件
/usr/local/php/bin/php /usr/local/apache/htdocs/cacti/poller.php
此時,圖片出現的可能都是亂碼,那個由於/usr/share/fonts/下沒有任何字符文件。
這個問題解決辦法很簡單,隨便拷一個.ttf的文件到/usr/share/fonts/下就能夠了
9. 加入crontab服務
*/5 * * * * env LANG=C /usr/local/bin/php /usr/local/apache/htdocs/cacti/poller.php
10.過一段時間後,就會有數據圖了
下載解壓後只取兩個文件
一、 PHP採集腳本:
cp percona-monitoring-plugins-1.1.6/cacti/scripts/ss_get_mysql_stats.php /var/www/html/cacti/scripts/
chmod +x ss_get_mysql_stats.php
在被監控端mysql服務器上受權
mysql> grant process,super on *.* to'cacti'@'%' identified by 'cacti';
注意:MySQL 5.1.23和更舊版本中採集InnoDB圖形須要SUPER權限。
在MySQL 5.1.24及更高版本中,所需的權限是PROCESS而不是SUPER。(官方)
[root@server2 mnt]# tar zxf cacti-0.8.8h.tar.gz
[root@server2 mnt]# yum install rrdtool php-mysql mysql-serverhttpd -y
(安裝必要環境)
[root@server2 mnt]# mv cacti-0.8.8h /var/www/html/
(將cacti 移動到http目錄下)
[root@server2 mnt]# cd /var/www/html/
[root@server2 html]# ln -s cacti-0.8.8h/ cacti
(創建軟連接,方便輸入查找)
[root@server2 html]# cd /mnt
[root@server2 mnt]# yum install php-snmp-5.3.3-26.el6.x86_64.rpm
[root@server2 mnt]#/etc/init.d/mysqld start
[root@server2 mnt]#mysql_secure_installation
(設置root 帳戶和密碼,其餘選項,一直輸入 y 繼續進行)
[root@server2 cacti]# cd/var/www/html/cacti/
[root@server2 cacti]#mysqladmin -padol create cacti
(建立cacti這個庫)
[root@server2 cacti]# mysql -padol cacti < cacti.sql
(將cacti.sql導入cacti 庫)
[root@server2 cacti]# mysql -padol -e "grant all on cacti.* totest@localhost identified by 'adol';"(建立用戶,給予cacti.*權限)
[root@server2 cacti]# cdinclude/
[root@server2 cacti]# vimconfig.php