cacti是一套基於PHP,Mysql,SNMP及rrdtools開發的網絡流量監測圖形分析工具
製圖等各方面都很優秀,也支持各種模版的添加,功能很強大,現在下面介紹一下cacti的安裝與使用
cacti的主程序下載
Cacti官方網站:www.cacti.net/
cacti-0.8.7e-cn-utf8.tar.gz (中文版)
cacti-0.8.7g.tar.gz(英文版)
cacti安裝需要的一些軟件包
rrdtool-1.2.23.tar.gz
net-snmp-5.6.tar.gz
cacti-cactid-0.8.6k.tar.gz
cacti-spine-0.8.7g.tar.gz
(版本大家可以自行選擇,不過高版本與低版本都會因自身服務環境不同而出現各種問題,依問題提示解決)
cacti的安裝需要有可以提供網站服務的應用,比如apache器,nginx等
因爲cacti是以php語言編寫的,nginx+php(fast-cgi)+mysql的功能很強大,所以筆者以這個環境下搭建cacti
nginx+php(fast-cgi)+mysql的安裝配置請參考另一篇文章
下面安裝一些基礎軟件包
安裝Fontconfig
tar -zxvf fontconfig-2.4.2.tar.gz
cd fontconfig-2.4.2
./configure --with-freetype-config=/usr/local/freetype
make && make install
安裝GD庫及相關插件
tar -zxvf gd-2.0.34.tar.gz
cd gd-2.0.34
./configure --prefix=/usr/local/libgd --with-png --with-freetype=/usr/local/freetype --with-jpeg=/usr/local/libjpeg
編譯時顯示以下信息:
** Configuration summary for gd 2.0.34:
Support for PNG library: yes
Support for JPEG library: yes
Support for Freetype 2.x library: yes
Support for Fontconfig library: yes
Support for Xpm library: no
Support for pthreads: yes
(按照上面的提示預安裝一些基礎軟件包,比如png的有libpng-1.2.16.tar.tar等,zlib-1.2.3.tar.gz,freetype-2.3.4 .tar.gz,jpegsrc-1.v6b.tar.gz)
這些軟件包都要以在http://oss.oetiker.ch/rrdtool/pub/libs/ 庫文件中找到
make && make install
編輯/etc/ld.so.conf,添加以下幾行到此文件中。
/usr/local/zlib/lib
/usr/local/freetype/lib
/usr/local/libjpeg/lib
/usr/local/libgd/lib
並執行ldconfig命令,使用動態裝入器裝載找到共享庫
編譯安裝rrdtool及安裝配置snmp
安裝如下幾個rpm包
yum install cairo-devel libxml2-devel pango-devel pango libpng-devel freetype freetype-devel libart_lgpl-devel
安裝rrdtool
tar -zxvf rrdtool-1.2.23.tar.gz
./configure --prefix=/usr/local/rrdtool
make && make install
安裝SNMP
tar -zxvf net-snmp-5.6.tar.gz
./configure --prefix=/usr/local/snmp --enable-developer
然後一直回車
make # make install # ln -s /usr/local/snmp/bin/* /usr/local/bin/
創建snmpd的配置文件,默認情況下它是不存在的
vi /usr/local/snmp/share/snmp/snmpd.conf
寫入以下內容
# sec.name source community
com2sec notConfigUser 127.0.0.1 public
com2sec notConfigUser 192.168.20.185 public ##監聽的服務器IP與community號
# Second, map the security name into a group name:
# groupName securityModel securityName
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser
# Third, create a view for us to let the group have rights to:
# Make at least snmpwalk -v 1 localhost -c public system fast again.
# name incl/excl subtree mask(optional)
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.2
view systemview included .1.3.6.1.2.1.25.1.1
view all included .1
# Finally, grant the group read-only access to the systemview view.
# group context sec.model sec.level prefix read write notif
#access notConfigGroup "" any noauth exact mib2 none none
access notConfigGroup "" any noauth exact all none none
## sec.name source community
#com2sec local localhost COMMUNITY
#com2sec mynetwork NETWORK/24 COMMUNITY
com2sec notConfigUser default public
com2sec *.*.*.0 192.168.20.185/24 public
## group.name sec.model sec.name
group MyRWGroup any local
group MyROGroup any mynetwork
group notConfigUser any zcom
#group MyRWGroup any otherv3user
## incl/excl subtree mask
view all included .1 80
view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc
## context sec.model sec.level prefix read write notif
access MyROGroup "" any noauth 0 all none none
access MyRWGroup "" any noauth 0 all all al
(修改需要監聽的服務器IP)
經過配置後,現在可以啓動snmpd
/usr/local/snmp/sbin/snmpd
關閉,則可以直接kill這個進程
killall -9 snmpd
加入到開機自啓動
echo "/usr/local/snmp/sbin/snmpd" >> /etc/rc.d/rc.local
安裝cacti和Cactid
tar -zxvf cacti-0.8.7g.tar.gz
mv cacti-cacti-0.8.7g /data/web/cacti
vi /data/web/cacti/include/config.php
修改內容
database_type = "mysql";
$database_default = "cacti";
$database_hostname = "127.0.0.1";
$database_username = "cacti";
$database_password = "cacti";
添加cacti用戶,將rra目錄的所有權給cacti用戶
groupadd cacti
useradd cacti -g cacti
chown -R cacti.cacti /data/web/cacti/rra
爲cacti用戶添加cron任務
su – cacti (一定要在cacti用戶下)
crontab –e
*/5 * * * * /usr/local/php/bin/php /data/web/cacti/poller.php > /dev/null 2>&1
每5分鐘執行一次
首次執行poller.php時請使用cacti用戶,否則生成的rrd文件cacti將沒有寫入權限
在cacti用戶模式下執行
/usr/local/php/bin/php /data/web/cacti/poller.php
安裝Cactid
確認安裝了
net-snmp-devel(需要編譯安裝net-snmp時添加--enable-developer選項)
mysql
mysql-devel (mysql源文件編譯安裝後默認支持)
openssl-devel (Redhat默認安裝)
tar -zxvf cacti-cactid-0.8.6k.tar.gz
cd cacti-cactid-0.8.6k
./configure --with-mysql=/usr/local/mysql --with-snmp=/usr/local/snmp
make && make install
vi /usr/local/cactid/etc/cactid.conf //修改cactid配置文件
DB_Host 127.0.0.1
DB_Database cacti
DB_User cacti
DB_Pass cacti
安裝安裝cacti-spine cacti
本來不打算安裝spine的,就使用cmd.php來完成數據採集,可是後來發現cmd.php採集存在很大的延遲,執行效率太低了。兩廂比較了一下,從添加device好到設備up,spine只需要不到一分鐘,而cmd等的時間較長,超過10分鐘。
# tar -zxvf cacti-spine-0.8.7e.tar.gz
# cd cacti-spine-0.8.7e
# ./configure --with-mysql=/usr/local/mysql/
# make && make install
vi /usr/local/spine/etc/spine.conf
DB_Host 127.0.0.1
DB_Database cacti
DB_User cacti
DB_Pass cacti
mysql設置
進入mysql
/usr/local/mysql/bin/mysql -u root -p -S /var/lib/mysql/mysql.sock
GRANT ALL PRIVILEGES ON cacti.* TO 'cacti'@'192.168.20.185' IDENTIFIED BY 'cacti';
導入cacti的數據源
cd /data/web/cacti
/usr/local/mysql/bin/mysql -u root -p -S /var/lib/mysql/mysql.sock cacti < cacti.sql
安裝完成
從瀏覽器登陸:http://192.168.20.185/ #在nginx或者其它網站服務應用上指定catic的目錄,開啓服務就可以訪問了
默認賬號與密碼均是admin
cacti的基礎設置
Console>Settings>general
設置cacti用到的命令路徑
Console>Settings>patch
snmpwalk Binary Path /usr/local/ bin/snmpwalk
snmpget Binary Path /usr/local/ bin/snmpget
RRDTool Binary Path /usr/local/ bin/rrdtool
PHP Binary Path /usr/local/bin/php
Cacti Log File Path /data/logs/cacti.log
Spine輪詢器路徑: /usr/local/spine/bin/spine
RRDTool應用程序版本 :RRDTool 1.2.*
Console>Settings>Poller
選擇spine
添加設備
devecs>>add>>
選擇相應的監聽模版
以上就納入了nginx的狀態,CPU的使用率,load的負載,內存的使用跟接口流量
記得save保存一下
選擇頁面右上角的添加生成圖片--create graphs for this host
之後選擇相應的監聽接口就行了,保存之後你就可以在graphs managerment中找到生成的相應圖片
有時候圖片不能正常顯示是因爲你的設備剛添加進去,每5分種執行一次計算的時候你的cacti還沒有在你的rra下生成rrd
因爲我的時間設置的不同步了,所以提示錯誤,可以忽略
到此,完整的cacti安裝及初步使用步驟就結束了
如果中間安裝的時候出現問題,根據提示來判斷,可能是軟件包的版本不對應,換個高一點的版本,或者你的動態庫缺少某個軟件包導致
某些知識摘取其他網上資源
附上一些遇到的問題
/usr/local/php/bin/php /data/web/cacti/poller.php
提示以下錯誤時的解決方法
/usr/local/php/bin/php: /usr/local/lib/libpng12.so.0: no version information available (required by /usr/local/php/bin/php)
解決方法就是
cd /usr/local/lib
mv libpng12.so.0 libpng12.so.0.backup
ln -sf /usr/lib/libpng12.so.0 libpng12.so.0
這就是libpng默認安裝的時候會出現的一些問題