解决 64位的OS cacti 无法获取 网卡流量的方法

解决 64位的OS cacti 无法获取 网卡流量的方法

前几天项目组进行测试,所以要对 N台服务器,进行 流量监视。

所有的东东都搞好了,但是 有几台server 就是无法获取网卡流量。着实费了一番功夫。才发现 原来 系统是64位的。
下面我将解决方法介绍给大家,希望能帮到CUER。

检查一下是否是64位的OS?

# uname -a
Linux fxd-ap11 2.6.9-34.ELsmp #1 SMP Fri Feb 24 16:56:28 EST 2006 x86_64 x86_64 x86_64 GNU/Linux

以上就表明是了。

# rrdtool fetch fxd-mdl11_traffic_in_365.rrd AVERAGE
按照以上命令执行如果结果输出为:
1197990600:  nan  nan
1197990900:  nan  nan
1197991200:  nan  nan
1197991500:  nan  nan
1197991800:  nan  nan
1197992100:  nan  nan

则表示snmp获取数据有问题

用以下命令检查:
# snmpwalk -c public -v 2c 10.11.31.121 IF-MIB::ifHCInOctets

输出内容如下,表明不支持64位MIB库。
IF-MIB::ifHCInOctets = No Such Object available on this agent at this OID

需要重新安装snmpd支持64位MIB库,但是正常用源码包安装时在make的时候会出现error,无法继续,
解决方法:
在源码包下config后,先不要make,请先修改以下两个文件。

# vi apps/Makefile
TRAPDWITHAGENT  = $(USETRAPLIBS) -ldl -lrpm -lrpmio -lpopt  -lz -lcrypto -lm
替换成:
TRAPDWITHAGENT  = $(USETRAPLIBS) -ldl -lrpm -lrpmio /usr/lib64/libpopt.so  -lz -lcrypto -lm
# vi agent/Makefile
LIBS            = ../snmplib/libnetsnmp.$(LIB_EXTENSION)$(LIB_VERSION) -ldl -lrpm -lrpmio -lpopt  -lz -lcrypto -lm  $(PERLLDOPTS)
替换成:
LIBS            = ../snmplib/libnetsnmp.$(LIB_EXTENSION)$(LIB_VERSION) -ldl -lrpm -lrpmio /usr/lib64/libpopt.so  -lz -lcrypto -lm
然后在进行make && make install

停止当前linux自带的snmpd,通过daemoonls启动新安装的snmpd就可以了。
这时在用snmpwalk检测,支持64位MIB库了,过一会流量监视的图片也出来了!
# snmpwalk -c public -v 2c 10.11.31.121 IF-MIB::ifHCInOctets
IF-MIB::ifHCInOctets.1 = Counter64: 2400309170
IF-MIB::ifHCInOctets.2 = Counter64: 256326257624
IF-MIB::ifHCInOctets.3 = Counter64: 0
IF-MIB::ifHCInOctets.4 = Counter64: 624808037429
IF-MIB::ifHCInOctets.5 = Counter64: 0
IF-MIB::ifHCInOctets.6 = Counter64: 0
IF-MIB::ifHCInOctets.7 = Counter64: 0
IF-MIB::ifHCInOctets.8 = Counter64: 0
32位的是不是就没有这个问题了?!
CACTI在监控千兆网卡时,需要把网卡类形选成64位的。


QUOTE:
原帖由 mageguoshi 于 2007-12-21 14:57 发表
32位的是不是就没有这个问题了?!

没有这个问题!!!
我的snmp是用rpm包安装的,不想装二进制包,有没有什么方法能解决呀?