Cacti安装

前期准备

这里主要说明PHP、Apache的配置,默认认为你已经安装好MySQL、PHP、Apache或其它代替工具,并做好了相应的基本配置,已可以用于开发或生产环境。如果没有请参考其它教程配置PHP、Apache、MySQL,这里不再重复了。

PHP配置

配置PHPRC

指向你php安装目录

设置PHPRC

配置MIBDIRS

指向php目录下面的extras的mibs文件夹

设置MIBDIRS

有的PHP版本安装完之后并不会包含这个文件夹,这时候找个有这个目录的php,拷贝过来即可

修改Path变量,添加PHP路径(非必须)

设置PATH

修改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

软件下载

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程序文件

复制一份spine.conf.dist,并改名为spine.conf并用编辑器打开,对cacti所使用的数据库进行配置

Windows平台MySQL的地址需要使用IP地址!

RRDtool

RRDtool也是绿色软件,解压到你想放置的地方( 如:c:\rrdtool )

放置RRDtool程序文件

Net-SNMP

Net-SNMP为安装程序,直接下一步,下一步安装到你想放置的地方( 如:c:\net-snmp )
我安装在默认位置c:\usr下

安装Net-SNMP程序

ActivePerl

ActivePerl直接默认安装即可

安装完之后确认系统变量中已经包含了perl,如果没有则自己添加一下。
确认perl在PATH里

Cacti

Cacti 主程序为PHP的WebApp,解压到Apache或代替软件的网站目录下( 如:D:\wamp\htdocs ),或者自行建立虚拟主机,或者虚拟目录,然后解压进去。

放置Cacti程序文件

MySQL数据库配置

这里创建的数据库即为SpineCacti使用的数据库

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

  1. 在浏览器中打开cacti(http://your-url/install/index.php)
    比如我放在了http://localhost/cacti/install/index.php
    安装Cacti 第一步
    点击 Next>> 进入下一步
  2. 选择全新安装

    安装Cacti 第二步
    点击 Next>> 进入下一步

  3. 配置路径
    如图所示配置好各个程序所在的路径
    安装Cacti 第三步
    点击 Finish 完成
  4. 重置密码
    1. 完成后转入登陆窗口,填写用户名密码 admin/admin 进行登陆
      安装Cacti 第四步(1)
    2. 填写新密码
      安装Cacti 第四步(2)

      Cacti不提供密码找回功能,所以修改之后的密码一定要牢记!

至此Cacti安装完成。

设置Cacti

设置路径

在Paths选项卡中,如图填入spine和其它组件的绝对路径

设置abspath

设置Poller

因为我们安装了Spine,将Poller Type选为spine,并将Poller IntervalCron interval都设置为Every Minute

设置Poller

Poller IntervalCron interval这是指查询间隔。
因为使用了spine所以可以设置为1分钟一次。
如果使用默认的CMD.php, 请不要低于5分钟

同时修改左侧Data Templates选项卡里模板的step( 采样时间 )为 60heartbeat( 超时 )为 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命令修改:

1
INSERT 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分钟执行一次

设置Windows计划任务(1)
设置Windows计划任务(2)

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,需要将upd161端口设置为可以接受传入

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了。

来源:http://www.mayj.net/article/linux/57.htm

[TOC]