1. 安装:
yum -y install net-snmp* (主要安装net-snmp net-snmp-devel net-snmp-utils net-snmp-libs 组件)
yum -y install lm_sensors (用于监控主板,CPU的工作电压,风扇转速、温度等数据。)
2. 配置:
主配置文件: /etc/snmp/snmpd.conf
常用定义项:
(1)首选是定义一个共同体名(community),这里是public(多数SNMP设备或服务默认都是是用PUBLIC),及可以访问这个public的用户名(sec name),这里是notConfigUser。Public相当于用户notConfigUser的密码:) ,source 在net-snmp中用来对来源IP加以控制,即哪些可以获取SNMP信息
# sec.name source community
com2sec notConfigUser default public
(2)定义一个组名(groupName)这里是notConfigGroup,及组的安全级别,把notConfigGroup这个用户加到这个组中。
sec.model:安全模式,可选值为v1/v2c/usm。
groupName securityModel securityName
group notConfigGroup v1 notConfigUser
groupName securityModel securityName
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser
(3)定义一个可操作的范围(view)名, 这里是all,范围是 .1
# name incl/excl subtree mask(optional)
view all included .1 --》表示可以查看.1节点下的所有设备信息
注: incl/excl:对下面的MIB子树是包括还是排除。
subtree:视图中涉及的MIB子树。
mask:掩码
(4)定义notConfigUser这个组在all这个view范围内可做的操作(即权限),这时定义了notConfigUser组的成员可对.1这个范围做只读操作。
# group context sec.model sec.level prefix read write notif
access notConfigGroup "" any noauth exact all none none
注:
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视图。
3. 端口: 标准的SNMP服务使用161和162端口,厂商私有的实现一般使用199、391、705和1993端口,net-snmp用udp 161
4 . 常用命令:
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 -a 127.0.0.1 获取127.0.0.1的所有开放端口状态
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 名称而已
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
一行前的“#”号去掉,取消注释。