实战snmp

实战snmp

   1,为什么需要snmp?

         对于大部分运维人员来说监控一台服务器不是什么大问题,开源方案提供了很多的解决方法,但是现在需要你监控多类型硬件,多类型系统,可能带来很多麻烦。熟悉运维工作的人一定会想到naigos,cacti,等等。那么它们是怎么实现对服务器的监控的呢?那就是snmp!!!

     2,什么是snmp?

             简单网络管理协议(SNMP),由一组网络管理的标准组成,包含一个应用层协议(application layer protocol)、数据库模型(database schema),和一组资料物件。该协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。该协议是互联网工程工作小组(IETF,Internet Engineering Task Force)定义的internet协议簇的一部分。

      3,snmp是如何工作的?

           实战snmp_第1张图片

驻留在被管设备上的AGENT从UDP端口161接受来自网管站的报文,经解码、团体名验证、分析得到管理变量在MIB树中对应的节点,从相应的模块中得到管理变量的值,再形成响应报文,编码发送回网管站。网管站得到响应报文后,再经同样的处理,最终显示结果。

详细介绍Agent接受到报文后采取的动作: 

第一步:解码生成用内部数据结构表示的报文,如果解码过程中出现错误导致解码失败则丢弃该报文,不做进一步处理。

第二步:将报文中的版本号取出,如果与本Agent支持的SNMP版本不一致,则丢弃该报文,不做进一步处理。

第三步:将报文中的团体名取出,此团体名由发出请求的网管站填写。如与本设备认可的团体名不符,则丢弃该报文,不做进一步处理,同时产生一个陷阱报文。SNMPv1只提供了较弱的安全措施,在版本3中这一功能将大大加强。

第四步:从通过验证的ASN.1对象中提出协议数据单元PDU,如果失败,丢弃报文,不做进一不处理。否则处理PDU,结果将产生一个报文,该报文的发送目的地址应同收到报文的源地址一致。 

        4,snmp的基本操作

实战snmp_第2张图片

       5,管理信息库(MIB)

    MIB 定义了可以通过网络管理协议进行访问的管理对象的集合。MIB 可以描述为一棵树,各个数据项构成了树的叶结点。每个 MIB 对象都有一个唯一的对象标识符(OID)来标识和命名,这个标识符取决于 MIB 对象在树中的位置,而对象的实例也有标识符,由对象类的对象标识符加上实例标识符构成的。 

实战snmp_第3张图片

      对象命名树的顶级对象有三个,即ISO、ITU-T和这两个组织的联合体。在ISO的下面有4个结点,其中的一个(标号3)是被标识的组织。在其下面有一个美国国防部(Department of Defense)的子树(标号是6),再下面就是Internet(标号是1)。在Internet结点下面的第二个结点是mgmt(管理),标号是2。再下面是管理信息库,原先的结点名是mib。1991年定义了新的版本MIB-II,故结点名现改为mib-2,其标识为{1.3.6.1.2.1},或{Internet(1) .2.1}。这种标识为对象标识符。

         MIB-II管理的信息有10个类别,如下:

实战snmp_第4张图片

       

     6,如何通过snmp获取服务器的信息

            上面已经介绍了MIB的结构,那么如何在MIB中查询自己想要服务器的信息呢?

            所有设备的基本信息会放在。1.3.6.1.2.1

            如:

               查看系统信息

[root@R710 ~]# snmpwalk -v 2c -c 'public' 10.11.45.70  1.3.6.1.2.1.1.1

SNMPv2-MIB::sysDescr.0 = STRING: Linux R410-70 2.6.32-71.el6.x86_64 #1 SMP Fri May 20 03:51:51 BST 2011 x86_64

              查看主机名

[root@R710 ~]# snmpwalk -v 2c -c 'public' 10.11.45.70  1.3.6.1.2.1.1.5

SNMPv2-MIB::sysName.0 = STRING: R410-70

                查看ip地址

[root@R710~]# snmpwalk -v 2c -c 'public' 192.168.0.1  1.3.6.1.2.1.4.20.1.1

IP-MIB::ipAdEntAddr.192.168.0.1 = IpAddress: 192.168.0.1

IP-MIB::ipAdEntAddr.x.x.x.x = IpAddress: x.x.x.x 

IP-MIB::ipAdEntAddr. x.x.x.x   = IpAddress: x.x.x.x 

IP-MIB::ipAdEntAddr.127.0.0.1 = IpAddress: 127.0.0.1

             所有设备基本信息和cisco一样,可以在一下网站查询

               http://tools.cisco.com/Support/SNMP/do/BrowseOID.do?local=en

例如查找系统信息:

实战snmp_第5张图片


        enterprises.私有MIB和OID

         如果你通过公开的MIB和OID无法采集得到监控数据,可以尝试在企业私有的MIB和OID中查询。
例如H3C的私有MIB和OID没有公开,所以只有自己动手寻找。企业的私有MIB存在于 1.3.6.1.4.1下面,H3C也不例外。查询企业私有的MIB方法如下:
#snmpwalk -v 2c -c xxx 10.180.20.1 1.3.6.1.4 .1 > 7502.txt
从输出内容来看H3C的私有MIB是:SNMPv2-SMI::enterprises.2011 使用的enterprises number为2011,跟Huawei一样的。
使用分支可能包括包括如下分支:
SNMPv2-SMI::enterprises.2011.1
SNMPv2-SMI::enterprises.2011.2
SNMPv2-SMI::enterprises.2011.5
SNMPv2-SMI::enterprises.2011.6
SNMPv2-SMI::enterprises.2011.10

SNMPv2-SMI::enterprises.2011.18

 

       查询企业私有的MIB和OID网站如下

           http://www.oidview.com/mibs/detail.html

 

相关资料

         debian相关信息 http://www.debianadmin.com/linux-snmp-oids-for-cpumemory-and-disk-statistics.html

      

你可能感兴趣的:(实战snmp)