一、进入光盘目录安装所需软件包
# cd /media/RHEL_5.6\ i386\ DVD/Server
net-snmp以及所有相关包如下:
net-snmp-5.3.2.2-9.el5_5.1.i386.rpm
net-snmp-devel-5.3.2.2-9.el5_5.1.i386.rpm
net-snmp-libs-5.3.2.2-9.el5_5.1.i386.rpm
net-snmp-perl-5.3.2.2-9.el5_5.1.i386.rpm
net-snmp-utils-5.3.2.2-9.el5_5.1.i386.rpm
注意:安装时要遵循如下顺序
1.先安装net-snmp-lib这个软件包
[root@test Server]# rpm -ivh net-snmp-libs-5.3.2.2-9.el5_5.1.i386.rpm
warning: net-snmp-libs-5.3.2.2-9.el5_5.1.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
package net-snmp-libs-5.3.2.2-9.el5_5.1.i386 is already installed
2.按下来安装net-snmp-5.x时会报错(是包依赖关系)
[root@test Server]# rpm -ivh net-snmp-5.3.2.2-9.el5_5.1.i386.rpm
warning: net-snmp-5.3.2.2-9.el5_5.1.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
error: Failed dependencies:
libsensors.so.3 is needed by net-snmp-5.3.2.2-9.el5_5.1.i386
在网上搜了搜,说是得先安装这样一个包“lm_sensors-*”,安装完后问题解决
[root@test Server]# rpm -ivh lm_sensors-*
warning: lm_sensors-2.10.7-9.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:lm_sensors ########################################### [ 50%]
2:lm_sensors-devel ########################################### [100%]
3.安装net-snmp-5.x软件包
[root@test Server]# rpm -ivh net-snmp-5.3.2.2-9.el5_5.1.i386.rpm
warning: net-snmp-5.3.2.2-9.el5_5.1.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:net-snmp ########################################### [100%]
4.安装net-snmp-perl以及net-snmp-utils包 备注:net-snmp-devel包无需安装。
[root@test Server]# rpm -ivh net-snmp-perl-5.3.2.2-9.el5_5.1.i386.rpm
warning: net-snmp-perl-5.3.2.2-9.el5_5.1.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:net-snmp-perl ########################################### [100%]
[root@test Server]# rpm -ivh net-snmp-utils-5.3.2.2-9.el5_5.1.i386.rpm
warning: net-snmp-utils-5.3.2.2-9.el5_5.1.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:net-snmp-utils ########################################### [100%]
如linux所在主机可以上外网,通过yum安装更为方便,命令如下:
yum install net-snmp* (主要安装net-snmp net-snmp-devel net-snmp-utils net-snmp-libs 组件)
yum install lm_sensors (用于监控主板,CPU的工作电压,风扇转速、温度等数据。)
1. 在 # name incl/excl subtree mask(optional)
命令行后插入 view allview included .1
表示可以查看.1节点下的所有设备信息
各字段含义如下:
incl/excl:对下面的MIB子树是包括还是排除。
subtree:视图中涉及的MIB子树。mask:掩码
2. 将 # group context sec.modelsec.level prefix read write notif后边的命令行 access notConfigGroup "" any noauth exact systemview none none
改为 access notConfigGroup "" any noauth exact allview none none
定义notConfigUser这个组在all这个view范围内可做的操作(即权限),这时定义了notConfigUser组的成员可对.1这个范围做只读操作。
各字段含义如下:
context:上下文,v1、v2c中始终为空。
sec.model:安全模式,可选值为v1/v2c/usm。
sec.level:安全级别,可选值为auth/noauth/priv,v1、v2c中只能为noauth。
prefix:前缀,指定context如何与PDU中的context匹配,v3使用。
read:授权的读视图。
write:授权的写视图。
notif:授权的trap视图。
com2sec notConfigUser default public
各字段含义如下:
sec.name:表示可以访问这个public的用户名
source:表示对来源IP加以控制,即哪些可以获取SNMP信息
community:表示定义一个共同体名,这里是public(多数SNMP设备或服务默认都是是用PUBLIC)
4. groupName securityModel securityName
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser
各字段含义如下:
groupName:定义一个组名,这里是notConfigGroup
securityModel:组的安全级别,可选值为v1/v2c/usm
securityName:与上面定义的用户相同
5.默认不支持CPU,内存及硬盘信息,可以修改以下配置项
1) 增加: view systemview included .1 表示可以查看.1节点下的所有设备信息。
2) 将
# proc mountd
# proc ntalkd 4
# proc sendmail 10 1
三行前的“#”号去掉,取消注释
3) 将
#exec echotest /bin/echo hello world
一行前的“#”号去掉,取消注释。
4) 将
#disk / 10000
一行前的“#”号去掉,取消注释。
5) 将
#load 12 14 14
一行前的“#”号去掉,取消注释。
/etc/rc.d/init.d/snmpd restart
或者 service snmpd start
四、设置开机自启动
# chkconfig snmpd on
# chkconfig --list | grep snmpd
snmpd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
五、验证snmp服务
(1)使用snmpwalk命令,查看本机localhost的主机名:
[root@test ~]# snmpwalk -v 2c -c public localhost sysName.0
SNMPv2-MIB::sysName.0 = STRING: test.abc.com
如上,获取到本机主机名为test.abc.com,则表示snmp服务已经可以正常使用。
(2)使用snmptranslate命令,检查snmp工具是否可以使用:
[root@test ~]# snmptranslate -To | head
.1.3
.1.3.6
.1.3.6.1
.1.3.6.1.1
.1.3.6.1.2
.1.3.6.1.2.1
.1.3.6.1.2.1.1
.1.3.6.1.2.1.1.1
.1.3.6.1.2.1.1.2
.1.3.6.1.2.1.1.3
如上,查出了部分oid,则表示snmp工具可以正常使用。
(3)测试远端主机是否可以获取数据。
[root@webserver01 ~]# snmpwalk -v 2c -c public 192.168.1.40 sysName.0
SNMPv2-MIB::sysName.0 = STRING: test.abc.com
如上,可以看到通过远端主机获取到的主机名,与在本机获取到的主机名是一致的。
snmpd -v 显示版本
snmpwalk 是对OID值的遍历(比如某个OID值下面有N个节点,则依次遍历出这N个节点的值。如果对某个叶子节点的OID值做walk,则取得 到数据就不正确了,因为它会认为该节点是某些节点的父节点,而对其进行遍历,而实际上该节点已经没有子节点了,那么它会 取出与该叶子节点平级的下一个叶子节点的值,而不是当前请求的节子节点的值。)
snmpget 是取具体的OID的值。(适用于OID值是一个叶子节点的情况)
snmpgetnext: 是取下一个节点的OID的值。
语法:
snmpwalk/snmpbulkwalk [OPTIONS] AGENT [OID]
[OPTIONS]:
-v 1|2c|3 指定SNMP版本
-c COMMUNITY 指定community string
-m MIB[:...] 指定MIB文件
snmpget [OPTIONS] AGENT OID [OID]...
[OPTIONS]:
-v 1|2c|3 指定SNMP版本
-c COMMUNITY 指定community string
-m MIB[:...] 指定MIB文件
注释 :snmpget 不同于 snmpwalk ,必须在命令行给出 <object>.<instance> 的格式,不能只给出 object。
如: snmpget -c public zeus system.sysDescr.0
实例:
1) snmpbulkwalk命令:
获取snmp服务器的mib-2各种资讯,snmpbulkwalk用于通过SNMPv2 的SNMP GET BULK请求命令与其它网络实体通信,只能用于 snmpv2,速度快于snmpwalk
例子:snmpbulkwalk -v 2c -c public 127.0.0.1 .1.3.6.1.2.1.1 获取mib-2的system的数据
2)snmpwalk命令:
获取snmp服务器的HOST-RESOURCES的各种资讯
例子: snmpwalk -v 2c 127.0.0.1 -c public HOST-RESOURCES-MIB::hrSystem
获取HOST-RESOURCES的hrSystem(系统日期/时间,初始化设备,内核引导参数,系统当前的登录用户数,当前的进程数,支持的最大进程数)
snmpwalk -v 2c -c public localhost system
这条指令用于查看本机系统信息
snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.11.11.0
这条指令用于查看CPU空闲率信息, .1.3.6.1.4.1.2021.11.11.0 是主机CPU空闲率的oid
3)snmpdelta命令:
监控网卡流量等信息, 指定共同体为public,协议为snmpv1,以表格的方式输出结果,显示时间戳;
例子:
snmpdelta -c public -v 1 -Cs -CT 127.0.0.1 IF-MIB::ifInUcastPkts.2 IF-MIB::ifOutUcastPkts.2
监控IF-MIB::ifInUcastPkts(输入流量),IF-MIB::ifOutUcastPkts(输出流量),,如监控本地的第二块网卡instance为2
snmpdelta -c public -v 1 -Cs -CT 127.0.0.1 ifInDiscards.2
监控ifInDiscards(已经丢弃的收到的数据包的总数),格式同上
4)snmpnetstat命令:
查看snmp服务器的端口连接信息, 协议为snmp2c
例子:snmpnetstat -v 2c -c public -i 127.0.0.1 获取127.0.0.1的网络接口状态
snmpnetstat -v 2c -c public -P tcp 127.0.0.1 获取127.0.0.1的TCP协议的开放端口状态
5) snmptranslate 命令:
在 MIB OID 在数字和文字名称之间进行转换,
例子:snmptranslate -On -IR HOST-RESOURCES-MIB::hrSystem
用snmptranslate把symbol 格式的HOST-RESOURCES-MIB::hrSystem 转换为 numberic 格式的oid,用-On(输出数字格式的oid),使用 -IR(允许“随机”访问 MIB)
snmptranslate -Onf -IR HOST-RESOURCES-MIB::hrSystem
用snmptranslate把symbol 格式的HOST-RESOURCES-MIB::hrSystem 转换为symbol 格式的 oid,用-Onf(输出符号格式的oid)
snmptranslate -Td iso.org.dod.internet.mgmt.mib-2
用snmptranslate输出该对象(iso.org.dod.internet.mgmt.mib-2)的详细定义,用-Td(包括文字名称、所属 MIB、类型、状态、读写权限、描述信息,数字格式的 OID)
snmptranslate -Tp iso.org.dod.internet.mgmt.mib-2
用snmptranslate打印从指定OID(.1.3.6.1.2.1)开始一直到该OID(.1.3.6.1.2.1)所属的 MIB 子树末端的树型结构信息
snmptranslate -Ta
用snmptranslate导出所有已经加载的 MIB 的数据,每个对象一行
snmptranslate -Tl
用snmptranslate导出所有已经加载的 MIB 的对象,并且输出完整的 oid 路径
snmptranslate -To
用snmptranslate导出已经加载的所有 MIB 的数字格式的 oid ,不含值和类型,仅仅有 oid 而已
snmptranslate -Ts
用snmptranslate只输出文字格式的 OID 名称而已
原文出处:http://blog.chinaunix.net/uid-28417061-id-3570649.html