1、首先按照“snmp监控快速配置”文本文档在被监控的主机上安装、配置及启动snmp服务, 具体内容如下:
1)、安装snmp
yum install net-snmp* -y
cp -a /etc/snmp/snmpd.conf{,.ori}
cat > /etc/snmp/snmpd.conf<<EOF
com2sec local localhost public
com2sec mynetwork 10.0.91.0/24 public
group MyRWGroup v1 local
group MyRWGroup v2c local
group MyRWGroup usm local
group MyROGroup v1 mynetwork
group MyROGroup v2c mynetwork
group MyROGroup usm mynetwork
view all included .1 80 #注意最后的80是16进制,最好写成0x80,做掩码使用
access MyROGroup "" any noauth exact all none none
access MyRWGroup "" any noauth exact all all none
syslocation cacti.com
syscontact Me <hyran@126.com>
proc mountd
proc ntalkd 4
proc sendmail 10 1
proc httpd 10 1
exec echotest /bin/echo hello world
#exec disk_used_shell /bin/sh /root/current_disk_used.sh
#exec httpd_proc /bin/sh /root/current_httpd_proc.sh
disk / 10000
disk /boot 10000
load 12 14 14
EOF
cat -n /etc/snmp/snmpd.conf
#/etc/init.d/snmpd start
#chkconfig snmpd on
systemctl start snmpd
systemctl enable snmpd
systemctl status snmpd
netstat -tunlp|grep snmpd
lsof -i :snmp
ps -ef|grep snmp
测试
snmpget -v 1 -c public localhost system.sysUpTime.0 #localhost为指定从本机获取数据, 也可指定的为具体的IP地址, 表示获取某个远程主机的数据
snmpget -v 2c -c public localhost sysDescr.0
snmpget不同于snmpwalk,必须在命令行给出<object>.<instance>的格式,不能只给出object, 而snmpwalk可以仅给出<object>
如:
snmpwalk -v 2c -c public localhost system #可获得数据(snmpwalk仅给出object)
snmpget -v 2c -c public localhost system #获取不到数据(仅给出object, 没有给instance, 获取不到数据)
1.3.6.1.2.1
1(iso).3(identified organization).6(dod).1(internet).2(private).1(system) 系统相关
1(iso).3(identified organization).6(dod).1(internet).2(private).2(interface) 网络接口相关
1(iso).3(identified organization).6(dod).1(internet).2(private).3(at) 地址转换相关
1(iso).3(identified organization).6(dod).1(internet).2(private).4(ip) IP分组相关
1(iso).3(identified organization).6(dod).1(internet).2(private).5(icmp) icmp相关
1(iso).3(identified organization).6(dod).1(internet).2(private).6(tcp) tcp相关
1(iso).3(identified organization).6(dod).1(internet).2(private).7(udp) udp相关
1(iso).3(identified organization).6(dod).1(internet).2(private).8(egp) egp相关
MIB中的对象1.3.6.1.4.1,即enterprises(企业),其所属结点数已超过3000。
例如
IBM为1.3.6.1.4.1.2},
Cisco为{1.3.6.1.4.1.9},
Novell为{1.3.6.1.4.1.23}等
net-snmp工具介绍
1、snmpget
模拟snmp的GetRequest操作的工具。用来获取一个或几个管理信息。用来读取管理信息的内容。
2、snmpbulkget
模拟snmp的GetBulkRequest操作的工具。用来获取大块的数据(仅用于v2版本)
一般在大量读取大块数据时使用,以提高带宽利用率,并且比使用snmpget、snmpgetnext及snmpwalk有更强的容错能力,代理会返回尽可能多的数据,比其它命令更有保证。
3、snmpgetnext
模拟snmp的GetNextRequest操作的工具。用来获取一个管理信息实例的下一个可用实例数据。一般用来遍历SNMP中的表格数据。
4、snmpset
模拟snmp的SetRequest操作的工具。用来设置可以写的管理信息。一般用来配置设备或对设备执行操作。
5、snmpwalk
利用GetNextRequest对给定的管理树进行遍历的工具。一般用来对表格类型管理信息进行遍历。
6、snmptrap
模拟trap的工具, 用来发送模拟trap。一般用来测试管理站安装和配置是否正确,或者用来验证开发的Trap接收程序是否可以正常工作。
7、snmptrapd
接收并显示trap的工具。一般在代理的开发过程中,接收代理agent发来的Trap,并将PDU细节打印出来,也来测试Trap发送功能是否正常。
8、snmpinform
模拟发送InformRequest的工具。跟snmptrap类似,用来发送模拟的带应答的Trap,以测试管理站或自己开发的接收程序。
9、snmptable
使用GetNextRequest和GetBulkRequest操作读取表信息,以列表形式显示的工具。
10、snmpstatus
从SNMP实体读取几个重要的管理信息以确定设备状态的工具。用来简单测定设备状态。
11、snmpbulkwalk
利用GetBulkRequest实现对给定管理树进行遍历的工具。对表格类型的管理信息进行遍历读取。
12、snmpdelta
用来监视Integer类型的管理对象,会及时报告值改变情况的工具。用于监测一个设备或开发中的代理。
13、snmptest
是一个复杂的工具,可以监测和管理一个网络实体的信息,通过SNMP请求操作与管理实体通信。
14、snmptranslate
将对象名字和标识符相互转换的工具。用于数据格式的对象标识和可读式字符串的数据名称的转换。类似于域名与IP地址的关系。
以上14个指定使用的选项均和snmpwalk相同,具体参见snmpwalk的使用详解
15、snmpusm
SNMPv3USM配置工具。用于SNMPv3的用户管理。
16、snmpvacm
为一个网络实体创建和维护SNMPv3的基于视图访问控制参数的工具。用于维护SNMPv3的视图访问控制。
17、snmpconf
生成snmpd配置文件的工具。用于生成snmpd的各种配置文件,用作模板,以生成用户级配置文件。
18、snmpd
Net-snmp开发的主代理程序,包括众多标准MIB的实现。还可以使用子代理对其进行扩展,是一个功能强大的SNMP代理。Linux、Unix和Windows系统运行snmpd后,直接具备了SNMP协议支持,可以被管理站管理。许多商业化的Linux中使用snmpd作为系统的SNMP代理。
19、snmpdf
通过SNMP访问并显示网络实体磁盘利用情况的工具。用来监测网络实体的磁盘。
下面我们来说几个最常用的net-snmp工具,
常用命令:
(1).snmpget命令
snmpget [OPTIONS] AGENTOID[OID]...
选项:
-v 1|2c|3 #指定SNMP版本
-c COMMUNITY #指定共同体名称
-m MIB[:...] #指定MIB文件
注:snmpget不同于snmpwalk,必须在命令行给出<object>.<instance>的格式,不能只给出object
如:
snmpwalk -v 2c -c public localhost system #可获得数据
snmpget -v 2c -c public localhost system #获取不到数据
示例:
snmpget -v 2c -c public localhost system.sysDescr.0 #获取设备的描述信息。
snmpget -v 2c -c public localhost sysDescr.0 #获取设备的描述信息。
[root@node1~]# snmpget -v 2c -c public localhost system.sysDescr.0
SNMPv2-MIB::sysDescr.0=STRING:Linuxnode1.test.com2.6.32-358.el6.x86_64#1SMPFriFeb2200:31:26UTC2013x86_64
(2).snmpwalk/snmpbulkwalk命令
snmpwalk/snmpbulkwalk [OPTIONS] AGENT[OID]
选项:
-v 1|2c|3 #指定SNMP版本
-c COMMUNITY #指定communitystring
-m MIB[:...] #指定MIB文件
注:
snmpbulkwalk命令:获取snmp服务器的mib-2各种资讯,snmpbulkwalk用于通过SNMPv2的SNMPGETBULK请求命令与其它网络实体通信,只能用于snmpv2, 速度快于snmpwalk
示例:
[root@node1~]# snmpbulkwalk -v 2c -c public 127.0.0.1 .1.3.6.1.2.1.1 #获取mib-2的system的数据。
(3).snmpwalk命令
获取snmp服务器的HOST-RESOURCES的各种资讯。
示例:
[root@node1~]# snmpwalk -v 2c -c public localhost system #这条指令用于查看本机系统信息。
(4).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(已经丢弃的收到的数据包的总数),格式同上。
(5).snmpnetstat命令
查看snmp服务器的端口连接信息,协议为snmp2c。
示例:snmpnetstat -v 2c -c public -Can -Cp tcp 127.0.0.1
#获取127.0.0.1的TCP协议的开放端口状态
#-Ca显示所有的套接字, 一般情况下套接字被服务进程使用而不显示
#-Cn所有地址以数字形式显示
#-Cp指定协议
#-Ci显示所有的网络接口
#-Co显示所有网络接口的简单状态, 需配合-Ci使用
#-CI 后接网络接口名, 如eth0 显示该接口的相关信息
#-Cs 显示统计信息
#-Cr 显示路由信息, 配合-Cn使用, 显示数字形式
(6).snmptranslate命令
在MIBOID在数字和文字名称之间进行转换。
例子,
snmptranslate -On -IR HOST-RESOURCES-MIB::hrSystem
#用snmptranslate把symbol(字符串)格式的HOST-RESOURCES-MIB::hrSystem转换为numberic(数值)格式的oid
用 -On(输出数字格式的oid)
用 -IR(允许“随机”访问MIB)
[root@node1~]#snmptranslate -On -IR HOST-RESOURCES-MIB::hrSystem
.1.3.6.1.2.1.25.1 #numberic(数值)格式的oid
snmptranslate -Onf -IR HOST-RESOURCES-MIB::hrSystem
#用snmptranslate把symbol(字符串)格式的HOST-RESOURCES-MIB::hrSystem转换为symbol(字符串)格式的oid
用-Onf(输出符号格式的oid)
[root@node1~]#snmptranslate -Onf -IR HOST-RESOURCES-MIB::hrSystem
.iso.org.dod.internet.mgmt.mib-2.host.hrSystem #symbol(字符串)格式的oid
[root@localhost ~]# snmptranslate -Td iso.org.dod.internet.mgmt.mib-2 #用snmptranslate输出该对象(iso.org.dod.internet.mgmt.mib-2)的详细定义
SNMPv2-SMI::mib-2 #用-Td(包括文字名称、所属MIB、类型、状态、读写权限、描述信息,数字格式的OID)
mib-2 OBJECT-TYPE
-- FROM SNMPv2-SMI
::= { iso(1) org(3) dod(6) internet(1) mgmt(2) 1 }
[root@node1~]#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子树末端的树型结构信息
snmptranslat -Ta #用snmptranslate导出所有已经加载的MIB的数据,每个对象一行
snmptranslate -Tl #用snmptranslate导出所有已经加载的MIB的对象,并且输出完整的oid路径
snmptranslate -To #用snmptranslate导出已经加载的所有MIB的数字格式的oid,不含值和类型,仅仅有oid而已
snmptranslate -Ts #用snmptranslate只输出文字格式的OID名称而已
2、在zabbix server主机上执行如下操作:
yum install net-snmp* -y
snmpget -v 1 -c public 10.0.91.10 system.sysUpTime.0
snmpget -v 2c -c public 10.0.91.10 sysDescr.0
10.0.91.10是被监控主机的IP地址(已经按照1中正确配置)
system.sysUpTime.0和sysDescr.0是要被监控的项目(必须事先查询, 最好是使用OID)
示例:
1、物理主机监控
1.1 snmpv2
监控10.0.91.10主机的物理内存
在命令行上测试是否可获取到数据
将字符串形式的监控项翻译成数字形式OID
将字符串形式的监控项翻译成字符串形式OID
在zabbix中配置监控项时, 上述的字符串形式的监控项、数字形式OID、字符串形式OID 3种形式均可使用
查看监控的数据
1.2 snmpv3
主机snmd.conf配置文件中需要配置如下两行
用户名(即security name) 认证算法 认证密码 加密算法 加密密码
createUser testuser SHA admin@123 DES china123
为读写用户设置权限 上述创建的用户 安全级别(noauth|auth(认证)|priv(认证且加密))
rwuser testuser priv
zabbix server主机上执行如下命令行:
snmpwalk -v 3 -u testuser -a SHA -A admin@123 -x DES -X china123 -l authPriv 10.0.91.10 sysDescr.0
查看监控数据: