Cacti基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具

Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。它通过snmpget来获取数据,使用RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善,界面友好。
  虽然 MRTG是一套非常好用的软件但是它毕竟是一套很旧的软件了,其作者在多年前已经开发出 RRDTool 代替该软件,现在已经发展的很成熟了,但由于RRDTool 的指令非常复杂,对于使用者非常的麻烦,幸运的是有一套软件 Cacti 的发展就是基于让 RRDTool使用者更方便使用该软件,除了基本的 Snmp 流量跟系统资讯监控外,Cacti 也可外挂 Scripts 及加上 Templates来作出各式各样的监控图
  Cacti中文站点&社区
  http://www.cacti.com.cn/ 中文站点
  http://www.cacti.com.cn/newbbs/ 中文社区
  相关下载:
  CactiEZ中文版V9,基于RHEL5.2,支持更多的硬盘和阵列卡,系统更稳定,支持中文页面和中文图形,美化字体。
  使用说明:
  root密码: CactiEZ
  登录系统后,请尽快修改root密码。
  Cacti登录用户名: admin
  Cacti登录密码: admin
  第一次登录Cacti需要修改密码。

Cacti的工作流程




安装必要软件
#apt-get install apache2 libapache2-mod-php5 php5 php5-cli php5-mysql php5-gd php5-snmp mysql-client mysql-server-5.0 libmysqlclient15-dev

安装snmp snmpd
Snmp关系着数据的收集
#apt-get install snmp snmpd

安装 rrdtool
snmp抓到数据不是存储在mysql中,而是存在rrdtool生成的rrd文件中
rrdtool的作用只是存储数据和画图
#apt-get install rrdtool

安装cacti
#cd /var/www/
#wget http://www.cacti.net/downloads/cacti-0.8.7b.tar.gz
#tar –zxvf cacti-0.8.7b.tar.gz
#cd cacti-0.8.7b.tar.gz

配置apache2别名
#vim /etc/apache2/sites-enabled/001-cacti

Alias /cacti/ "/var/www/cacti-0.8.7b/"
<Directory "/var/www/cacti-0.8.7b/">
      AllowOverride   None
      Order   Allow,Deny
      Allow from all
</Directory>


配置Mysql数据库
#mysql -u root
修改数据库密码
mysql> SET PASSWORD FOR root@localhost = PASSWORD ('123.com');
创建cacti数据库
mysql> CREATE DATABASE cacti;
设置cacti用户访问cacti数据库
mysql> GRANT ALL ON cacti.* TO cacti @localhost IDENTIFIED BY '123.com';
mysql> quit


导入cacti数据库
cd /var/www/cacti-0.8.7b/
mysql -u root -p cacti < cacti.sql


配置cacti的数据库连接帐号密码
#cd /var/www/cacti-0.8.7b/
#vim include/config.php

$database_type = "mysql";$database_default = "cacti";$database_hostname = "localhost";$database_username = "cacti";$database_password = "cacti";$database_port = "3306";保证 rra log 所有用户都可以读写Chmod
-R 777/var/www/cact
i-0.8.7b/rraChmod
-R 777/var/www/cact
i-0.8.7b/log

定时crontab运行cacti的收集数据程序
#crontab -e
*/5 * * * * php /var/www/cacti-0.8.7b/poller.php > /dev/null 2>&1

5分钟后在/var/log/syslog 中查看是否成功执行
#tail /var/log/syslog

(root) CMD (/usr/bin/php /var/www/cacti-0.8.7b/poller.php > /dev/null 2>&1)




重启apache2
#apache2clt restart



整个程序执行都是以root身份来执行的,如果想要自己创建用户来执行也可以
如创建cacti用户
要保证cacti-0.8.7b目录下的rra文件 cacti用户能读写及能执行命令:
/usr/bin/php /var/www/cacti-0.8.7b/poller.php

注意:首次执行poller.php时请使用cacti用户,否则生成的rrd文件cacti将没有写入权限。




到这里,cacti的安装在server上完成了
接下来在浏览器中输入
http://yourserver/cacti/
会见到cacti的安装界面,进行new install,基本上都没有什么需要修改的,稍微看一下,next就好了。
初次登录,用户名和密码都是admin

cacti报警功能序~~~~thold下email和msn报警

原来做nagios。后来由于glibc的版本问题,报警功能搁浅了
公司从mrtg到cacti和nagios也有半年多了吧
最近才从黑客安全里面出来,所以才回头来继续做cacti下的监控报警

关于cacti的安装,网上很多很多方法,或者就下载cactiEZ自动安装就好了
我原来也做过手工安装cacti方法,自己blog里面找。
http://www.6xuan.com/read.php/246.htm

======================================

下面记下关于email报警的问题

如果你是手工编译cacti安装的话,那么那么需要安装插件thold
下载地址http://mirror.cactiusers.org/downloads/plugins/thold-0.3.9.tar.gz
安装Threshold插件。
将解压出来的Thold目录拷贝到cacti/plugins/目录下,并修改cacti配置文件(cacti目录下的include/config.php)。
在配置中查找$plugins = array();行
在此行下面加入:
$plugins[] = 'thold';
如果你是安装的cactiEZ的话,那么这个插件已经自带的了。就不用在安装了~~~

===================================================
我们接下来开始配置
我们现在想监控的是交换机端口流量大于10M,那么自动会发email和MSN信息给指定人。
因为thold是0.3.9版本,所以里面的一些设置可能和老版本不大一样

1.Console -> Cacti Settings-Alerting/Thold 选项
下面这些都是主意修改的地方
BaseURL                 这个会自动发现不用写
Syslogging                 这个勾要选择,不然他不会给你发邮件
Dead HostsNotifications   这个要选择
Dead Host Notification Email  这个是主机down掉会发邮件通知谁(这里写自己的邮局,我的就是aiyomama@aiyomama.cn
From EmailAddress   写邮件的发送方  这边为了醒目,我就写xxxxxxxx@aiyomama.cn
FromName            写problem alert
其余的默认就好

Console -> Cacti Settings --Mail / DNS 选项
MailServices   我用的是SMTP ,根据自己的选择,但是大部分情况用sendmail会出错+
From EmailAddress   xxxxxxxx@aiyomama.cn
FromName          problem alert
SMTP Options中都要写真实的自己的邮局,不然smtp的发信机制会发布出去
SMTPHostname    写自己的,我的是mail.aiyomama.cn
SMTPPort          25
SMTPUsername      ehco@aiyomama.cn
SMTPPassword       xxxx
下面的dns自己写
然后
TestEmail          这边填写测试邮箱名字test@aiyomama.cn
完成了这些,点击右上角的Send a Test Email
这个时候在新窗口出现
Checking Configuration...
Method: SMTP
Creating Message Text...

This is a test message generated from Cacti. This message was sentto test the configuration of your Mail Settings.
Your email settings are currently set as follows
Method: SMTP
Host: mail.aiyomama.cn
Port: 25
Authenication: true
Username: echo@aiyomama.cn
Password: (Not Shown for Security Reasons)



Sending Message...

Success!

那么代表ok了.

2.
由于cacti里面自带的没有我需要的,不是很直观,而且换算来换算去很麻烦,网上搜索了下自己定义CDEF,可以很好的显示流量。
Create a Console->GraphManagement->CDEF->add
“Byte to Mbits”---这个事名称
Item Item Value
Item #1 Special Data Source: CURRENT_DATA_SOURCE
Item #2 Custom String: 8
Item #3 Operator: *
Item #4 Custom String: 1024
Item #5 Operator: /
Item #6 Custom String: 1024
Item #7 Operator: /
就是:cdef=CURRENT_DATA_SOURCE,8,*,1024,/,1024,/
数据源 * 8 / 1024 / 1024 (Mbits)
现在我们就可以在Threshold Templates添加监控流量的模板了
3、Threshold Templates--ADD---Interface-Tffic--traffic_in/out--下一步
High Threshold  这里我填写10  意思就是超过10M那么就自动报警
ThresholdCDEF    选择Byteto Mbits
Alert E-Mail   通知email,我填写aiyomama@aiyomama.cn
其余的都是默认就好了
4.Management--Devices 选择相应的设备名
选择Create Graphs for this Host ---Auto-create thresholds
他会自行创建!
5.Management---Thresholds 里面可以看到显示信息。如果流量大于10兆,那么就是红色显示

Email发信目前就算完成了!其余就是测试了或者根据自己的需要修改发送时间!

其中一些方案来自
http://www.hiadmin.com/cacti%e9%85%8d%e7%bd%aee-mail%e6%8a%a5%e8%ad%a6/
http://blog.s135.com/category_12.htm
http://www.aiyomama.cn/2009/0204/29888.html



==============================================================
=========================================================
===================================
==1.发送邮件报警错误
Checking Configuration...
Creating Message Text...

This is a test message generated from Cacti. This message was sentto test the configuration of your Mail Settings.

Your email settings are currently set as follows

Method: Sendmail
Sendmail Path: /usr/sbin/sendmail

Sending Message...

ERROR: DirectInject command output: 'Recipient names must bespecified ' error: ''
DirectInject command output: 'Recipient names must be specified 'error: ''

===================
那么setting---mail/DNS选项或者alert选项中,把sendmail发信机制改成smtp

2.如果出现553.3.8.2 认证错误,那么请填写正确smtp信息
比如用户名密码

上一篇: 轻量级Ajax js库 (搜狗实验室技术交流文档 )   下一篇: phpmailer用QQ的SMTP服务器发送邮件出现的错误。

提交疑问

回顶部