Linux
SNMP的基本功能是:取得,设置和接收代理发送的意外信息。取得指的是基站发送请求,代理根据这个请求回送相应的数据设置是基站设置管理对象(也就是代理)的值,接收收代理发送的意外信息是指代理可以在基站未请求的状态下向基站报告发生的意外情
http://hiphotos.baidu.com/jaimy_jie/pic/item/c1b9283483420be0d2a2d372.jpg
建议用RPM方式安装
1. 安装: yum install
net-snmp* (主要安装net-snmp
net-snmp-devel net-snmp-utils net-snmp-libs 组件)
yum 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
一行前的“#”号去掉,取消注释。
加载中,请稍候......