这篇文章我们主要讲解NET-SNMP的安装过程。
在描述NET-SNMP安装过程之前,我们先来说一下什么是SNMP。
(以下内容译自官方网站:http://www.net-snmp.org)
Simple Network Management Protocol (SNMP) 是一个被广泛使用的协议,可以监控网络设备(比如路由器)、计算机设备甚至是UPS。Net-SNMP是用于实施SNMP v1,SNMP v2,SNMPv3的应用程序套件,可以使用在IPv4、IPv6的环境中。这个套件包括:
* 命令行程序包括:
+从支持SNMP的设备中检索信息的命令。用于执行单个的请求(snmpget,snmpgetnext),或者执行多个请求(snmpwalk,snmptable,snmpdelta)。
+可以用于手动设置信息的命令(snmpset)。
+检索一套固定信息的命令(snmpdf,snmpnetstat,snmpstatus)。
+可以把MIB oid的信息在“数字”形式和“字符”形式之间进行转换的命令(snmptranslate),它还能显示MIB的内容和结构。
*使用Tk/perl来提供一个图形化的MIB浏览器(tkmib)。
*一个接收SNMPtrap信息的daemon。经过选择的snmp通知信息可以被日志记录(记录在syslog,或者NT的日志,或者文本文件),转发到另一个SNMP管理系统,或者传递到其它的程序。
*一个可扩展的代理程序(snmpd),用于对管理系统提出的SNMP请求做出响应。这包括了内建的多种支持性:
支持广泛的MIB信息模块,可以使用动态加载的模块进行扩展,可以使用外部的脚本和命令进行扩展,对多路复用SNMP(SMUX)和代理可扩展性协议(AgentX)的支持。
*包括一个库,用于支持对新的SNMP开发,支持C和Perl API。
Net-SNMP对于许多的UNIX和类UNIX操作系统都是支持的,也支持windows。注意:对于不同的系统功能会有所变化。请阅读你所在平台的README文件。
如果你的服务器上没有安装NET-SNMP或者其他用于实施SNMP协议的软件,那么你安装MRTG就会报错了。
下面,我们开始。
1. 下载NET-SNMP
cd ~
wget http://jaist.dl.sourceforge.net/sourceforge/net-snmp/net-snmp-5.4.1.tar.gz
如果是SunOS,安装源码包就比较麻烦了,安装二进制包相对简单。
但是不同版本的SunOS需要下载不同版本的二进制包,首先要先确定你的系统是什么版本:
uname -a
SunOS ws01 5.9 Generic_122300-03 sun4u sparc SUNW,Sun-Fire-V240
5.9意思是Solaris9
在这个Solaris9的系统上,我就必须下载net-snmp_5.2.2-SunOS_5.9_sun4u.tar.gz这个版本了。
wget ftp://ftp.freesnmp.com/mirrors/net-snmp/net-snmp_5.2.2-SunOS_5.9_sun4u.tar.gz
但是二进制包目前我只找到了5.2.2版本,如果不满足要求,那么你就必须使用最新版的,需要进行编译了。
当然,也可以使用sunfreeware上面提供标准solaris安装包
wget ftp://ftp.sunfreeware.com/pub/freeware/sparc/9/netsnmp-5.4.1-sol9-sparc-local.gz
2. 安装NET-SNMP
gunzip -c net-snmp-5.4.1.tar.gz | tar xf -
cd net-snmp-5.4.1
./configure
make
#编译时如果出现:
grep: /usr/lib/libbeecrypt.la: No such file or directory
说明缺少libbeecrypt.la ,libbeecrypt.so等共享库
如果确认系统中有libbeecrypt.la,也许他安装在/usr/local下面,可尝试:
ln -s /usr/local/lib/libbeecrypt.la /usr/lib/libbeecrypt.la
如果/usr/local下面没有,那么你必须安装beecrypt
cd ~
wget http://nchc.dl.sourceforge.net/sourceforge/beecrypt/beecrypt-4.1.2.tar.gz
gunzip -c beecrypt-4.1.2.tar.gz | tar xvf -
./configure -prefix=/usr
#默认是安装在/usr/local,我们需要安装在/usr目录下。如果没有加这个参数需要做连接
ln -s /usr/local/lib/libbeecrypt.la /usr/lib/libbeecrypt.la
make && make install
好,beecrypt安装完成后,我们继续NET-SNMP的编译
cd ../net-snmp-5.4.1
make
make install
在SunOS的安装方法再稍微提一下
cd ~
gunzip netsnmp-5.4.1-sol9-sparc-local.gz
pkgadd -d netsnmp-5.4.1-sol9-sparc-local
NET-SNMP会被安装到/usr/local目录下。
这样,NET-SNMP就算安装好了,但是如果要正常的运行它,还有些工作要做。
3. 运行NET-SNMP
首先查看当前系统的snmpd命令是否是你刚刚安装的版本
snmpd -v
NET-SNMP version: 5.4.1
Web: http://www.net-snmp.org/
Email: [email protected]
出现这个结果,这就表示现在系统默认的smpd就是你刚刚安装的那个,如果不是,那么你需要检查一下是否有老版本的存在。
按照我以上的方法,snmpd应该被安装在:
which snmpd
/usr/local/sbin/snmpd
如果是SunOS,运行snmpd的时候可能会提示:
ld.so.1: snmpd: fatal: libcrypto.so.0.9.8: open failed: No such file or directory
这个问题的原因应该和在Linux上的那个问题一样的。
解决方法:
首先确认你的LD_LIBRARY_PATH
vi /etc/profile
LD_LIBRARY_PATH=/usr/lib:/usr/local/lib:/usr/local/ssl/lib
然后做连接:
cd /lib
ln -s /usr/local/ssl/lib/libcrypto.so.0.9.8
如果没有/usr/local/ssl/这个目录,那么说明你没有安装OpenSSL,你需要先安装OpenSSL-0.9.8i,安装方法这里暂且不谈。
以上工作都完成以后,那么你的snmpd就可以运行了。
4. 编辑配置文件snmpd.conf
创建配置文件snmpd.conf,可以使用命令:
snmpconf -g basic_setup
回答问题即可,但是较麻烦,手工创建很简单。
vi /usr/local/share/snmp/snmpd.conf
syslocation "SHANGHAI P.R.China"
syscontact [email protected]
rocommunity whatever
rwcommunity whoareyou
#这个rocommunity和rwcommunity的值你可以自己定义
snmpd.conf文件只写上面四句话就足够了。
运行snmpd:
/usr/local/sbin/snmpd
测试snmpd运行是否正常:
snmpget -v 1 -c whatever localhost sysUpTime.0
snmpwalk -v 2c -c whatever -m ALL localhost .1.3 | more
在Linux系统上到这一步一般不会出现什么问题,在SunOS上可能会有问题。
如果有问题,还可以尝试:
/usr/local/sbin/snmpd -f -Le
或者:
cd /usr/local/sbin
gdb snmpd
run -f -Le
到这里,NET-SNMP的安装和运行就结束了。如果你安装过程中遇到什么疑难杂症欢迎发邮件给我。
最后,Good Luck!
2008年10月7日更新:
如果你的服务器上有两块网卡配置的IP地址是一样的,例如:你将两块网卡做了bond,那么在运行net-snmp-5.4.1的时候/var/log/snmpd.log会报这样的错误:
error on subcontainer '' insert (-1)
这个问题已经被证实是NET-SNMP的BUG,安装5.4.2以上版本就没有这个问题了。
BUG:http://sf.net/support/tracker.php?aid=1693039
PATCH:http://sf.net/support/tracker.php?aid=1712645
5.4.2发布说明上写的很清楚,第一条就是:
http://www.net-snmp.org/wiki/index.php/5.4.2_open_issues