在Windows服务器上开启SNMP代理程序

这里以Windows Server 2003为例,对于其它Windows服务器产品,方法类似。

首先你必须确认当前的Windows组件中是否已经安装了SNMP协议,很简单,在控制面板的“添加或删除程序”中,查看已安装的Windows组件,在“管理和监控工具”中你会发现“简单网络管理协议(SNMP)”,如果没有安装,则打勾进行安装,期间你可能需要定位Windows安装盘,这些对你来说并不困难。


SNMP组件安装成功后,接下来打开“管理”菜单中的“服务”。


找到SNMP Service,双击它进行配置。这里需要注意的是,在前边安装SNMP协议后,SNMP Service会默认启动,而它下边的SNMP Trap Service是不需要开启的,如果它已被开启,请关闭它。


在SNMP Service的配置窗口中,你只需要切换到“安全”选项卡,按照以下的图示进行填写,这里的团体名称就是前边介绍过的SNMP v2c版本中的密码字符串,这里的“public”只是一个例子,你可以填写其它的字符串,随后在监控宝中添加服务器时,选择2c协议,同时在Community输入框中填写这个团体名称即可。

另一个需要特别设置的地方是下边的授权主机,选择“接受来自这些主机的SNMP数据包”,然后在下边的指定主机中添加“60.195.249.83”,这是监控宝的专用监控点,这使得除此之外的其它服务器无法获取你的服务器监控信息。


一切配置好后,保证SNMP Service已经开启,并且如果以后重启了服务器,也请来检查是否开启了SNMP Service,当然,如果该服务被关闭,监控宝会在服务器监控视图中提醒你。

另外,还要保证你的服务器已经打开了SNMP Service的端口,默认为UDP 161。如果你启用了系统防火墙,那么请添加这个例外端口,打开本地连接->属性->高级->防火墙->例外,添加端口如下:

本地连接->属性->高级->防火墙->例外->

添加端口.


然后就可以在监控宝中添加服务器了。

 

在Linux服务器上开启SNMP代理程序

1、检查系统是否已经安装snmp的rpm包

以下是安装snmp服务需要的rpm包:

libsensors3-2.10.6-55.el5.i386.rpm

lm_sensors-2.10.6-55.el5.i386.rpm

net-snmp-libs-5.3.2.2-5.el5.i386.rpm

net-snmp-5.3.2.2-5.el5.i386.rpm

net-snmp-utils-5.3.2.2-5.el5.i386.rpm

推荐到http://rpm.pbone.net/下载这些rpm包,该网站比较全面,包含各种版本的包。

使用命令:$ rpm -qa|grep snmp

检查是否安装net-snmp-utils-5.3.2.2-5.el5,net-snmp-libs-5.3.2.2-5.el5,net-snmp-5.3.2.2-5.el5三个rpm包

使用命令:$ rpm -qa|grep libsen

检查是否安装libsensors3-2.10.6-55.el5

使用命令:$ rpm -qa|grep lm

检查是否安装lm_sensors-2.10.6-55.el5

说明:

(1)这几个包的安装有一定顺序,在安装的时候,会有提示。比如安装

net-snmp-5.3.2.2-5.el5.i386.rpm时,会提示必须先安装net-snmp-libs-5.3.2.2-5.el5.i386.rpm。

(2)net-snmp-utils-5.3.2.2-5.el5.i386.rpm并不是必须安装的包,但安装它会带来不少帮助,它提供了很多工具,例如可以使用snmptranslate命令查看oid,可以使用snmpget、snmpwalk命令等。

(3)net-snmp-libs-5.3.2.2-5.el5.i386.rpm、net-snmp-5.3.2.2-5.el5.i386.rpm、

net-snmp-utils-5.3.2.2-5.el5.i386.rpm这三个包有一定的版本要求,必须版本一致,否则安装无法成功。我这里都使用的5.3.2.2-5.el5版本,也可以下载其他版本的rpm包,但注意版本要一致,在安装的时候也会提示,哪个版本的包是必须的,你可以根据提示下载需要的包。

2、安装以上的几个rpm包

 

若系统中没有安装以上包,则先安装。

使用命令:rpm –ivh 包名

安装完后,使用命令:$ rpm -qa|grep snmp,检查是否已经安装成功。




3、启动snmp服务

若安装成功,则可使用命令:

$ service snmpd start

提示:Starting snmpd: [ OK ],则启动snmp服务成功。

你可以将snmp服务设置为开机自启动,这样免去手动启动的麻烦。

使用命令:$ chkconfig snmpd on,将snmpd服务设为开机自启动。

然后使用命令:$ chkconfig --list | grep snmpd,查看是否已经设置成功。

4、验证snmp服务

(1)使用snmpwalk命令,查看本机localhost的主机名:

如上,获取到本机主机名为oracle.domain.com,则表示snmp服务已经可以正常使用。

(2)使用snmptranslate命令,检查snmp工具是否可以使用:

 

如上,查出了部分oid,则表示snmp工具可以正常使用。

(3)测试远端主机是否可以获取数据。

我这里登陆了另外一台Linux主机,该主机也按照上面的步骤安装好snmp服务及snmp工具。通过这台主机,获取远端主机的数据,这时需指定远端主机的IP地址:

如上,可以看到通过远端主机获取到的主机名,与在本机获取到的主机名是一致的。




 

二、配置snmp服务

以上安装完成后,使用的是snmp的默认配置,通过这些默认配置,我们只能获取主机的部分信息。但一些其他的重要信息,无法获取。如主机的CPU使用情况,内存使用情况等。

如上,无法获取CPU的空闲率(注:1.3.6.1.4.1.2021.11.11.0是主机CPU空闲率的oid)。

这时候,若要获取主机的一些重要信息,则要修改snmp的默认配置。

配置方法:修改/etc/snmp/snmpd.conf文件

1、修改查看设备节点的权限

在该文件中,找到如下位置:

view:定义了可以查看哪些节点设备的信息。

snmp默认配置只能查看.1.3.6.1.2.1.1和.1.3.6.1.2.1.25.1.1节点下的设备信息,而主机CPU和内存等设备都不在这些节点下,所以无法获取这些数据。

因此,可以修改这个配置,如下:

在此处添加了一行:

view systemview included .1

表示可以查看.1节点下的所有设备信息。




 

2、修改Process checks的配置

找到如下位置:

# proc mountd

# proc ntalkd 4

# proc sendmail 10 1

三行前的“#”号去掉,取消注释,结果为:




3、修改Executables/scripts配置

找到如下位置:

#exec echotest /bin/echo hello world

一行前的“#”号去掉,取消注释。




 

4、修改disk checks配置

找到如下位置:

#disk / 10000

一行前的“#”号去掉,取消注释。




 

5、修改load average checks配置

找到如下位置:

将 #load 12 14 14

一行前的“#”号去掉,取消注释。

6、保存修改,重启snmp服务

7、验证修改配置后的snmp服务

如上,通过本机localhost获取到CPU的空闲率为97%。

如上,通过远端主机获取到CPU的空闲率为93%。