另外还可能遇到一些关于时间的问题,我们都可以在网上找到解决的办法
4).安装RRDTool(rrdtool-1.2.23.tar.gz)【rrdtool-1.4.5.tar.gz】
由于rrdtool-1.2.23需要一些库文件支持,故需先安装配置支持的环境,然后编译安装。直接运行以下bash脚本就可以完成安装:
注意:将cgilib-0.5.tar.gz、zlib-1.2.8.tar.gz、libpng-1.2.18.tar.gz、freetype- 2.1.9.tar.gz、libart_lgpl-2.3.17.tar.gz、rrdtool-1.2.23.tar.gz放到/root/rrdtool-1.2.2目录下,将脚本保存为/root/rrdtool-1.2.2/rrdtoolinstall.sh,并给执行权限chmod u+x /root/rrdtool-1.2.2/rrdtoolinstall.sh。
以下链接是我重新打好的一个rrdtool-1.2.23的安装包,里面包括了所有用到的库文件和安装脚本,下载解压后执行脚本shrrdinstall.sh即可以完成RRDTool的安装。
#!/bin/sh
BUILD_DIR=/root/rrdtool-1.2.11
INSTALL_DIR=/usr/local/rrdtool
cd $BUILD_DIR
tar zxf cgilib-0.5.tar.gz
cd cgilib-0.5
make CC=gcc CFLAGS="-O3 -fPIC -I."
mkdir -p $BUILD_DIR/lb/include
cp *.h $BUILD_DIR/lb/include
mkdir -p $BUILD_DIR/lb/lib
cp libcgi* $BUILD_DIR/lb/lib
cd $BUILD_DIR
tar zxf zlib-1.2.2.tar.gz
cd zlib-1.2.2
env CFLAGS="-O3 -fPIC" ./configure --prefix=$BUILD_DIR/lb
make
make install
cd $BUILD_DIR
tar zxvf libpng-1.2.8-config.tar.gz
cd libpng-1.2.8-config
env CPPFLAGS="-I$BUILD_DIR/lb/include" LDFLAGS="-L$BUILD_DIR/lb/lib" CFLAGS="-O3 -fPIC" /
./configure --disable-shared --prefix=$BUILD_DIR/lb
make
make install
cd $BUILD_DIR
tar zxvf freetype-2.1.9.tar.gz
cd freetype-2.1.9
env CPPFLAGS="-I$BUILD_DIR/lb/include" LDFLAGS="-L$BUILD_DIR/lb/lib" CFLAGS="-O3 -fPIC" /
./configure --disable-shared --prefix=$BUILD_DIR/lb
make
make install
cd $BUILD_DIR
tar zxvf libart_lgpl-2.3.17.tar.gz
cd libart_lgpl-2.3.17
env CFLAGS="-O3 -fPIC" ./configure --disable-shared --prefix=$BUILD_DIR/lb
make
make install
IR=-I$BUILD_DIR/lb/include
CPPFLAGS="$IR $IR/libart-2.0 $IR/freetype2 $IR/libpng"
LDFLAGS="-L$BUILD_DIR/lb/lib"
CFLAGS=-O3
export CPPFLAGS LDFLAGS CFLAGS
cd $BUILD_DIR
tar zxf rrdtool-1.2.11.tar.gz
cd rrdtool-1.2.11
./configure --prefix=$INSTALL_DIR --disable-python --disable-tcl && make && make install
# ln -s /usr/local/rrdtool/bin/* /usr/local/bin/ //完成后建立符号连接
# rrdtool -v //查看rrdtool版本,测试rrdtool是否安装成功
错误:vim~/.bashrc
PKG_CONFIG_PATH=/usr/local/libxml2/lib/pkgconfig:/usr/local/lib/pkgconfig
5).安装net-snmp(net-snmp-5.6.tar.gz)
# tar -zxvf net-snmp-5.6.tar.gz
# cd net-snmp-5.6
# ./configure --prefix=/usr/local/net-snmp --enable-developer
# make
# make install
# ln -s /usr/local/net-snmp/bin/* /usr/local/bin/
# cp EXAMPLE.conf /usr/local/net-snmp/share/snmp/snmpd.conf
# vi /usr/local/net-snmp/share/snmp/snmpd.conf //修改snmpd.conf(修改COMMUNITY、允许抓取snmp数据的主机、抓取数据范围等)。
以下是我的snmpd.conf配置##########################################
# sec.name source community
com2sec local localhost public
##########################################
# /usr/local/net-snmp/sbin/snmpd //启动SNMP服务
注意:有的写得是
/usr/local/net-snmp/sbin/snmpd –c /usr/local/net-snmp/share/snmp/snmpd.conf &
# vi /etc/rc.d/rc.local //在rc.local上加入一行/usr/local/net-snmp/sbin/snmpd,系统启动时启动SNMP服务。
注意:snmpwalk -v 2c -c public localhost system
非必须:
cacti-spine是一个用C语言开发的、用来替换默认的cmd.php的、能够快速获取数据的引擎。
cacti-spine要用到mysql的头文件,因此事先需要安装mysql-devel包,如果是非rpm安装,则需要在configure时使用--with-mysql选项指定mysql的安装位置。
# tar zxvf cacti-spine-0.8.7e.tar.gz
# cd cacti-spine-0.8.7e
# aclocal
# libtoolize --force
# autoheader
# autoconf
# automake
# ./configure --prefix=/usr/local/spine --with-mysql=/usr/local/mysql –with-snmp=/usr/local/net-snmp
# make
# make install
安装后,要对配置文件进行修改
cp /usr/local/spine/etc/spine.conf.dist /usr/local/spine/etc/spine.conf 建立spine的配置文件
vim /usr/local/spine/etc/spine.conf【检查数据库名、用户名等】
DB_Host localhost
DB_Database cacti
DB_User cacti
DB_Pass cacti
DB_Port 3306
验证spine是否正常
/usr/local/spine/bin/spine
显示结果:
SPINE: Using spine config file [../etc/spine.conf]
SPINE: Version 0.8.7g starting
SPINE: Time: 2.2117 s, Threads: 1, Hosts: 3
=============================================
PS:
假如在安装的过程中找不到库文件(configure: error:Not found NET-SNMP library),那么我们可以链接动态库:
编译器默认搜索的路径是:/lib和/usr/lib
我们编译时自己指定路径:
CPPFLAGS="-l/usr/local/net-snmp"./configure --prefix=/usr/local/spine --with-mysql=/usr/local/mysql
这之后如果还有报错就应该具体问题具体分析,不过最主要的问题还是编译文件的路径配置问题~
6).安装cacti(cacti-0.8.7g.tar.gz)
# tar -zxvf cacti-0.8.7g.tar.gz
# mv –r cacti-0.8.7g /var/www/html/cacti
# vi /usr/local/apache/htdocs/cacti/include/config.php
config.php文件中需要修改的内容$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "cacti";
$database_port = "3306";
# vi /usr/local/apache/htdocs /include/global.php
global.php文件中修改的内容$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "cacti";
$database_port = "3306"; 我用http://serverip来访问cacti所以不用修改下面行
如果你用http://serverip/cacti/访问cacti应将下面行修改为:$config['url_path'] = '/cacti/';
global.php文件中的内容$config['url_path'] = '/';
# useradd cacti //添加cacti用户
# chown -R cacti /var/www/html/cacti/rra //将rra目录的所有权给cacti用户
# chgrp -R cacti /var/www/html/cacti //修改cacti目录所属组
# su cacti //为cacti用户添加cron任务
# crontab -e //编辑定时任务
*/5 * * * * /usr/local/bin/php /var/www/html/cacti/poller.php > /dev/null 2>&1
# /usr/local/bin/php /usr/local/apache/htdocs /cacti/poller.php
正确输出类似于下面内容OK u:0.01 s:0.02 r:21.42
OK u:0.01 s:0.02 r:21.42
OK u:0.01 s:0.02 r:21.42
OK u:0.01 s:0.02 r:21.42
10/21/2008 01:48:41 PM - SYSTEM STATS: Time:30.5831 Method:cmd.php Processes:3 Threads:N/A Hosts:19 HostsPerProcess:7 DataSources:401 RRDsProcessed:220
# mysql -uroot -p //登录mysql配置cacti数据库
mysql> create database cacti;
mysql> grant all privileges on cacti.* to cacti@localhost identified by "cacti";
mysql>exit
# mysql -uroot -p cacti < /usr/local/apache/htdocs /cacti/cacti.sql //导入cacti数据库初始化脚本
7).完成cacti安装
在游览器输入 http://serverip/cacti
默认用户名:admin密码:admin
设置cacti用到的命令路径snmpwalk Binary Path /usr/local/bin/snmpwalk
snmpget Binary Path /usr/local/bin/snmpget
snmpbulkwalk Binary Path /usr/local/bin/snmpbulkwalk
snmpgetnext Binary Path /usr/local/bin/snmpgetnext
RRDTool Binary Path /usr/local/bin/rrdtool
RRDTool Default Font Path
PHP Binary Path /usr/local/bin/php
Cacti Log File Path /usr/local/apache/htdocs /cacti/log/cacti.log
Spine Poller File Path
8).安装插件
要安装别的插件前,先要安装cacti的一个patch--Plugin Architecture,才能支持插件
PA和cacti版本的关系
PA 1.0 = cacti 0.8.6i
PA 1.1 = cacti 0.8.6i et 0.8.6j
PA 2.0 = cacti 0.8.7b
PA 2.2 = cacti 0.8.7c
PA 2.4 = cacti 0.8.7d
PA 2.5 = cacti 0.8.7e
PA 2.8 = cacti 0.8.7g
8).i).安装cacti-plugin-arch.zip
# unzip cacti-plugin-arch.zip
# cp -R cacti-plugin-arch/* /usr/local/apache/htdocs/cacti/ //复制插件需要的文件到cacti
# cd /usr/local/apache/htdocs/cacti/
# mysql -ucacti -p cacti < pa.sql //导入插件的脚本
# patch -p1 -N < cacti-plugin-0.8.7g-PA-v2.8.diff
注意:在此需要修改config.php中的内容才能正确访问
将$url_path = "/";改成$url_path = "/cacti/";
先开插件管理权限
进入"用户管理"->点admin->区域权限->Plugin Management
安装settings,thold,monitor插件
将monitor、settings、thold解压到/var/www/html/cacti/plugins目录
修改/var/www/html/cacti/include/global.php,将插件名字添加到数组
# vi /var/www/html/cacti/include/global.php
global.php文件中的内容$plugins = array();
//$plugins[] = 'thold';
$plugins[] = 'thold';
$plugins[] = 'monitor';
$plugins[] = 'settings';
使用thold插件
注:在写本文时使用的cacti 0.8.7e最新版,比以往版本有些变化,目前插件官司网上提供的monitor0.8.2和setting0.5并不支持cacti 0.8.7e,在此就不多介绍monitor和setting的使用。
1>打开“Console->Settings->Alerting/Thold”,可以调整Thold的各项配置。例如:“Dead Host Notifications Email”处可填写设备当机时发送警告信息到哪个邮箱;勾选“Send alerts as text”项,可以设置只发送文本格式的邮件。
2>打开“Templates->Threshold Templates”,可以添加、取出需要关联到预警系统的模板,例如:可以添加和“Interface-Traffic”模板的关联,选择 “traffic_in”、“traffic_out”数据项,分别设置警告阈值“High Threshold”(如200000000比特/秒);可以添加和“Unix-Disk Space”模板的关联……。
3>打开“Create->New Graphs”,选择需要提供预警的设备,单击右侧上方的“Auto-create thresholds”创建预警项目。
4>打开“Management->Thresholds”,可以管理已经创建的预警项目。
附:按照官方文档安装了plugin architecture和settings、thold等plugins但是web页面里仍没什么变化,后来访问了下plugins.php,系统报没有权限,然后直接点”login”直接就进系统了,由此可见不是没有权限,而应该是没有特定的权限,后来进入用户设置界面”User Management”将所用的用户点开,发现有个”plugin management”的权限没选中,选中,再Save,再回来刷页面,果然,左边有了新的一项菜单:“Plugin Management”,点进去可以进行plugin的管理,搞定。
9).安装模板
本文只介绍安装mysql的模板(teMySQLcacti-20060810.tar.gz),其他的模板用户可以按此方式安装
按照官方文档中的3步
1. Put mysql_stats.php and dumpMemcachedStats.php in cacti/scripts/
本文只拷了mysql_stats
# cp teMySQLcacti/mysql_stats.php /var/www/html/cacti/scripts
2. Either ensure your cacti poller is cron'd every 1 minute, or run the included BASH shell script to create a 300/600 step/heartbeat version of the XML file.
但其实tar本来就有cacti_host_template_temysql_host-step300-heartbeat600.xml
上面的步骤很多余
3. Import the .XML host using the cacti webinterface. Note,
上面3步安装好后,开始再按照官方文档产生图
GRAPH CREATION==============
0. Make sure you installed mysql_stats.php and dumpMemcachedStats.php.
1. Go to Management/Devices.
2. Add a new device.
3. Description can be whatever you want.
4. Hostname should resolve to IP of database machine.
5. Host template is teMySQL or memcached Host.
6. Now choose the "Create Graphs" link.
7. Highlight all graphs for the host (assuming you want them all).
8. Choose "Create"
9. A page will come up with several Password/Username pairs, fill them
all in with the cactipasswd/cactiuser you chose above. Hint: If you're
using Firefox, the second host you do this for you can just press down-
arrow twice, then tab, and the value will be filled in automatically
by the browser. The first time, I suggest typing in the username, copying
it, then doing a "paste-tab-tab-paste-tab-tab..." key combo until they're
all filled in, then repeat for the password. Painful, but doable.
需要在被检测的mysql库里添加检测机器的权限(仅需要process权限):
grant process on *.* to username@192.168.1.1 identified by ‘password’;
flush privileges;
六、常见问题
1、为什么图像不能显示?
先确定你的IP地址、snmp comunite、snmp version等信息配置没有错误。
如果是在linux下安装cacti的话,可以按以下步骤检测:
1.1、cacti的data sources和Graph Management均有debug。看是否有错误,比如rrd文件找不到等。
1.2、data sources里看rrd文件的名称,然后到/cacti/rra目录中看是否有该文件存在。
1.3、如果有rrd文件存在,则可以使用
# rrdtool fetch yourRRDfile.rrd AVERAGE
看该文件的采集的数据,如果都是“nan”,那就是没有取到数据。
1.4、有可能是snmpget、snmpwalk和rrdtool的路径错误。
1.5、排除错误后,需要重新建立该监测点(graph)。
提示:每一个图像的文件均会保存为rra目录里的一个rrd为后缀的文件(可以在“Data Sources”中看到)。“Data Sources”和“Graph Management”中均可以进行debug,可以从debug中得出错误信息。
2、为什么rra目录下什么都没有?
2.1、请查看该目录的权限。该目录的权限应为cactiuser可以读写。
2.2、如果目录的权限没有问题,那么可能是snmp的设置有问题,请手工测试一下:
# snmpwalk -v 2c -c public yourIP if
如果有数据返回,则snmp的数据没有问题。如果出现“Timeout: No Response from ...”之类的错误信息则是snmp设置的问题。
2.3、也可能是snmpwalk、snmpget和rrdtool的路径没有设置好在Settings-》Paths中检查设置是否正确。
修改后请重建该监测点!否则不生效。
3、可以取到本机(linux)的数据,但却不能取到远程主机的数据?
Cacti有很多模板,有的是用SNMP进行数据采集,有的是用shell脚本进行采集。如果没有特别的原因建议都使用SNMP的。
Associated Graph Templates
前面带“ucd/net”的就是能使用ucd-snmp和net-snmp的模板。如:ucd/net - CPU Usage
Associated Data Queries
前面带SNMP的就是能使用snmp的。如:SNMP - Interface Statistics
当然,你还可以从www.cacti.net上找到新的模板或添加自己的模板。
4、怎么备份Cacti和它的数据呀?
只需要备份rra目录和数据库就可以了。你喜欢也可以将log目录一起备份。
如果你自己添加了一些插件的话记得也拷过去。
5、新建的device的Data Query里面的状态总是“ Success [0 Items, 0 Rows]”?
请先确认你的snmpd.conf中的权限设置,是否允许cacti取这些OID的数据。可以使用snmpwalk命令来进行测试,比如:
#snmpwalk -c community -v 2c hostIP if
如果你的snmpd.conf设置没有问题,那可能是下面这种情况:
旧版本的snmpwalk(比如redhat默认安装的5.0.6)缺少一些参数,比如-O中的"U"参数.(可以用snmpwalk --help来查看是否有该参数)。
而cacti-0.86g或以上版本需要这些参数,解决办法是安装一个新的net-snmp包(如:net-snmp5.2.1),从而得到一个新snmpwalk的版本。
6、有图但图例文字不能显示
添加RRDTool默认字体路径
如下图中将路径设置成:/usr/local/rrdtool/share/rrdtool/fonts/DejaVuSansMono-Roman.ttf