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默认安装的时候会出现的一些问题