cacti是一套開源的網路監控工具,可以監控主機的狀態和負載情況,
添加相應的模板後,可以用來監控apache伺服器和mysql伺服器的運行狀態,
我安裝這個主要是為了監控mysql伺服器的運行狀態的。
cacti的網站:http://www.cacti.net/
主機環境:CentOS 5.5 更新日期:20100717
mysql: mysql-5.0.77-4.el5_5.3
php: php-5.1.6-27.el5
apache: httpd-2.2.3-43.el5.centos
cacti安裝時會要求一些組件,比如snmp, php-xml,php-ldap(可選),
這些倒不用太擔心,因為安裝LAMP環境的時候多少也裝了一些,
即便沒有,請使用yum命令,我感覺centos的這個還是挺好的,
雖然軟體有時有些老了,但是還是可以用的。手動把snmp的相關程式裝下,
不然最後首次配置的時候會找不到一些snmpwalk,snmpget什麼的
[root@tigertall bin]# rpm -qa|grep snmp
php-snmp-5.1.6-27.el5
net-snmp-utils-5.3.2.2-9.el5_5.1
net-snmp-5.3.2.2-9.el5_5.1
net-snmp-devel-5.3.2.2-9.el5_5.1
net-snmp-libs-5.3.2.2-9.el5_5.1
[root@tigertall bin]#
如果以上組件有缺失,請使用yum自己安裝下。
使用yum安裝 cacti
[gaohu@tigertall ~]$ sudo yum install cacti
這個命令會自動安裝相關的組件。
1.php配置要求
[gaohu@tigertall ~]$ php -m
這個命令可以檢查php安裝了哪些模組。
要求php擴充支援中已經配置了mysql.so,centos yum預設環境下
httpd的conf檔案配置在 /etc/httpd/conf/httpd.conf
預設的附加元件(php,mysql)配置目錄 /etc/httpd/conf.d。
[root@tigertall conf.d]# ls
bugzilla.conf manual.conf php.conf
proxy_ajp.conf README ssl.conf
welcome.conf cacti.conf perl.conf
phpMyAdmin.conf python.conf
squid.conf webalizer.conf
[root@tigertall conf.d]#
可以看到,很多web相關的配置都在這裡。
php的基礎配置在 /etc/php.ini。
[root@tigertall conf.d]# cd /etc/php.d
[root@tigertall php.d]# ls
dbase.ini gd.ini mcrypt.ini mysql.ini
pdo_mysql.ini pgsql.ini xmlwriter.ini
dom.ini ldap.ini mhash.ini
ncurses.ini pdo_pgsql.ini snmp.ini xsl.ini
eaccelerator.ini mbstring.ini mysqli.ini
pdo.ini pdo_sqlite.ini xmlreader.ini
[root@tigertall php.d]#
php.d目錄下設定了一些php向外延展群組件的配置。
查看mysql.ini,啟用extension=mysql.so
查看snmp.in,啟用extension=snmp.so
如果要啟用匯入模板的功能,還要啟用檔案上傳,在/etc/php.ini中啟用
file_uloads=on;
注釋以下,如果沒有注釋
session.save_path = /tmp;
2.apache配置要求
在apache配置/etc/httpd/conf.d/php.conf中,
檢查一下語句是否啟用,一般情況下,
應該是已經預設啟用了的。
# PHP is an HTML-embedded scripting language which
# attempts to make it
# easy for developers to write dynamically
# generated webpages.
LoadModule php5_module modules/libphp5.so
#
# Cause the PHP interpreter to handle files
# with a .php extension.
AddHandler php5-script .php
AddType text/html .php
#
# Add index.php to the list of files that
# will be served as directory
# indexes.
DirectoryIndex index.php
3.mysql配置要求
請記得給root設定一個秘密,以保護自己安全,呵呵。
可以使用如下的命令來更改root的密碼:
mysqladmin --user=root password somepassword
mysqladmin --user=root --password reload
4.cacti安裝配置
1.使用如下命令來安裝cacti,這個會自動安裝需要的組件。
[root@tigertall php.d]# yum install cacti
2.建立mysql資料庫
[root@tigertall php.d]# mysqladmin -uroot -phandomse create cacti
3.導入預設的cacti資料庫
如果使用yum預設安裝,建立資料庫的指令碼
預設在/usr/share/doc/cacti-0.8.7f/cacti.sql
[root@tigertall php.d]# cd /usr/share/doc/cacti-0.8.7f/
執行建立資料庫的命令
[root@tigertall 0.8.7.f]# mysql -uroot -phandomse cacti < cacti.sql
4.建立cacti資料庫的使用者和密碼,
登入到資料庫
[root@tigertall 0.8.7.f]# mysql -u root -p 'pass'
使用者授權,請把使用者名稱,資料庫和密碼換成自己需要的設定。
mysql> GRANT ALL ON cacti.* TO cactiuser@localhost
--> IDENTIFIED BY 'password';
重新整理許可權
mysql> flush privileges;
5.編輯cacti配置,做資料連線設定
[root@tigertall include]# vi /usr/share/cacti/include/config.php
這裡有cacti串連使用的資料庫類型,使用者名稱,密碼資訊
/* make sure these values refect \*/
/* your actual database/host/user/password */
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "cactiuser";
$database_port = "3306";
/* Default session name - Session name must */
/* contain alpha characters */
#$cacti_session_name = "Cacti";
把上述配置按照自己的需要設定
6.目錄使用權限設定
[root@tigertall include]# cd /usr/share/cacti/
[root@tigertall cacti]# ll rra
lrwxrwxrwx 1 root root 18 Jul 17 15:07 rra -> /var/lib/cacti/rra
[root@tigertall cacti]# ll log
lrwxrwxrwx 1 root root 15 Jul 17 15:07 log -> /var/log/cacti/
從上述可以看到,rra實際上是var/lib/cacti/rra的一個軟連結,
log則是/var/log/cacti的一個軟連結。
更改上述目錄的許可權,按需要更改屬主,下面產生資料會用到這個使用者。
[root@tigertall cacti]# chown -R gaohu rra/ log/
7.配置自動作業時間
編輯crontab。
[root@tigertall log]# crontab -e
增加如下內容,
*/5 * * * * php /usr/share/cacti/poller.php > /dev/null 2>&1
注意:
這個地方不能按照官方文檔來,不能加上執行的使用者名稱,
crontab根本沒有執行使用者這個參數的,官方文檔是這樣的:
*/5 * * * * gaohu php /usr/share/cacti/poller.php > /dev/null 2>&1
按照這個設定,會報錯的:
07/17/2010 10:59:57 PM - POLLER: Poller[0] WARNING:
Cron is out of sync with the Poller Interval!
The Poller Interval is '300' seconds,
with a maximum of a '300' second Cron,
but 419 seconds have
passed since the last poll!
會警示說設定的是300秒,結果400多秒了還沒有執行過。
以上內容意思是,每隔五分鐘,執行下php指令碼,統計下資料。
一個由此引發的問題見最後。
8.登入伺服器
登入http://your-webserver/cacti
初始登入時,使用者名稱和密碼為admin,登入後,會要求立即切換密碼。
4.Spine安裝配置(可選)
spine是一個基於C語言的,非常快速的輪詢引擎。它是預設的cmd.php的可選替代。
如果決定使用它的話,
需要自己來顯式的安裝和配置。cacti本身並不包含該引擎。
安裝Spine的最簡單的方法就是使用rpm或者使用ports。
如果使用yum來進行安裝,需要添加rpmforge的軟體倉庫。
如果使用源碼,可以在cacti的主站下載源碼包。下載的地址為:
http://www.cacti.net/downloads/spine/cacti-spine-0.8.7g.tar.gz
1.從cacti網站下載spine源碼包
2.解壓到本地目錄,編譯安裝
安裝spine需要有net-snmp-devel、mysql、mysql-devel、openssl-devel支援,
請查看下是否已經安裝。
使用以下命令來編譯安裝:
tar xvzf cacti-spine-0.8.7g.tar.gz
cd cacti-spine-0.8.7g
./configure
make
make install
預設安裝在/usr/local/spine/目錄下。
3.複製一份spine的設定檔。
[root@tigertall etc]# cd /usr/local/spine/etc/
[root@tigertall etc]# cp spine.conf.dist spine.conf
編輯spine.conf檔案,設定Cacti資料的串連資訊。
DB_Host localhost # 主機地址
DB_Database cacti # 資料庫
DB_User gaohu # 資料庫使用者
DB_Pass pass # 資料庫連接密碼
DB_Port 3306 # 資料庫連接連接埠
DB_PreG 1 # 如果要配合0.8.7g之前的0.8.7的cacti工作,
# 則配置成為1。
# 因為我主機安裝時cacti 0.8.7e 所以設定成了1。
# 如果都是從g版本的源碼安裝,可以設定為0
4.設定Spine
a)以admin使用者登入到Cacti。
b)從目錄菜單中選擇設定"Settings",選擇"Paths"選項卡。
c)在"Spine Poller File Path"中輸入Spine可執行程式的完整路徑,
對我來說是/usr/local/spine/spine,儲存設定。
d)選擇"Poller"選項卡。
e)在"Poller Type"下拉框設定中,選擇"spine"。
完成這些設定後,Cacti將會每5分鐘執行一次Spine,來代替原來的cmd.php。
如果使用spine的過程中有任何問題,你可以隨時將"Poller Type"切換回"cmd.php"。
4.應用補丁(可選)安裝完成後,如果覺得需要,可以打相應的補丁,但是,不要把舊版本的補丁打到新的版本上。
大致的安裝過程就是這樣了。
5.Cacti的設定下一篇寫吧,呵呵 ^_^。
6.奇怪的問題^_^。1.安裝配置後沒有圖形
第一次使用的時候,需要手工執行下php /usr/share/cacti/poller.php,
等上幾分鐘,就可以顯示圖形了。
2.奇怪的許可權
在第3節的配置中,我們使用了gaohu作為cacti的使用者。
但是,使用yum安裝cacti時候,系統會自動建立cacti使用者。
按照cacti的要求,安第一次使用gaohu,
執行php /usr/share/cacti/poller.php的時候,
要使用對上述日誌目錄有寫入授權的使用者來操作。
但是執行這個命令的時候,很可能會報
[gaohu@tigertall ~]$ php /usr/share/cacti/poller.php
PHP Warning: include(/usr/share/cacti/include/config.php):
failed to open stream: Permission denied in
/usr/share/cacti/include/global.php on line 45
PHP Warning: include(): Failed
opening '/usr/share/cacti/include/config.php' for
inclusion (include_path='.:/usr/share/pear:/usr/share/php')
in /usr/share/cacti/include/global.php on line 45
FATAL: Cannot connect to MySQL server on 'localhost'.
Please make sure you have specified
a valid MySQL database name in 'include/config.php'
開始只看到了最後的那句。老是以為是mysql有問題,結果看了下連接埠,沒有問題
[gaohu@tigertall cacti]$ sudo netstat -apn|grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 3504/mysqld
又以為是資料庫的問題,可能是對cacti資料庫的許可權不夠,
於是給gaohu使用者增加了遠端全部許可權,還是不行。
後來看到上面的錯誤,才感覺到奇怪。
PHP Warning: include(/usr/share/cacti/include/config.php):
failed to open stream: Permission denied in
/usr/share/cacti/include/global.php on line 45
調用poller.php的時候,會調用/usr/share/cacti/include/global.php,
然後跟蹤了下路徑,發現了很奇怪的事情
[gaohu@tigertall cacti]$ ll include/global.php
-rw-r--r-- 1 root root 7410 May 20 09:07 include/global.php
[gaohu@tigertall cacti]$ ll /usr/share/cacti/include/config.php
lrwxrwxrwx 1 root root 17 Jul 17 15:07
/usr/share/cacti/include/config.php -> /etc/cacti/db.php
[gaohu@tigertall cacti]$ ll /etc/cacti/db.php
-rw-r----- 1 cacti apache 1915 Jul 17 17:03 /etc/cacti/db.php
這個db.php檔案,只有cacti使用者和apache使用者可讀寫,只有cacti使用者可寫,
gaohu使用者只是可以su的普通使用者,不屬於apache組,所以自然沒有許可權。導致報錯。
兩個解決辦法:1.把gaohu加到apache組,
2.改變/etc/catic/db.php 檔案的屬性。
我是用的第一個,或許第二個會更好一點吧。
其實還有第3個辦法,
就是把上面的檔案那些切換屬主的和編輯定時作業的都切換到cacti使用者,
但是因為預設安裝的cacti是沒有登入終端的,
所以沒有辦法切換到su - cacti中,這個對一般使用者不太好。根據自己的需要選擇下吧。
然後應該就可以工作了。