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

 

查看监控数据:

 

 

posted on 2019-05-09 09:59  苦咖啡~~  阅读(1181)  评论(0编辑  收藏  举报