cacti是用php语言实现的一个软件,它的运行需要网站服务器(如apache)及PHP环境的支持。同时,cacti还需要Mysql配合PHP程序存储一些变量数据并对变量数据进行调用,如:主机名、主机ip、snmp团体名、端口号、模板信息等变量。

rrdtool的对主机负载、网络流量等信息的统计需要通过SNMP协议实现。经过SNMP抓取到的数据存储于由rrdtool生成的rrd文件中,这些文件通常位于cacti的rra目录中。rrdtool对数据的更新和存储就是对rrd文件的处理,rrd文件是大小固定的归档文件(Round Robin Archive),它能够存储的数据笔数在创建时就已经定义。
这副图片简述了cacti的工作原理.
安装依赖软件包,其中有些在安装nagios的时候已经安装过了
yum install -y httpd* gcc glibc glibc-common gd gd-devel php* php-* ntp mysql* mysql-*  net-snmp* net-snmp-* cairo-devel libxml2-devel pango-devel pango libpng-devel freetype-devel libart_lgpl-devel intltool freetype perl-ExtUtils-MakeMaker perl-Time-HiRes
我安装完mysql,查看服务时有unrecognized service的提示

clip_p_w_picpath001

因为没有安装mysql-server 

安装一下

yum install mysql -server -y

clip_p_w_picpath002

不提示了

clip_p_w_picpath003

安装rrdtool

编辑yum源

vi /etc/yum.repos.d/CentOS-Base.repo

clip_p_w_picpath005

添加下面内容

[dag]  
name=Dag RPM Repository for Red Hat Enterprise Linux  
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag  
gpgcheck=1  
gpgkey=http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt  
enabled=1

clip_p_w_picpath006

安装rrdtool

yum install -y rrdtool*

clip_p_w_picpath007

看下安装成果

rrdtool,rrdtool-php,rrdtool-devel都有了

clip_p_w_picpath008

启动mysql

service mysqld start

clip_p_w_picpath009

clip_p_w_picpath010

编辑snmp配置文件

vi /etc/snmp/snmpd.conf

clip_p_w_picpath011

修改com2sec notConfigUser default public

中的default为127.0.0.1

clip_p_w_picpath012

access notConfigGroup “” any noauth exact systemview none none

中的systemview为all

clip_p_w_picpath014

取消view all included .1 80前面的#

clip_p_w_picpath015

下载cacti

wget http://www.cacti.net/downloads/cacti-0.8.8a.tar.gz

clip_p_w_picpath017

解压

tar zxvf cacti-0.8.8a.tar.gz

clip_p_w_picpath018

把解压后的目录移动到指定目录

mv cacti-0.8.8a /usr/cacti

clip_p_w_picpath019

可以给mysql的root用户设置密码,当然也可以不设置,看你自己了

mysqladmin -uroot password 密码

验证设置的密码

mysqladmin --user=root --password reload

修改密码是修改密码:

mysqladmin -u root -p password ‘新密码’

或者进入数据库下面有说到怎么进

update user set password=PASSWORD(“新密码″) where user=”root”;

flush privileges;

quit

创建数据库

先进入数据库

如果有密码

mysql -u root -h 127.0.0.1 -p当然-h可以省略

然后输入密码

或者mysql -uroot -p密码

如果没设置密码就可以直接输入mysql

clip_p_w_picpath021

创建数据库

mysql> create database cacti; 

或者上面的步骤可以直接用mysqladmin --user=root -p create cacti代替

mysql> grant all on cacti.* to 'cacti'@'localhost' identified by 'cacti'; 

mysql> flush privileges;

clip_p_w_picpath023

ctrl c或者exit退出

将cacti表内容导入数据库

ca /usr/cacti

mysql -ucacti -pcacti cacti < /usr/cacti/cacti.sql

clip_p_w_picpath025

编辑/usr/cacti/include/config.php和global.php

内容一样

clip_p_w_picpath026

clip_p_w_picpath027

指定数据库连接用户名和密码为cacti

clip_p_w_picpath028

添加系统用户cacti,不创建家目录

useradd -r -M cacti

设置它对目录的权限

chown –R cacti /var/www/html/cacti/rra/ 

chown –R cacti /var/www/html/cacti/log/

clip_p_w_picpath029

设置计划任务,5分钟刷新一次

5个*分别代表分,时,日,月,周

echo "*/5 * * * * cactiuser php /var/www/html/cacti/poller.php > /dev/null 2>&1">>/etc/crontab

clip_p_w_picpath031

重启crond服务

service crond restart

访问一下

192.168.189.23/cacti

啊,找不到网页,点下面详细信息,报错404

一般是目录不存在

clip_p_w_picpath032

我们要把cacti的解压目录放在http的根目录下才行

mv /usr/cacti /var/www/html

clip_p_w_picpath033

向导界面出现了

clip_p_w_picpath035

因为是第一次安装,所以默认New Install,而不是update更新

clip_p_w_picpath037

cacti用到的命令路径,你可以改,当然为什么要改呢?!呵!

clip_p_w_picpath039

登陆界面

clip_p_w_picpath041

默认是admin admin

输入完会让你修改密码

clip_p_w_picpath043

英文界面,里面也可以改用户名和密码之类的操作,你可也可去安装cactiEZ,中文版的,做的很完美!

 

不显示图片

clip_p_w_picpath045

clip_p_w_picpath047

clip_p_w_picpath049

下面是排错过程

clip_p_w_picpath050

还是不显示

网页上查看日志

clip_p_w_picpath051

clip_p_w_picpath053

命令行查看日志

clip_p_w_picpath054

clip_p_w_picpath056

设置刷新时间为1分钟

clip_p_w_picpath057

clip_p_w_picpath058

也不管用

删除文件

clip_p_w_picpath059

重新生成

clip_p_w_picpath060

可以了,点graphs

clip_p_w_picpath062

clip_p_w_picpath064

但是没数据

把刷新时间再改回5分钟吧

这里也可以设置这个时间,两个要相同

clip_p_w_picpath066

clip_p_w_picpath068

原来的Unknown也变成Up了

clip_p_w_picpath070

没数据排错

看snmp配置是否正确,正确会出来很多数据,这个IP是被监控的IP

clip_p_w_picpath071

或者

clip_p_w_picpath072

clip_p_w_picpath073

clip_p_w_picpath074

clip_p_w_picpath075

看另一个日志

clip_p_w_picpath076

说是重庆时区

clip_p_w_picpath078

clip_p_w_picpath079

改时区

clip_p_w_picpath081

clip_p_w_picpath083

clip_p_w_picpath084

clip_p_w_picpath085

clip_p_w_picpath086

没用

换一种方法,改cacti的时区设置

clip_p_w_picpath087

clip_p_w_picpath088

也不行

还有一种说法:

如果还是无法抓到snmp数据包

用ps aux |grep snmp 查看是否启动,如没有看到进程

输入/usr/local/sbin/snmpd -c /etc/snmp/snmpd.conf 启动snmp进程

测试snmp是否正常

#snmpwalk -c public -v 2c localhost

#snmpwalk -v 1 -c public localhost IP-MIB::ipAdEntIfIndex

IP-MIB::ipAdEntIfIndex.61.xxx.xxx.xxx = INTEGER: 2 IP-MIB::ipAdEntIfIndex.127.0.0.1 = INTEGER: 1 IP-MIB::ipAdEntIfIndex.172.xxx.xxx.xxx = INTEGER: 3

也可以用snmpd -f -Le 命令查看当前有没有出什么错

不过我没试,因为是后来看到的

还有多试几次

clip_p_w_picpath060[1]

没办法了,不知道哪里错了

重来,重新安装rrdtool

http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.4.7.tar.gz

clip_p_w_picpath089

clip_p_w_picpath091

clip_p_w_picpath092

clip_p_w_picpath094

修改snmp配置文件

这个很少人说要启用这两个,不过我这里启用了,反正是好了!

clip_p_w_picpath095

clip_p_w_picpath074[1]

clip_p_w_picpath096

终于成功了!

clip_p_w_picpath098

被监控端也要安装snmp,设置和这个一样,最后别忘记启动服务

添加LINUX被监控主机

Devices,右上角Add

clip_p_w_picpath100

输入主机描述,主机名或IP,主机模板选择Generic SNMP-enabled Host

clip_p_w_picpath102

点下面的Create,然后出现下面这个界面

下面Associated Graph Templates

添加你要监控的选项模板,点下面的保存

clip_p_w_picpath104

最右上面点Create Graphs for this Host,为这个主机画图

clip_p_w_picpath106

勾选所有的,点Create

clip_p_w_picpath108

Create

clip_p_w_picpath110

Graph Management可以对要监控的所有图形进行管理

clip_p_w_picpath111

如果是不显示图片

clip_p_w_picpath112

在上面右键显示图片,如果不行,看你的系统时间对不对如果不对

date -s 年月日或者月/日/年

date -s 时:分

hwclock -w

当然也要等几分钟,它也要花点时间收集数据

clip_p_w_picpath114

clip_p_w_picpath116

又没数据

clip_p_w_picpath118

把被监控端iptables关闭

clip_p_w_picpath120

再一看还没有,不过等一会就有了,因为它要花一段时间来采集数据

clip_p_w_picpath122

除了CactiEZ是中文的,还有一个中文版的cacti

wget http://blogimg.chinaunix.net/blog/upfile2/090815172648.gz

clip_p_w_picpath124

解压

tar zxvf 090815172648.gz

clip_p_w_picpath125

生成一个cacti-0.8.7e-cn-utf8文件夹

覆盖掉之前安装的英文版的

clip_p_w_picpath126

按住回车不放

clip_p_w_picpath127

然后我删除了原来的数据库cacti

进入数据库

然后drop database cacti;

clip_p_w_picpath128

重新创建数据库

mysql> create database cacti; 

mysql> grant all on cacti.* to 'cacti'@'localhost' identified by 'cacti'; 

mysql> flush privileges;

mysql>exit

clip_p_w_picpath130

把cacti表写进数据库

cd /var/www/html/cacti

mysql -ucacti -pcacti cacti < /var/www/html/cacti/cacti.sql

clip_p_w_picpath132

重启服务

clip_p_w_picpath134

FATAl:Cannot connect to MySQL server on ‘127.0.0.1’,Please make sure you have specified a valid MySQL database name in ‘include/config.php’

clip_p_w_picpath136

看来没覆盖掉原来的文件,把原来英文版的cacti文件夹删了

rm -rf /var/www/html/cacti

clip_p_w_picpath137

把中文的放过来

mv cacti-0.8.7e-cn-utf8 cacti

clip_p_w_picpath138

重新编辑config.php和global.php(貌似也可以不用编辑它)

向导界面也成中文的了

clip_p_w_picpath140

看这里写到配置文件是config.php,没有global.php

clip_p_w_picpath142

输入用户admin 密码 admin后出现强制让你修改密码的界面

clip_p_w_picpath143

全中文,还是这货看着舒服啊!

clip_p_w_picpath145

没图

clip_p_w_picpath146

手动刷新

php /var/www/html/cacti/poller.php --force

clip_p_w_picpath147

好多小方块,因为那些是中文,成了乱码

clip_p_w_picpath149

在设置里看下路径,RRDTool字体路径是空的

clip_p_w_picpath151

顺便说一个命令

locale -a是显示系统支持的所有字符集

clip_p_w_picpath152

我们来安装RRDTOOL所需的中文字体

yum install ruby -y这个貌似也可以不安装

clip_p_w_picpath153

先看下默认的字体包

ls /usr/share/fonts

只有dejavu和liberation两个目录

clip_p_w_picpath154

我们要安装一个ttfonts

在下面的链接里有很多

http://ftplike.com/index.aspx?q=ttfonts-zh_cn-2.14-6.noarch.rpm&t=Files&s=9768259-9768259&e=&a=0&f=&m=EXACT&c=50

我用的是下面这个  

ftp://ftp.cs.stanford.edu/pub/mirrors/centos/4.7/os/x86_64/CentOS/RPMS/ttfonts-zh_CN-2.14-6.noarch.rpm
clip_p_w_picpath156

安装rpm -vih ttfonts-zh_CN-2.14-6.noarch.rpm

提示……is needed by……

clip_p_w_picpath158

加参数--force --nodeps

rpm -vih ttfonts-zh_CN-2.14-6.noarch.rpm --force --nodeps

不用管后面的提示

clip_p_w_picpath160

再看字体目录,多了一个zh_CN

clip_p_w_picpath161

打开web页面里的路径

设置RRDTool默认字体路径为/usr/share/fonts/zh_CN/TrueType/gkai00mp.ttf保存,显示文件已找到!

150953897.png

正常了!

clip_p_w_picpath165

监控流量

打开设备里的主机,进去后选择SNMP版本,一般选1就行了

clip_p_w_picpath167

clip_p_w_picpath169

相关数据查询里添加SNMP-接口统计

clip_p_w_picpath170

选择为些设备生成图像

clip_p_w_picpath172

选择网卡,创建

clip_p_w_picpath174

过一会就有了

clip_p_w_picpath176

监控Windows

添加SNMP服务

clip_p_w_picpath177

重启后设置SNMP Service的安全里添加社区名称

我写的是public,对应snmp服务器里/etc/snmp/snmpd.conf里设置的

下面接收来自下列主机的SNMP数据包添加Cacti服务器的IP

clip_p_w_picpath179

完了后重启下snmp service服务

看任务管理器里都有点小区别了!

clip_p_w_picpath181

添加Window主机

主机模板选择Windows 2000/XP设备

snmp版本也是1

clip_p_w_picpath183

创建,选择相应的监视选项

clip_p_w_picpath185

我们在图像模板里可以打开相应的选项后选择 打开图像调试模式,可以查看有没有问题!当然要过一会打开才有效!,不要在刚添加完选项就打开,那样会导致你误判!

clip_p_w_picpath187

clip_p_w_picpath189

 

 

参考:

http://foreveryan.blog.51cto.com/3508502/727866

http://www.centos.bz/2012/01/cacti-install-tutorials/

http://www.linuxyan.com/linux-service/168.html

http://bbs.linuxtone.org/thread-7972-1-1.html

http://foreveryan.blog.51cto.com/3508502/775558

 

顺便说下

如果是admin 的密码丢失,id = 1;其他用户以此类推。

进入mysql  
mysql> show databases;  
mysql> use cacti;  
mysql> show tables;  
mysql> update user_auth set password=md5("newpassword") where id='1';

新的cacti密码就是newpassword了~~

下面这个问题虽然还没遇到,但留下来以备后用

流量图显示断断续续的。  
经过查找分析得出以下几个方面来解决。  
------------------------------------------------------------------------------------------------------------------------------------  
Tasks:  72 total,      2 running,  70 sleeping,      0 stopped,      0 zombie  
Cpu(s): 10.4% us,  6.1% sy,  0.0% ni, 41.9% id, 41.6% wa,  0.0% hi,  0.0% si  
Mem:      2074824k total,   2046988k used,     27836k free,         19880k buffers  
Swap:       779144k total,           208k used,       778936k free,  1841200k cached  
① 首先查看本服务器内存使用情况,如果本机内存使用达到 80% 以上后,流量图会出现断断续续的现象  
【解决方法】增加内存。  
------------------------------------------------------------------------------------------------------------------------------------  
② 查看 Cacti 版本信息,我现在的版本是 0.8.7c 版本,升级到最新版本后,流量图断断续续的情况消失。  
【解决方法】升级 Cacti 版本到最新。  
------------------------------------------------------------------------------------------------------------------------------------  
③ 设置流量刷新时间,由原来的每 5 分钟,更改为每 1 分钟更新一次。  
【解决方法】更改刷新时间。  
更改刷新时间的具体方法如下:
·在 Cacti 设置项中有两处需要更改  
·还在本服务器上更改 crontab-e 的时间。  
------------------------------------------------------------------------------------------------------------------------------------  
④ 用户冲突,比如有两个以上用户设置了crontab 的自动执行程序,导致用户频繁切换。  
可以通过查看 /rra下面的文件属性得知。  
------------------------------------------------------------------------------------------------------------------------------------  
⑤ SNMP 用 UDP 包通讯,有时会引起丢包。特别在远程网或压力大的时候。  
【解决方法】增大 timeout 时间  
------------------------------------------------------------------------------------------------------------------------------------  
⑥  php 脚本也是有 timeout 的.  
------------------------------------------------------------------------------------------------------------------------------------  
⑦ cacti 服务器,怎么只有图,没有数据,  
手动执行 # /usr/local/php/bin/php /usr/local/apache2/htdocs/cacti/poller.php  //很多时候都通过手动执行得到错误提示。  
提示 File size limit exceeded,原来是某个文件超过了系统限制文件的大小,用 find 命令查看比较大的文件,发现 cacti 的日志文件好大,清空了他的内容,然后过几分钟再去看图,数据出现了,这里也给我提示了个信息,不要把 cacti 调整到 debug 模式,否则很可能出现这样的问题。

http://bbs.linuxtone.org/thread-7468-1-1.html