咨询电话:010-82823766

用cacti代替mrtg来监控交换机
  • 2008-2-28 11:01:41
  • 发表时间:
  • 浏览次数:
  • 本站原创
  • 文章来源:
  • 佚名
  • 作者:

看最近问cacti的人多了,把以前安装的记录整理一下发过来,希望有所帮助。

1:准备过程
apache、mysql安装的帖子太多了,不再重复。
注意php要装/usr/ports/lang/php4,否则是不行的,/usr/ports/lang/php4-extensions/和ZendOptimizer也装上,这样就够了。
2:安装cacti

安装rrdtool

cd /usr/ports/net/rrdtool
make install clean;

安装net-snmp

cd /usr/ports/net-mgmt/net-snmp
make install clean;

ee /etc/rc.conf

snmpd_enable="YES"
snmpd_flags="-a -p /var/run/snmpd.pid"
snmptrapd_enable="YES"
snmptrapd_flags="-a -p /var/run/snmptrapd.pid"


mkdir /usr/local/etc/snmp
ee /usr/local/etc/snmp/snmpd.conf

##############################
syslocation  somewhere

syscontact  Me <[email]me@somewhere.org[/email]>

sysservices 77

rocommunity jxtm

load 12 12 12
###############################


7、安装cacti 
注意:0.8.6f以下的版本有SQL注入漏洞

cd /usr/ports/net/cacti
make install FORCE_PKG_REGISTER=yes clean ;
因为mysql-client已经装过了,所以需要加上FORCE_PKG_REGISTER=yes


cd /usr/ports/net/cactid
make install clean;

数据库准备工作 

# mysql -u root -p 
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 130 to server version: 4.1.15-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> create database cactidb; 
Query OK, 1 row affected (0.00 sec) 

mysql> grant all on cactidb.* to root; 
Query OK, 0 rows affected (0.01 sec) 

mysql> grant all on cactidb.* to root@localhost; 
Query OK, 0 rows affected (0.01 sec) 

mysql> grant all on cactidb.* to cacti; 
Query OK, 0 rows affected (0.00 sec) 

mysql> grant all on cactidb.* to cacti@localhost; 
Query OK, 0 rows affected (0.01 sec) 

mysql> set password for cacti@localhost=password('123456'); 
Query OK, 0 rows affected (0.00 sec) 

mysql> exit 

导入数据库
cp -R /usr/local/share/cacti /usr/www/cacti
我的apache主目录用了/usr/www,你可以根据实际更换
cd /usr/www/cacti

chown -R cacti:cacti rra/
chown -R cacti:cacti log/

cd scripts
chown cacti:cacti *

mysql -u root -p123456 cactidb < cacti.sql 

ee /usr/www/cacti/include/db-settings.php

$database_type = "mysql"; 
$database_default = "cactidb"; 
$database_hostname = "localhost"; 
$database_username = "cacti"; 
$database_password = "123456";
核对以上几项是否正确

crontab -u cacti -e 
为cactiuser用户加入 
*/5 * * * * /usr/local/bin/php /usr/www/cacti/poller.php
##############################################################################


页面设置: 

在浏览器上输入: 
http://******/cacti
进入cacti的初始设置页面: 
1:选择New Install
2:
RRDTool Binary Path: The path to the rrdtool binary.
/usr/local/bin/rrdtool
PHP Binary Path: The path to your PHP binary file (may require a php recompile to get this file).
/usr/local/bin/php
snmpwalk Binary Path: The path to your snmpwalk binary.
/usr/local/bin/snmpwalk
snmpget Binary Path: The path to your snmpget binary.
/usr/local/bin/snmpget
Cacti Log File Path: The path to your Cacti log file.
/usr/www/cacti/log/cacti.log
SNMP Utility Version: The type of SNMP you have installed. Required if you are using SNMP v2c or don't have embedded SNMP support in PHP.
5.X
RRDTool Utility Version: The version of RRDTool that you have installed.
1.2.X

输入原始的用户和密码:admin/admin 
更改admin用户的密码 

安装完成!

后续设置:

RRDTool Default Font Path
The path to the rrdtool default true type font for version 1.2 and above.

/usr/local/share/rrdtool/fonts/DejaVuSansMono-Roman.ttf
##这个要写全,否则会发现出来的图有数据,但是图例说明不显示
Cactid Poller File Path
The path to Cactid binary.
/usr/local/bin/cactid

3:监控交换机
我们的cisco6509比较老了,相关命令都差不多
set snmp rmon enable
set snmp trap enable
set snmp community read-only mrtg
还有cisco3524的:
conf t
snmp-server community sl ro
snmp-server host *.*.*.* trap sl
这个*.*.*.*是你做监控用的机器地址
snmp-server enable traps
exi
wr
这是华为交换机的方法,这是台quidway3952p
sys
snmp-agent community read xqssl2l
snmp-agent trap enable
snmp-agent sys-info version all
snmp-agent target-host trap address udp-domain *.*.*.* udp-port 161 params securityname xqssl2l v1
quit
save
我这测试的比较简单,用的snmp v1,相关设置可参考各交换机的手册。交换机上设置了以后在cacti里面的操作就很简单了,只需要把相应的community字段填对就行。

4:FAQ:

##############################################################################################
#
#可以取到本机(linux)的数据,但却不能取到远程主机的数据?
#
##############################################################################################
Cacti有很多模板,有的是用SNMP进行数据采集,有的是用shell脚本进行采集。如果没有特别的原因建议都使用SNMP的。
Associated Graph Templates前面带"ucd/net"的就是能使用ucd-snmp和net-snmp的模板。如:ucd/net - CPU Usage
Associated Data Queries前面带SNMP的就是能使用snmp的。如:SNMP - Interface Statistics      当然,你还可以从www.cacti.net上找到新的模板或添加自己的模板。
##############################################################################################


##############################################################################################
#
#我以前用MRTG进行流量的监测,是否可以将MRTG中的数据导入到Cacti中呢?
#
##############################################################################################
相信大家使用MRTG都有一段时间了,如果想要转换为RRDTool和Cacti,但又不想丢失之前的数据,怎么办呢?由于MRTG和RRDTool的作者都是同一个人,所以其实数据转换是非常简单的事情。不过,如果要将MRTG的数据转为Cacti使用,还是需要几个步骤的。(转换前需要先安装RRDTool)

1、备份MRTG的数据
因为要保证数据的连续性,所以需要复制一份mrtg的数据进行更改。

1.1、复制整个mrtg的work dir


CODE:[Copy to clipboard]cp -rf /path/to/your/workdir /path/to/your/workdir2
1.2、复制和更改mrtg.conf


CODE:[Copy to clipboard]cp /path/to/your/mrtg.cfg /path/to/your/mrtg2.cfg
vi /path/to/your/mrtg2.cfg 
将Work Dir更改为/path/to/your/wordir2

1.3、添加crontab给mrtg2
# crontab -e
添加


CODE:[Copy to clipboard]*/5 * * * * (/bin/mrtg /path/to/your/mrtg2.cfg --logging=/path/to/your/mrtg2.log)
保存。

这样就让两份mrtg脚本一起运行,保证了数据的连续性。


2、将数据由mrtg格式更改为rrd格式

2.1、更改配置文件


CODE:[Copy to clipboard]vi /path/to/your/mrtg2.cfg
添加:


CODE:[Copy to clipboard]LogFormat: rrdtool
PathAdd: /path/to/your//rrdtool/bin/
LibAdd: /path/to/your/rrdtool/lib/perl/
PathAdd和LibAdd是rrdtool的路径。

2.2、更改数据格式
手工运行


CODE:[Copy to clipboard]/bin/mrtg /path/to/your/mrtg2.cfg
然后
cd /path/to/your/mrtgdir2,
查看数据是否由log的后缀名变为rrd的后缀名,如果变了即转换成功了!


3、导入到cacti中
由于Cacti中每一台主机的每一张图的数据都保存在一个文件中,需要一个一个文件进行导入。
以某台主机(10.10.10.10)的ETH0网卡为例:

3.1、找出Cacti的数据名称
将10.10.10.10_1.rrd拷到/path/to/cacti/rra文件夹中(也可以先备份rra文件夹)。

在cacti中的Data Sources-》10.10.10.10-》Supplemental Data Template Data-》Data Source Path右边的文本框中找到其对应的RRD文件的路径和文件名,比如


CODE:[Copy to clipboard]<path_rra>;/10.10.10.10_traffic_in_45.rrd。
3.2、更改数据的名称和DS名
返回Cacti主机,进行如下操作:


CODE:[Copy to clipboard]cp 10.10.10.10_1.rrd 10.10.10.10_traffic_in_45.rrd
/path/to/rrdtool/bin/rrdtool tune -r ds0:traffic_in    
/path/to/rrdtool/bin/rrdtool tune -r ds0:traffic_out  
chown cactiuser:cacti 10.10.10.10_traffic_in_45.rrd        
解释:MRTG与Cacti定义的DS名称不同,所以需要更改其DS名称;
      如果有很多个数据,可以用脚本进行批量更改;
      chown可以在全部完成后用“*”匹配,但为了保持数据完整性建议还是5分钟内chown一次

3.3、结束
点击cacti的Graph Management里面10.10.10.10监测点的右上角“Turn on Graph Debug Mode”是否有错误。

如果图形能显示即转换成功!
##############################################################################################


##############################################################################################
#
#为什么我的流量达到100M以上图像就不准呢?
#
##############################################################################################
这与snmp的版本有关,snmp1的数据是32位而snmp2c以上是64位。
首先要确定你使用的是snmp2c或以上(现在的网络设备一般都支持)。然后点击Cacti的页面:"Console ->; Create New Graphs ->;Data Query"。你在下面看到"Select a graph type:"的下拉菜单(默认是"In/Out bits"),要取64bits的数据所以将其改为
"In/Out bits(64-bit Counters)",然后选择你要监测的网卡即可。 
另外,该监测点的"Maximum Value"必须设置为100M以上。       如果是Linux主机要监测100M以上的流量(一般不会发生),需要带"--enable-mfd-rewrites"参数重新编译最新的net-snmp。
##############################################################################################



##############################################################################################
#
#09/02/2005 02:59:58 PM - POLLER: Poller[0] Maximum runtime of 296 seconds exceeded. Exiting,什么意思?
#
##############################################################################################
应该是你的监测点设置太多,导致cacti通过snmpget取完所有数据的时间超过300秒。        Cacti的作者一早就考虑到这问题,所以在cacti中有两种解决方法:
1、将POLLER更改为cactid。
默认的POLLER是cmd.php,而cactid是使用C写的程序,效率会比cmd.php高几倍!
注意,虽然POLLER的选项中有cactid的选择,但cactid默认并没有安装,所以即使你选择了它也不会生效的。
你可以从这里(http://www.cacti.net/cactid_download.php)下载cactid的源码或rpm(bin)文件进行安装。然后在PATH中指定cactid的路径即可。

2、在POLLER的设置中加大cmd.php的进程数,即同时运行多个cmd.php进行数据的采集。但这样的话会加重你的系统负载。
如果你的机器性能太差,建议还是改用cactid为好。 

PS:当磁盘空间满的时候会出现这个问题,原因是磁盘空间慢导致snmpget的时间变长。
##############################################################################################

top
推荐导读
推荐导读
bottom
top
热门文章
热门文章
bottom