Cacti 是一套基于PHP 、MySQL 、SNMP 及 RRDTool 开发的开源监测图形分析工具。
Cacti 是用 php 语言实现的一个监控软件,它的主要功能是用 SNMP 服务获取数据,然后用 RRDTool 储存和更新数据,当用户需要查看数据的时候用 RRDTool 生成图表呈现给用户。因此,SNMP 和 RRDTool 是 Cacti 的关键。SNMP 关系着数据的收集,RRDTool 关系着数据存储和图表的生成。
1、底层环境搭建( 这里使用 LNMP ,安装略 )
2、安装前的调整
## 关注系统时间是否正确,这步尤为重要,如系统时间不对可能导致 Cacti 出图延迟
## 可以使用命令来实现 ntpdate us.pool.ntp.org | hwclock -w
## 还要检查 PHP 时区配置是否正确,尤为重要
3、安装 RRDTool 、SNMP
[root@study ~]# yum -y install rrdtool-devel net-snmp net-snmp-utils
[root@study ~]# vim /etc/snmp/snmpd.conf ## 编辑配置文件
com2sec notConfigUser 192.168.221.129 public
## 大致在 41 行的位置,将原 defaults 改为本机 IP ,public 为共同体名,可以自定义
access notConfigGroup “” any noauth exact all none none
## 大致在 62 行的位置,将原来的 systemview 改为 all
view all included .1 80
## 大致在 85 行的位置,取消注释
[root@study ~]# service snmpd start ## 启动 SNMPD 服务
[root@study ~]# chkconfig �Cadd snmpd
[root@study ~]# chkconfig �Clevel 35 snmpd on
## 将其加入开机启动
[root@study ~]# netstat -anpt | grep snmpd
tcp 0 0 127.0.0.1:199 0.0.0.0:* LISTEN 1558/snmpd
## 验证是否成功启动
4、安装 Cacti
下载地址:
http://www.cacti.net/downloads/cacti-0.8.8c.tar.gz
[root@study Package]# tar zxf cacti-0.8.8c.tar.gz -C /usr/local/nginx/html/
[root@study Package]# cd /usr/local/nginx/html/
[root@study html]# mv cacti-0.8.8c cacti
[root@study html]# useradd cacti ## 创建 cacti 用户,用来生成图像文件,不是必须的
[root@study html]# chown -R nginx.nginx cacti
[root@study html]# chown -R cacti.cacti cacti/rra cacti/log
[root@study ~]# service mysqld start
[root@study ~]# chkconfig �Cadd mysqld
[root@study ~]# chkconfig �Clevel 35 mysqld on
## 启动 Mysql ,加入开机启动
[root@study ~]# mysql -u root -p123456
mysql> create database cactidb;
mysql> grant all on cactidb.* to cactiuser@localhost identified by ‘cactipasswd';
## 创建 cactidb 库,添加授权用户 cactiuser ,登录密码为 cactipasswd
mysql> use cactidb;
mysql> source /usr/local/nginx/html/cacti/cacti.sql
## 导入数据库
[root@study ~]# vim /usr/local/nginx/html/cacti/include/config.php
$database_type = “mysql”;
$database_default = “cactidb”;
$database_hostname = “localhost”;
$database_username = “cactiuser”;
$database_password = “cactipasswd”;
$database_port = “3306”;
$database_ssl = false;
## 添加数据库连接用户、密码等
[root@study ~]# /usr/local/nginx/sbin/nginx ## 启动 Nginx
[root@study ~]# service php-fpm start ## 启动 Php-fpm
[root@study ~]# chkconfig �Cadd php-fpm
[root@study ~]# chkconfig �Clevel 35 php-fpm on
## Php-fpm 加入开机启动
[root@study ~]# netstat -anpt | grep -P ’80|9000′
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1946/nginx
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 1966/php-fpm
## 启动成功
## 防火墙开启 80 端口对外允许访问,允许 127.0.0.1 访问所有
5、浏览器安装 Cacti
> http://192.168.221.129/cacti
> 点击 Next
> 选择 New Install , 点击 Next
> 这里出问题最多的就是 PHP 路径,将 /usr/bin/php 改为 /usr/local/php/bin/php ,点击 Finish
> 成功出现登录框,默认用户 admin 、密码 admin
> 这时会强制修改密码,输入新的密码即可
> OK ,这时已经成功登录
6、开启本机监控
> 点击左侧 Management ― Devices
> 这时可以看到默认的 Localhost ,Status 为 Unknown ,Hostname 为 127.0.0.1
> 点击 Localhost ,进入配置页面
> SNMP Community 区域
Hostname ― 默认为 127.0.0.1 修改为本机 IP 192.168.221.129
> SNMP Options 区域
SNMP Version ― 选择版本 Version 1
SNMP Community 共同体名,默认为 public ,修改为自己的共同体名(即 snmpd.conf 中所配置项)
> 点击 Save
## 最上方出现 Save Successful 字样,并打印出本机相关信息为成功,如出现 SNMP Error 为失败
## 现在已经开启了对本机的监控
7、查看图像信息
> 点击 graphs �C> Default Tree �C> Host:Localhost
## 这时会发现图像无法正常显示(裂图),因为还没有生成数据
[root@study ~]# crontab -u cacti -e
*/5 * * * * /usr/local/php/bin/php /usr/local/nginx/html/cacti/poller.php >/dev/null 2>&1
## 以 cacti 用户身份创建任务计划,用来生成采集数据
## 如果不加 >/dev/null ,会导致每次执行任务计划时,系统都向 cacti 发一封邮件,内容为生成的数据
## 你可以等待 5 分钟,或者 su �C cacti 后,直接执行任务计划中的命令
## 当 /usr/local/nginx/html/cacti/rra 目录下生成文件时,就可以去 web 页面查看图像数据
## 这时就可以将图像显示出来了
## 也许有可能会出现有图无数据的情况,要么多刷新两次,要么检查 PHP 时区是否配置错误
## 到此,Cacti 安装完成!
附 ( 之前遇到的问题 ):
1、访问 web 安装 Cacti 时,页面空白
日志显示如下:
[Wed Feb 12 15:33:55.510859 2014] [:error] [pid 33781:tid 140656689280768] [client 192.168.0.180:63096] PHP Fatal error: Call to undefined function session_unregister() in /usr/local/apache/htdocs/cacti/lib/functions.php on line 408, referer:http://192.168.0.220/cacti/install/index.php
解决方法:
vim /usr/local/apache/htdocs/cacti/lib/functions.php
408 session_unregister($var_name); # 注释掉 408 行
2、PHP 时区报错,解决方法去 php.ini 中改一下即可
3、Cacti 不出图,查看 rra 目录有没有生成数据,最为关键。
如没有数据查看任务计划是否配置有错
手动生成数据是否成功
rra 目录权限问题
4、Cacti 出图无数据,查看系统时间、PHP 时区是否正确