Cacti安装
前期准备
这里主要说明PHP、Apache的配置,默认认为你已经安装好MySQL、PHP、Apache或其它代替工具,并做好了相应的基本配置,已可以用于开发或生产环境。如果没有请参考其它教程配置PHP、Apache、MySQL,这里不再重复了。
PHP配置
配置PHPRC
指向你php安装目录
配置MIBDIRS
指向php目录下面的extras的mibs文件夹
有的PHP版本安装完之后并不会包含这个文件夹,这时候找个有这个目录的php,拷贝过来即可
修改Path变量,添加PHP路径(非必须)
修改php.ini
修改/配置如下参数
1 2 3 4 5 6 7 8 9 10 11 12 | fastcgi.impersonate = 1 register_argc_argv = On safe_mode = Off cgi.fix_pathinfo = 1 cgi.force_redirect = 0 upload_tmp_dir = "tmp文件夹路径" session.save_path="Session文件夹路径" //根据主机实际情况调整 max_execution_time = 60 ; max_input_time = 120 ; memory_limit = 128M ; |
修改权限
给计划任务执行账户 修改php目录\extras\mibs\
文件夹的权限
如果使用IIS:
修改tmp文件夹路径
和Session文件夹路径
的NTFS权限,给IUSR_
和IIS_WPG
用户修改此文件夹内文件的权限
Apache配置
1 2 3 4 | #确保已开启以下模块的使用 extension=php_mysql.dll extension=php_snmp.dll extension=php_sockets.dll |
软件下载
- Cacti主程序
http://www.cacti.net/download_cacti.php
下载Windows in ZIP format包 - Spine 程序
http://www.cacti.net/spine_download.php
下载Spine Binaries for Windows包 - RRDtool程序
http://oss.oetiker.ch/rrdtool/download.en.html
下载Cygwin Windows包 - Net-SNMP程序
http://www.net-snmp.org/download.html
下载Binary 包 - ActivePerl程序
http://www.activestate.com/activeperl/downloads
下载对应平台的安装包
Spine前身为Cactid,用来轮询的,默认Cacti使用CMD.php,最小只能5分钟,效率较低,换成Spine之后可以1分钟轮询一次。
RRDtool最新的为1.4.X版本的,但是默认编译好的Windows平台的只有1.2.X版本,如果使用最新的版本需要自行安装Cygwin( http://www.cygwin.com/ )编译新版本的源码。1.2.X编译好的版本在Windows下面不能支持中文。
由于Cacti自带某些perl脚本来查询,所以需要安装ActivePerl,但若你确定自己不会用到perl脚本来查询,则可以不安装。
软件安装
Spine
Spine为免安装工具,解压到你想要放置的地方( 如:c:\spine )
复制一份spine.conf.dist
,并改名为spine.conf
并用编辑器打开,对cacti所使用的数据库进行配置
Windows平台MySQL的地址需要使用IP地址!
RRDtool
RRDtool也是绿色软件,解压到你想放置的地方( 如:c:\rrdtool )
Net-SNMP
Net-SNMP为安装程序,直接下一步,下一步安装到你想放置的地方( 如:c:\net-snmp )
我安装在默认位置c:\usr下
ActivePerl
ActivePerl直接默认安装即可
安装完之后确认系统变量中已经包含了perl,如果没有则自己添加一下。
Cacti
Cacti 主程序为PHP的WebApp,解压到Apache或代替软件的网站目录下( 如:D:\wamp\htdocs ),或者自行建立虚拟主机,或者虚拟目录,然后解压进去。
MySQL数据库配置
这里创建的数据库即为Spine
和Cacti
使用的数据库
cacti.sql在cacti的根目录下面,数据库名称和数据库用户可以自己定义。
1 2 3 4 5 6 7 8 | //创建cacti数据库 mysql> create database cacti; //创建cactiuser用户并付给cacti表权限 mysql> grant all on cacti.* to cactiuser@localhost identified by “cactiuser”; mysql>flush privileges; //导入cacti数据库sql mysql>use cacti mysql>source d:/wamp/htdocs/cacti/cacti.sql |
打开Cacti目录下的include\config.php
,配置数据库地址
1 2 3 4 5 6 7 | $database_type = "mysql"; $database_default = "cacti"; $database_hostname = "127.0.0.1"; $database_username = "cactiuser"; $database_password = "cactiuser"; $database_port = "3306"; $database_ssl = false; |
安装Cacti
- 在浏览器中打开cacti(http://your-url/install/index.php)
比如我放在了http://localhost/cacti/install/index.php
点击Next>>
进入下一步 选择全新安装
点击Next>>
进入下一步- 配置路径
如图所示配置好各个程序所在的路径
点击Finish
完成 - 重置密码
- 完成后转入登陆窗口,填写用户名密码 admin/admin 进行登陆
- 填写新密码
Cacti不提供密码找回功能,所以修改之后的密码一定要牢记!
- 完成后转入登陆窗口,填写用户名密码 admin/admin 进行登陆
至此Cacti安装完成。
设置Cacti
设置路径
在Paths选项卡中,如图填入spine和其它组件的绝对路径
设置Poller
因为我们安装了Spine
,将Poller Type
选为spine
,并将Poller Interval
和Cron interval
都设置为Every Minute
。
Poller Interval
和Cron interval
这是指查询间隔。
因为使用了spine所以可以设置为1分钟一次。
如果使用默认的CMD.php, 请不要低于5分钟 。
同时修改左侧Data Templates
选项卡里模板的step
( 采样时间 )为 60 ,heartbeat
( 超时 )为 120
如果模板太多,可以简单用SQL命令修改:
1 2 UPDATE data_template_data SET rrd_step=60 WHERE rrd_step=300; UPDATE data_template_rrd SET rrd_heartbeat=120 WHERE rrd_heartbeat=600;
修改Data Templates 为需要以分钟为单位收集数据的模版选上Hourly (1 Minute Average)
如果模板太多,可以简单用SQL命令修改:
1INSERT INTO data_template_data_rra(`data_template_data_id`,`rra_id`) SELECT DISTINCT dtdr.data_template_data_id,5 FROM data_template_data_rra dtdr
设置计划任务
打开控制面板里面的计划任务,点击添加计划任务
任务的运行中,填写php.exe
所在路径并加上参数–f cacti路径/poller.php
起始目录请指定为cacti
所在目录。
修改任务的计划,使其 每天24小时每隔1分钟执行一次 。
Linux端
因为虽然是不同的系统,但是配置都差不多,所以参照Windows的配置,Linux端就写的简短些了
前期准备
配置好Web环境(PHP,MySQL),如最基本的LAMP:
- httpd
- php
- php-mysql
- php-snmp
- php-ldap ( 当使用 LDAP authentication 时需要 )
- php-xml
- mysql
- mysql-server
- net-snmp ( 根据不同的distro ,也许需要安装net-snmp-utils )
- crond (cron, cronie or the like)
如果要安装官方的修补补丁则还需要有以下的包:
- wget
- patch
设置PHP
修改php.ini
修改/配置如下参数
1 2 3 4 5 6 7 8 9 10 11 12 | fastcgi.impersonate = 1 register_argc_argv = On safe_mode = Off cgi.fix_pathinfo = 1 cgi.force_redirect = 0 upload_tmp_dir = "tmp文件夹路径" session.save_path="Session文件夹路径" //根据主机实际情况调整 max_execution_time = 60 ; max_input_time = 120 ; memory_limit = 128M ; |
确保已经安装了php-mysql、php-snmp、php-ldap、php-xml
同时由于要使用
php-snmp
,必须指定MIBDIRS
的位置
搜索系统中mibs
文件夹,并将其设置为系统变量
如export MIBDIRS=/path/to/:/path2/to
配置Apache
确保已开启以下模块的使用:
1 2 3 | extension=php_mysql.dll extension=php_snmp.dll extension=php_sockets.dll |
软件安装
Cacti
推荐使用apt-get install cacti
来安装编译好的二进制版本
也可以从http://www.cacti.net/download_cacti.php下载源码包,编译安装
我使用自己下载安装来介绍
1 2 3 4 5 | #解压下载的安装包 tar xzvf cacti-0.8.8a.tar.gz #将解压出来的文件夹移动到apache的相应目录,如:我这直接放www下 mv ./cacti-0.8.8a /var/www/cacti |
Spine
从http://www.cacti.net/spine_download.php处下载Spine Source
包,手动编译安装。
1 2 3 4 5 6 7 8 9 10 11 12 13 | #解压下载的安装包 tar xzvf cacti-spine-0.8.8a.tar.gz #进入目录 编译安装 sudo ./configure sudo make sudo make install #拷贝配置文件到安装目录 sudo cp /usr/local/spine/etc/spine.conf.dist /usr/local/spine/bin/spine.conf #修改配置文件 sudo vi /usr/local/spine/bin/spine.conf |
RRDtool
推荐使用apt-get install rrdtool
来安装编译好的二进制版本
也可以从http://oss.oetiker.ch/rrdtool/download.en.html下载Debian包,编译安装
设置RRDtool显示中文
1 2 3 4 5 | #更改系统中rrdtool为 rrdtool.local sudo mv /usr/bin/rrdtool /usr/bin/rrdtool.local #创建个脚本,指定系统字符集,并将参数传给rrdtool.local sudo vim/usr/bin/rrdtool |
填写如下内容
1 2 3 4 | #! /bin/sh export LANG=zh_CN.utf8 /usr/bin/rrdtool.local "$@" |
1 2 | #修改权限,使其能执行 sudo chmod 755 /usr/bin/rrdtool |
Net-SNMP
推荐使用apt-get install snmp snmpd
来安装编译好的二进制版本
也可以从http://www.net-snmp.org/download.html下载源码包,编译安装
Cacti安装/配置
参见Windows下的安装配置
注意:RRDtool的版本此时应该选择为1.4.X!
Linux下需要设置文件夹权限
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #给日志文件夹读写权限 chmod 777 /var/www/cacti/log #给rra文件夹读写权限 chmod 777 /var/www/cacti/rra #给script文件夹执行权限 chmod 755 /var/www/cacti/script #给cacti 主文件夹执行权限 chmod 755 /var/www/cacti #给Poller以root用户root用户组的权限并给他root执行的权限 chown root:root /var/www/cacti chmod +s /var/www/cacti/poller.php |
计划任务配置
使用sudo crontab –e
命令编辑任务,在最后添加一行:
1 2 | # */1表示 每1分钟执行1次 */1 * * * * /usr/bin/php /var/www/cacti/poller.php >/dev/null 2>&1 |
Ctrl+X 退出保存
被监控端
Window平台
安装Information-std
官方下载地址:http://www.wtcs.org/informant/download.htm
不需要做配置
这是由于由于Windows自带的SNMP提供的信息不足以让Cacti监控到主机的信息,所以需要安装
Linux平台
Linux平台需要开启SNMP
服务
使用apt-get install snmpd
安装snmpd
服务
如果服务器自带的MIB不足以让Cacti获得它所需要的信息
使用apt-get install snmp-mibs-downloader
下载mibs文件。
如果服务器有iptables
,需要将upd
的161端口
设置为可以接受传入
1 | #iptables -A INPUT -i eth0 -p udp -s 监控服务器IP –dport 161 -j ACCEPT |
如果是Ubuntu平台 修改/etc/default/snmpd
1 | snmpDOPTS=’-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid 127.0.0.1’ |
将之修改为:
1 | snmpDOPTS=’-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid’ |
然后执行sudo service snmd restart
重启服务
其他问题
Net-SNMP找不到libnetsnmp.so的问题
尝试添加系统变量export LD_LIBRARY_PATH=/usr/local/lib
如果问题依旧使用如下方式:
- 创建一个文件
/etc/ld.so.conf.d/local.conf
- 编辑文件,写入
/usr/local/lib
保存 - 运行”ldconfig”
修改rrd文件时间间隔
以修改为60 即1分钟为例
用
rrdtool dump
将rrd库dump成一个xml文件1
sudo rrdtool dump /www/webdev/cacti/rra/105_133sh_rent_cpu_6056.rrd >~/105_133sh_rent_cpu_6056.xml
用手动编辑的方法修改xml文件中的step值
如本例,将300修改成60
1 2 3 4 5 6 7
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE rrd SYSTEM "http://oss.oetiker.ch/rrdtool/rrdtool.dtd"> <!-- Round Robin Database Dump --> <rrd> 。。。。。。。。 <step>300改成60</step> <!-- Seconds --> 。。。。。。。。。。。。
保存文件
将xml文件用rrd restore存成一个新的rrd库
1
rrdtool restore 105_133sh_rent_cpu_6056.xml 105_133sh_rent_cpu_6056.rrd
再用新的库文件覆盖旧的rrd库文件
这时刷新cacti图形已经变更过来了
建议先备份就的库文件,如果没有效果,检查数据/图像模板刷新时间是否已经修改为60了。
[TOC]