【问题标题】:Where to begin with SNMP agent implementation?从哪里开始实施 SNMP 代理?
【发布时间】:2012-05-25 16:23:23
【问题描述】:

在我开始之前,我意识到这里已经有一些与 SNMP 相关的问题,但似乎没有多少问题得到解答 - 这可能意味着我问错了地方,但我现在不知道还能去哪里.

几天来,我一直在尽我所能阅读 SNMP,但我发现很难理解即将发生的事情。我们的想法是最终我们会将 SNMP 集成到我们的 Java 应用程序服务器中,这将允许最终用户将其合并到他们预先存在的网络管理系统 (NMS) 中。

不幸的是,我对即将发生的事情感到完全困惑。根据我从与最终用户的交谈中了解到的情况(不幸的是,在进行任何研究之前),监控允许他们现有的 NMS 以树型显示的形式向他们的管理员提供生命统计数据的视图,向他们提供有关不同部分的反馈高层次的系统,并允许他们深入研究特定的子系统。

通过阅读,我们将实现一个“代理”,它有几个定义的接口,允许处理和响应 GET 请求等。这是有道理的,但我不知道通信的格式是什么——似乎没有任何具体的例子来说明任何消息的外观、信息的编码方式。

我更多的困惑是关于管理信息库 (MIB)。我错误地假设代理的接口将允许请求受监视的属性,然后依次请求这些属性的值。允许在 NMS 端无需任何配置即可启动和检测任何新的 Agent(v3 中的身份验证除外)。如果我理解正确,情况并非如此,代理必须改为定义 MIB,NMS 可以使用这些 MIB 来确定这些属性。当人们开始提到数千个现有的 MIB 并且它们可以被重用时,我的困惑增加了,我不明白。是否可以使用单个 MIB 定义来描述许多不同设备的网络设备的特定属性(简单的东西,例如路由器上连接的互联网:是/否)?如果是这样,我不相信我们的软件可以监控任何其他设备/系统共有的任何东西,但我们是否应该寻找已经存在的 MIB?目前我真的没有看到这样一个系统有什么好的理由,代理导出这些信息肯定会更容易 - 所以如果有人能启发我,我会很感激!

我认为如果我能够设置一个简单的 SNMP 代理和某种客户端会有所帮助,我可以开始查看该过程并最终检查两者之间的通信,但我发现很难找到任何提供任何做这样的事情的信息。 Nagios 已被推荐给我们作为测试“客户端”/NMS,但他们的“快速入门”部分建议下载 600Mb 虚拟机 - 肯定有更快的入门方法吗?

任何帮助或建议都将不胜感激,我已经浏览了 Wiki 页面,但它似乎没有详细介绍 MIB 并且之前不必处理类似引用的 RFC 之类的任何事情,虽然它们可能包含他们目前似乎完全无法理解的所有信息。或者是否有任何书籍可以推荐用于 v3 的概述和实施?

感谢您的阅读,如果您认为可以提供帮助,则更加感谢!

【问题讨论】:

    标签: snmp mib network-monitoring


    【解决方案1】:

    在我看来,您以杂乱无章的方式逐段阅读所有 SNMP 信息。强烈不建议这样做,这当然会让您感到困惑。

    忘掉你目前学到的东西,然后潜入一本好书,比如 Essential SNMP,怎么样?

    http://shop.oreilly.com/product/9780596008406.do

    请点击 Google Preview 图标进行预览。

    您不能依赖网络论坛告诉您 ABC,因为我发现这是不切实际的。

    【讨论】:

    • 我很久以前就读过这篇文章,它消除了我对 SNMP 的所有困惑,也有助于选择好的工具
    【解决方案2】:

    通信接口是 SNMP。这是用于传输的协议(通常在 UDP 之上)。服务信息请求的东西是 SNMP 代理。发送信息请求的东西是 SNMP 管理器。

    在 MIB 中定义了代理应提供哪些信息以及管理器请求哪些信息。 MIB 是“粘合剂”,是任何特定系统可以/应该提供什么样的东西的目录。它将数字代码映射到名称和类型,让​​我们能够理解数据,就像电话簿如何将电话号码映射到人们的姓名和地址一样。

    通常,您会创建、发布和使用自己的 MIB,这些 MIB 可以描述您自己产品的特定方面,但您也应该为现有 MIB 中定义的一些标准信息请求提供服务。是的,还有数以千计的其他预先存在的 MIB,您需要其中一两个以上的可能性很小。它们通常是现有产品的 MIB 的发布版本。

    “玩弄”的传统方法是安装 Net-SNMP(一个包含代理实现的软件套件,允许您相当轻松地“固定”自己的逻辑和自己的 MIB),然后使用像 Wireshark 这样的数据包捕获器。

    为了在生产中更全面地实施,您可以坚持使用 Net-SNMP,或者编写自己的代理软件,或者按照我的做法创建两者的混合体,它更灵活、更高效,但使用 Net-SNMP 的后端处理所有低级 SNMP 的东西。

    不过,您的第一步是阅读一本书或其他可以消除您所有误解的教材,因为猜测无法解决问题。

    【讨论】:

      【解决方案3】:

      我成功使用了来自this 页面的样本。 shell 和 Perl NetSNMP 代码都非常易于实现和查询。

      【讨论】:

        猜你喜欢
        • 2014-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-31
        • 2010-12-24
        • 1970-01-01
        相关资源
        最近更新 更多