当前位置: > Linux服务器 > 监控工具 >

Cacti+RRDTool的部署文档

时间:2014-10-26 01:02来源:linux.it.net.cn 作者:it

一、Cacti简介
Cacti是一个完整的网络图形解决方案,利用了RRDTool的数据存储和绘图的强大功能。Cacti提供了一个快速轮询,先进的图形模板,多种数据采集方法,分组的功能,用户管理。所有这一切都被包括在一个直观的,易于使用的界面,使安装了数百台服务器和设备的中小型网络或者复杂的网络可以轻松的监控其运行状态及历史情况。

二、Cacti的安装
本文档主要参考www.cacti.net上的官方文档进行的安装,平台是Linux。
1、安装环境需求
基本环境需求为LAMP;
其他
RRDTool
Net-snmp
Cacti

2、安装RRDTool
RRDTool是由Tobias Oetiker开发的自由软件,它使用RRD(Round Robin Database)作为存储格式,Round robin是一种处理定量数据、以及当前元素指针的技术。RRDTool主要用来跟踪对象的变化情况,生成这些变化的走势图。
本次准备安装的cacti-0.8.8a.tar.gz已经可以支持rrdtool-1.4.x,因此本文档采用的rrdtool为最新稳定版rrdtool-1.4.7.tar.gz。
先使用yum进行安装支持的库文件,其中有一大部分在安装PHP时都已经安装过了,在这里列出几个特殊的。
pango pango-devel
cairo cairo-devel

安装RRDTool
 

复制代码代码如下:
#tar zxvf rrdtool-1.4.7.tar.gz
#cd rrdtool-1.4.7
#./configure --prefix=/usr/local/rrdtool \
#--disable-tcl \
#--disable-python

没有编译tcl和python模块,如果不禁用这两个模块,编译过程会报错。
 

复制代码代码如下:
#make && make install
#ln -s /usr/local/rrdtool/bin/* /usr/local/bin/

创建了了rrdtool可执行文件的软连接。

3、安装Net-snmp
Net-snmp可以使用源码编译安装,也可以使用rpm包安装,最简单的是yum安装,因为正式进行监控时每台机器都需要安装Net-snmp,所以建议使用yum安装,也是本文档使用的方式。
 

复制代码代码如下:
#yum -y install net-snmp net-snmp-devel net-snmp-utils

编辑snmp配置文件
修改
com2sec notConfigUser default public

com2sec notConfigUser 192.168.1.102 public #192.168.1.102为Cacti服务器所在主机IP,指定只有该IP可以访问SNMP,用户名public

修改
view systemview included .1.3.6.1.2.1.1

view systemview included .1.3.6.1.2.1 #定义可查看的snmp的范围

修改完成后启动snmpd
#service snmpd start

将snmpd加入自启动
 

复制代码代码如下:
#chkconfig --add snmpd
#chkconfig snmpd on

查看状态
 

复制代码代码如下:
#chkconfig --list | grep snmpd
#snmpwalk -v 2c -c public 192.168.1.102 if #输出MIB信息则配置成功,如果输出为Timeout: No Response from 192.168.1.102或其他信息,请检查SNMP配置。

以上Net-snmp安装完毕,其他被监控机安装同上,配置也一样,测试是否安装成功时,测试命令必须在192.168.1.102(Cacti所在服务器进行)
snmpwalk命令使用详细请查看help页或者man手册。

4、安装Cacti
 

复制代码代码如下:
#tar zxvf cacti-0.8.8a.tar.gz
#mv cacti-0.8.8a /usr/local/apache/htdocs/cacti #/usr/local/apache/htdocs apache的根目录

创建数据库

复制代码代码如下:
#mysql #进入mysql命令行操作,有密码的或者需要指定socket文件的另加参数,在此不再赘述
>create database cacti; #创建cacti数据库
>grant all on cacti.* to 'cacti'@'localhost' identified by "cactiadmin";

#创建cacti用户,对cacti数据库有全部权限,仅本地访问,密码为“cactiadmin”
 

复制代码代码如下:
>flush privileges; #刷新权限列表
>exit

进入cacti目录
#cd /usr/local/apache/htdocs/cacti
#mysql -ucacti -pcactiadmin cacti < cacti.sql #将cacti数据库导入

编辑cacti目录下include/config.php文件,添加数据库刚才配置的数据库相关信息。如下:
 

复制代码代码如下:
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "cactiadmin";
$database_port = "3306";

使用浏览器打开http://192.168.1.102/cacti 会看到安装向导,按照安装向导进行可以到配置各个命令可执行文件路径页面。
该页面主要配置的是RRDTool,Net-snmp常用命令的的路径等,只要按照上面安装的路径填写就好,本文档的路径配置如下:
snmpwalk /usr/bin/snmpwalk
snmpget /usr/bin/snmpget
snmpbulkwalk /usr/bin/snmpbulkwalk
snmpgetnext /usr/bin/snmpgetnext
RRDTool /usr/local/bin/rrdtool
PHP /usr/local/php/bin/php
Cacti Log File Path /usr/local/apache/htdocs/cacti/log/cacti.log

当然以上路径也可以在配置完cacti之后进行更改,Cacti console->Settings->Paths 页面就可以重新配置以上路径。

下一步之后,cacti基本安装完成。默认的用户名admin,密码admin。
修改数据文件和log存放目录的权限,使下面两个目录的权限如下所示。
drwxr-xr-- 5 apache apache 4096 May 24 13:30 rra
drwxr-xr-- 2 apache apache 4096 May 23 18:48 log

增加定时采集任务;
 

复制代码代码如下:
#sudo su apache - #切换到apache用户
#crontab -e
*/5 * * * * /usr/local/php/bin/php /usr/local/apache/htdocs/cacti/poller.php > /dev/null 2>&1
#exit

安装cacti-spine-0.8.8a.tar.gz
spine是为了替代cacti的cmd.php的,主要提高了采集执行的效率,一般在cmd.php执行需要300秒以上时就需要更换为spine了。当然,我们目前的规模还不会超过300秒,但是配置起来以备后患。
 

复制代码代码如下:
#tar zxvf cacti-spine-0.8.8a.tar.gz
#cd cacti-spine-0.8.8a
#./configure --prefix=/usr/local/cacti-spine
#make && make install

安装完成后进入该安装目录,并修改配置文件spine.conf
 

复制代码代码如下:
#cd /usr/local/cacti-spine/etc
#cp spine.conf.dist spine.conf

修改spine.conf文件,就是修改数据库连接信息,具体如下:
 

复制代码代码如下:
DB_Host localhost
DB_Database cacti
DB_User cacti
DB_Pass cactiadmin
DB_Port 3306
DB_PreG 0

修改完成后在Cacti console 页面 Setting->Pahts 添加spine的路径
/usr/local/cacti-spine/bin/spine

在 Setting->poller页面 更改 Poller Type为spine 保存即可。
以上,Cacti的基本安装就完成了。

注意:在配置Cacti时经常会遇到没有数据或者不出图的问题,这个问题可能的原因有以下几个:
1、rra目录没有权限写入,所对应的写入用户为在执行定时任务的用户;
2、snmpwalk没有取到数据,可以自己手动用该命令进行测试;
3、客户端配置的snmp读取信息权限导致的取不到数据,但是可以生成rrd文件,这个问题可以用下面这个命令检测,如果输出的结果全部为“nan”,那就需要检查Net-snmp配置了。
rrdtool fetch RRDfile.rrd AVERAGE
4、cacti调用rrd文件进行绘图的时候没有权限,这个问题可以用Cacti的Data Source Debug mode和Graph Debug mode来排查;开启方法是 console->Data Sources->点击没有图像的数据源->Turn On Data Source Debug mode 。Graph类似。

三、Cacti监控对象添加
前提,被监控主机Net-snmp已经安装,并配置完成;

1、添加设备
 

复制代码代码如下:
console->Devices->Add->填写被监控主机的详细情况
Description Web-1
Hostname 119.254.82.6
Host Template Local Linux Machine
其他基本可以默认
->Create
如果客户端没有问题,在页首的位置会显示该主机的基本信息,System,Uptime等;

2、创建视图
在1的基础上Create Graphs for this Host->勾选需要生成图像的项目
 

复制代码代码如下:
Linux - Memory Usage
Unix - Load Average
Unix - Logged in Users
Unix - Processes
eth0
eth1
->Create

3、建立监控对象树
console->Graph Trees->Add->填写树名->Create
4、给书中添加被监控主机
console->Graph Trees->树名->Add->Tree Item Type 选择Host->Host 选择刚刚创建的Web-1->Create
这样基本的一个监控对象就加入了,但是Cacti的模板、插件应用等还有很多功能,这个在网上和论坛都有很多的介绍,如果还要进行更复杂的配置请自行查找相关资料。

 
(责任编辑:IT)
------分隔线----------------------------