SNMP Walk与MIB OID列表

(这个故事结尾有一个问题,跟我来!)

经过大量研究,我相信我已经开始了解SNMP的基础知识。 我一直知道一个SNMPpipe理系统会消耗一个设备的数据(可能也会把数据发送到设备),但是我很难理解如何configuration这个设置。

我现在正在使用一个SNMPpipe理系统,所以现在是时候弄清楚了。 所以我深入了解了MIB和OID。 正如我所看到的,供应商将为其产品提供一个MIB,其中应包含特定于产品的OID。 MIB类似于可以从设备查询的事物的目录,而OID是可以被查询的特定项目。 (如果我误解,请纠正我)

例如,SonicWall可能为其某个Firwewalls的特定固件提供MIB。 因此,如果我想要监视可用于该防火墙的最大连接数,则可以从mysonicwall.com下载MIB,将MIB导入MIB浏览器并查找与最大连接数对应的相应OID。 然后,我可以将OIDinput到我的SNMPpipe理系统中,以监控该指标。

所有这些都对我有意义,希望我能正确理解它。 我发现这个过程相当笨拙,特别是现在自描述API的时候,但是嘿SNMP是在80年代创build的,所以我想我们可以用我们所拥有的。

但是,这种理解对我来说就是当我在SonicWall上执行和SNMP步行时。 做走路会产生超过500个返回的OID。 但是当我检查从SonicWall提供的MIB时,它只能列出一小部分OID。 那是因为大多数通过散步发现的OID不是SonicWall特有的,而是通用的行业标准OID?

另外,是否有一个体面的方式来获取我的SonicWall可以通过SNMP提供的所有数据(无论是sonicwall特定还是行业标准)的报告? 就像一些工具一样,我可以从SNMP走入数据,它可以返回他们的意思?

另外,如果我对SNMP,MIB和OID有所了解,我会很欢迎。 谢谢!!!!

好的,这是我的SNMP研究成果。 我无法validation这是完全准确的,但是我觉得我对SNMP有更好的把握,希望这些信息能够帮助刚入门的人。

首先,SNMP在我看来是一个混乱的系统。 它是在80年代后期开发的,只是没有一个很好的select,所以我想我们的工作与我们有什么。

SNMP由三部分组成:SNMPpipe理系统,至less一个networking设备以及这些networking设备上的软件代理。 例如,您可以使用Naigos或MaxFocus作为SNMPpipe理系统来查询networking上的设备,如打印机,交换机,路由器等。这些设备都运行由其制造商生产的less量软件组件。 这些软件组件基本上根据设备的运行情况产生大量的SNMP数据。 例如,打印机可能会生成关于碳粉级别的数据,或者路由器可能会生成目前支持的并发连接数量的数据。 SNMPpipe理系统然后可以查询这些设备的这个信息。

但是,它是如何实际完成的? 那么一些标准组织把80年代的MIB放在一起就可以解决这个问题。 MIB基本上是一个SNMP属性的大型数据树,可以查询。 这些标准的MIB涵盖了从碳粉到networking设置的大量查询function,但正如您可以想象的那样,随着新设备和技术的出现,它们并不涵盖所有内容。 所以制造商已经制定了产品特定的MIB来帮助弥补这些差距。

MIB听起来相当不错,但现实是他们似乎往往难以理解,写得不好。 有时他们没有写出适当的规格,所以很难利用它们。 也就是说,使用MIB来查找您可以在您select的设备(路由器,打印机等)上查询哪些项目的一般过程是这样的:

  1. 给自己一个免费的MIB浏览器软件。 他们都是蹩脚的,但我发现Axence的NetTools Pro或ManageEngine的MIB浏览器是最蹩脚的。
  2. 大多数MIB浏览器都带有预装的“默认”MIB文件。 但是如果你想知道你可以在你的设备上查询哪些供应商特定的项目,你将不得不从你的供应商下载一个自定义的MIB文件。 (Sonicwall,HP等)如果您的供应商不提供MIB文件,那么有一些在线资源托pipe一堆MIB文件。 我认为有一个叫做MIB Depot的东西…
  3. 一旦你得到你自定义供应商特定的MIB文件下载,导入到您的MIB浏览器。
  4. 现在我们对您的SNMP设备执行所谓的“漫游”。 要做到这一点,你需要打入设备的IP地址,它是社区string。 (社区string实际上只是一个用于validation的密码或共享密码,为什么SNMP的创build者决定他们需要不同,并将其称为社区string超出了我的意思……)我还应该提到您正在查询的设备需要设置为允许SNMP查询。 这通常通过设备networking界面来完成,通常也是您设置社区string的地方。
  5. 一旦你的MIB浏览器连接到你的设备,然后执行“走”function。 每个MIB浏览器的工作原理都有所不同,所以您需要稍微查看一下它是如何工作的。 但总的来说,它应该从您的设备返回一个OID列表。 这些ID对应于MIB文件中的一个条目。 通常您可以双击或突出显示其中一个OID,它会find相应的MIB项目,告诉您OID的用途,例如墨粉量,操作系统版本,networking连接等。然后您可以inputOID编号到您的SNMPpipe理系统并开始监视该属性!

因此,经过我所有的研究,我发现SNMP在我看来至less是一个非常有缺陷和麻烦的系统。 但是从我读过的内容来看,似乎至less,一旦你完成了configuration,它就会变得可靠和快速。 我希望这些信息可以帮助那些正在深入研究SNMP世界的人! 这是我发现有帮助的另一个参考:

http://www.allthingsmax.com/2014/02/take-snmp-walk-creating-new-snmp-checks.html

更新:我会在这里添加另一个技巧。 在走设备OID值时,您可能会检索到两种不同types的值:标量和表格。

表格用于需要为多个组件提供相同types值的设备。 例如路由器上可能有9个端口。 每个端口都有不同的物理地址或MAC地址。 这由MIB中的表格表示。

标量用于不需要表格布局的值。

重要部分:标量值总是附加一个.0,表格值附加一个代表特定设备值的数字。 例如,在路由器端口1上可能会附加.1,端口2附加.2等等。 然后,当您将OIDinput到SNMPpipe理系统时,您需要确保包含最后一个数字字符。 例如,如果PhysAddress = .1.3.6.1.2.1.2.2.1.6,但没有附加表格值,它会做你不好。 这对标量值是相似的,它总是需要附加一个.0。 一个体面的MIB浏览器应该在走设备时显示这些附加值。 ManageEngine的MIB浏览器在这方面做得很好。 它的格式是这样的:

– 标量值:

sysUpTime.0

sysContact.0

sysName.0

– 标签值:

ifPhysAddress.1

ifPhysAddress.2

ifPhysAddress.3