接了一个在Windows下安装cacti的活儿,呵呵,刚好可以练练。
知之为知之,不知百度之。经过搜索,顺利的把cacti装起来了。
准备工作
- Windows 2000 / 2003
- appserv-win32-2.5.9.zip
天空软件、华军有下 - net-snmp-5.4.0-1.win32.exe
http://sourceforge.net/project/downloading.php?group_id=12694&use_mirror=nchc&filename=net-snmp-5.4.0-1.win32.exe&30426034 - cacti-0.8.7b.zip
http://www.cacti.net/downloads - rrdtool-1.2.15-cygwin-1.5.20.zip
http://www.cacti.net/downloads/rrdtool/win32/
安装软件包
1.appserv-win32-2.5.9
默认安装,安装在了 C:/AppServ。
装好以后,可以访问 http://localhost、http://localhost/phpinfo.php 检验安装情况。
2.net-snmp-5.4.0-1.win32.exe
默认是安装在C:/usr下的,这里需要安装在 C:/net-snmp。选择安装组件时,不需要安装net-snmp trap service服务和perl支持。
3.cacti-0.8.7b.zip
解压在 C:/AppServ/www/cacti
4.rrdtool-1.2.15-cygwin-1.5.20.zip
解压在 C:/rrdtool
更改设置参数
1.设置环境变量对PHP的支持
“开始”-“控制面板”-“系统”-“高级”-“环境变量”。
- 在“系统变量”选项卡里点“添加”,在弹出的窗口中变量名输入MIBDIRS,变量值输入
“D:/net-snmp/share/snmp/mibs” - 找到“path”变量,点“编辑”,在变量值最后加入PHP的搜索路径,这里是
“; C:/AppServ/php5; C:/AppServ/php5/ext”
2.修改PHP配置文件
修改c:/winnt/php.ini支持SNMP。去掉 extension=php_snmp.dll 前面的注释
修改c:/winnt/php.ini的session保存位置,否则经常出现“Warning: session_start()”一类的错误。将
session.save_path = "C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/2"
改为
session.save_path = "C:/windows/Temp"
3.创建cacti的数据库
a) 进入 http://localhost/phpMyAdmin/。
b) 创建数据库cactidb
c) 创建用户cactiuser,密码cactipw
d) 配置cactiuser对cactidb的完全访问权限
e) 将 C:/AppServ/www/cacti/cacti.sql 导入进cactidb,在命令行窗口输入如下命令
mysql -ucactiuser -pcactipw cactidb < C:/AppServ/www/cacti/cacti.sql
4.修改cacti的文件
- 设置时区,否则LOG文件的时间不对。
打开 C:/AppServ/www/cacti/include/global.php 文件,在里面加入一行
date_default_timezone_set('Asia/shanghai'); - 设置cacti连接数据库。
打开 C:/AppServ/www/cacti/include/config.php 文件,修改
$database_default = "cactidb";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "cactipw";
5.安装配置cacti
打开 http://localhost/cacti 会进入cacti的安装界面
- 在设置php路径中输入 C:/AppServ/php5/php.exe
- 安装完成后,以admin登录用户,在console - settings - visual中设置Default RRDtool 1.2 Fonts,把几个Font Files设置成 C:/winnt/fonts/arial.ttf。(否则出来的图上面没有字)
6.定时启动poller.php
a) 配置“计划任务”,添加任务计划;
b) 运行程序为 C:/AppServ/php5/php.exe,设置成每天 00:00 执行,高级里面选每5分钟执行一次,持续24小时;
c) 返回到属性的首页;
d) 运行(R)改成 C:/AppServ/php5/php.exe C:/AppServ/www/cacti/poller.php
e) 起始于改成 C:/AppServ/php5/
不出图的调试思路
- 检查poller是否正常
Console - System Utilities - View Cacti Log File 检查Poller的日志 - 记录一个项目的OID值和对应的rra文件
Console - System Utilities - View Poller Cache - 检查net-snmp能否取到资料
snmpget -v 2c -c community ip.xxx.xxx.xxx oid.x.x.x.x.x.x.x.x.x.x.x
snmpwalk -v 2c -c public-cacti ip.xxx.xxx.xxx - 检查rra文件是否正常
rrdtool.exe fetch c:/AppServ/www/rra/xxxxxxx.rrd AVERAGE - 如果没有图,检查是rrdtool能否创建rra文件
Console - System Utilities - Data Sources - 选择一个项目 - Turn On Data Source Debug Mode
将里面的
c:/rrdtool/rrdtool.exe create /
c:/AppServ/www/rra/xxxxxxxx.rrd /
--step 300 /
DS:traffic_in:COUNTER:600:0:1000000000 /
DS:traffic_out:COUNTER:600:0:1000000000 /
RRA:AVERAGE:0.5:1:600 /
RRA:AVERAGE:0.5:6:700 /
RRA:AVERAGE:0.5:24:775 /
RRA:AVERAGE:0.5:288:797 /
RRA:MAX:0.5:1:600 /
RRA:MAX:0.5:6:700 /
RRA:MAX:0.5:24:775 /
RRA:MAX:0.5:288:797 /
整理成一行,在cmd窗口下执行,看能否正常创建。
其他说明
- cacti的poller也可以用spine,不过网上下载到的是源代码。一来手边没有编译器,二来spine的调试也很麻烦,看网上说好多人都搞不定。
- AppServ、net-snmp、rrdtool不一定装在C盘,装在别的分区也可以,只要在cacti中设置好路径就可以。
- 如果一个服务器只用作网管的话,可以将原 C:/AppServ/www 改名,将 C:/AppServ/www/cacti 改成 C:/AppServ/www ,然后将原 C:/AppServ/www 的东西复制到新的文件夹去。