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数据库配置

这里创建的数据库即为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

  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 Interval和Cron interval都设置为Every Minute。

设置Poller

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命令修改:

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,需要将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了。

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

[TOC]