close

CentOS 6.5 安裝 Cacti 0.8.8b 流量監控主機

 
同事執行專案的時候,需要監測客戶的流量以及硬體使用狀況,因此跟著建立了一台來監控辦公室內的設備,
事先提醒的是,所有被監控的Server,需安裝SNMP服務,並在服務內容裡選取安全性,設定public唯讀,
安裝完後,請記得要先重開機,以下的設定檔才會正常出現,遠端重開機指令 shutdown /r /t 1
(如下)
 
 
 

CentOS 6.5 minimal 進行安裝

SETP.1 安裝 cacti 會使用到的套件
# yum install php* mysql* rrdtool* net-snmp*
 
freetype-devel libpng-devel libart_lgpl-devel httpd*
 
(因段落需要 請從net-snmp* 後面接上freetype)


SETP.2 安裝 rpmforge-release 套件庫、cacti

從rpmforge 下載cacti,因為在yum官方套件並沒有 cacti 
詳細可參考 CentOS 6.5 安裝 RPMforge 非官方套件庫 

shell# yum --enablerepo=rpmforge install cacti

SETP.3 Mysql設定

1. 啟動mysqld
shell# service mysqld start
shell# chkconfig mysqld on

2. 設定mysql root密碼
shell# mysqladmin -u root password 'password'

3. 建立 cacti 資料庫
mysqladmin -u root -p create cacti

4. 匯入 cacti 資料,安裝預設匯入檔
shell# mysql -u root -p -A cacti < /var/www/cacti/cacti.sql

5. 建立 cacti 資料庫的使用者

#進入mysql 
shell# mysql -u root -p 

#建立使用者 
mysql> grant all on cacti.* to cactiuser@localhost identified by "password";

#權限生效
mysql> flush privileges; 

6. 修改php連結mysql的設定檔
shell# vim /var/www/cacti/include/config.php
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "password";
$database_port = "3306";
$database_ssl = false;




SETP.4 Apache設定

1. 啟動 apache
shell# service httpd start
shell# chkconfig httpd on

2. cacti.conf 設定檔
shell# vim /etc/httpd/conf.d/cacti.conf

#設定可連apache權限,自行斟酌資安的部分
#deny from all
allow from all
3. reload設定檔
shell# service httpd reload


SETP.5 iptables 設定
shell# vim /etc/sysconfig/iptables

#加入以下 
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
-A INPUT -m state –state NEW -m udp -p udp –dport 161 -j ACCEPT

shell# service iptables restart


SETP.6 snmp 設定 - Server端
shell# vim /etc/snmp/snmpd.conf

#加入以下紅色字 
com2sec notConfigUser         default            public 
group     notConfigGroup        v1           notConfigUser
group     notConfigGroup        v2c         notConfigUser

view   all                included    .1         80
access  notConfigGroup ""      any       noauth    prefix  all  all all 


Note: public 代表與client端community的資訊,須符合。


SETP.7 cacti 排程權限,預設5分鐘執行一次,如果權限設定錯誤會無法畫出圖
shell# /etc/cron.d/cacti
*/5 * * * *     cacti   php /var/www/cacti/poller.php &>/dev/null

可以看到是使用 cacti 執行poller.php,但預設poller.php的權限是root,將cacti 權限加入
shell# chown cacti.cacti /var/www/cacti/poller.php
 
SETP.8 目錄及檔案權限
權限是最容易造成無法正確畫出圖,以及數據產生nan的問題。
1. crod排程中的cacti使用者一定要有權限可以寫入 rra、log、rrd。
2. 在/etc/cron.d/cacti 權限需要為root。
 
STEP.9 更改時區
 
vim /etc/php.ini
 
擷取  

SETP.10 登入cacti

http://Server/cacti

登入請使用New install,並會確認目前所有設定檔的位置Next

預設帳號密碼: admin / admin,第一次登入會強制更換密碼
 
 
如果安裝後,有改變位置的話,請記得去設定檔進行修改,
此例為將cacti資料夾搬至/volume底下
 
vim /etc/httpd/conf/httpd.conf
 
修改
 

DocumentRoot "/volume"

<Directory "/volume">

 

/etc/cron.d/cacti

改為

*/5 * * * *     cacti   php /volume/cacti/poller.php &>/dev/null

 

排程:

vi /etc/passwd

修改cacti的執行位置,指到新搬遷的路徑後,重啟crond服務

 

 

權限擁有者改為:

cacti/log

cacti/rra

改為cacti

 
debug測試&檢測:
1. 可以切到cacti 去執行 /usr/bin/php poller.php,大多是權限錯誤造成的問題。
2. cat /var/log/cron,檢查排程是否有正常執行 

/var/log/cron

1. (CRON) ERROR chdir failed (/var/www/cacti): No such file or directory
Ans: check /etc/passwd , cacti home directory is ok , and restart crond.

/var/log/http/error.log
1. [Tue Mar 25 02:38:31 2014] [error] [client 192.168.121.99] File does not exist: /var/www/html/cacti
Ans: please check "cacti.conf" & "httpd.conf" directory , default cacti install directory at "/var/www/cacti"

2. http 403 : You don't have permission to access /cacti on this server.
Ans: check "cacti.conf" permmission config , deny and allow.

3. http 404 : Cannot connect to MySQL ………name in 'include/config.php'
Ans: mysql database connect error , check "/var/www/cacti/include/config.php" login is ok.

4. http 404 : The page cannot be found
Ans: check database table is ok , "mysql -u root -p -A cacti < /var/www/cacti/cacti.sql"

5. date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function.
Ans: setting /etc/php.ini , date.timezone = "Asia/Taipei"

6. SYSTEM STATS: Time:17.7057 Method:cmd.php Processes:1 Threads:N/A Hosts:3 HostsPerProcess:3 DataSources:3 RRDsProcessed:2
1 .Ans: check complete installation "php*"
 
2. 这个是由于poller.php执行时间超长导致的,一般情况下,根据CRON里面的设置,是300s执行一次poller,但如果你一台cacti上主动去取值的设备太多,可能导致在300s内无法完全更新,在下一次更新的时候,polloer.php会判断当前是否有Poller在执行,于是就有了上面的log。。。
 
Ans:執行php poller.php  跑出300秒過長時,請去修改

/etc/cron.d/cacti

改為

*/1 * * * *     cacti   php /volume/cacti/poller.php &>/dev/null

再執行 php poller.php 幾次後,去網頁上看圖表是否有正常跑出。

 
 

SNMP Error

 1.確認cacti的主機能ping被監控的主機。
2.若能ping通,確認被監控的煮雞是否有裝SNMPD服務
ps -ef | grep snmp
or service snmpd restart
3. 到監控server 上,root登入
snmpwalk -c public -v 2c 192.168.100.64  -->此ip為被監控的主機ip
 
有圖無數據?
進入/cacti/rra/,選定rrd檔來讀取(下面指令),看內容是-nan  or 有值但很小 所以圖變動太小看不出來
rrdtool fetch vs10_hdd_used_20.rrd AVERAGE
 



參考資料:
http://blog.pmail.idv.tw/?p=8081
cacti官網 
cacti中文研究站
http://shazikai.blogspot.tw/2014/03/centos-65-cacti-088b.html
arrow
arrow
    全站熱搜

    chengyu0701988 發表在 痞客邦 留言(0) 人氣()