SNMP 的相关性和必要性

SNMP 的相关性和必要性

编辑:我正在设计一个基于 Java 的监控工具,它将定期发回部署到 GlassFish 服务器集群的 Java 应用程序的“健康检查”。我正在尝试找出此监控工具将信息发回监控服务器的最佳协议。

经过我的初步研究,我发现 SNMP 似乎只是一种用于监视类型应用程序的协议,用于将某些东西(网络的一部分、服务器、集群、应用程序等)的“健康状态”传达给网络的其余部分。

  • 以上内容,如有错误,还请指正!!!

假设概括或多或少是准确的,我的下一个问题是:为什么这是一个协议!?!?

在 REST/SOAP/TCP 协议时代,为什么需要一个只适合一种应用(监控)的标准化协议?换句话说,如果我是一名开发人员,负责构建一个新的监控工具,该工具定期轮询服务器并报告其 CPU 和可用内存,与仅通过普通的 HTTP 向 RESTful API 进行 POST 相比,SNMP 有哪些优势?

我是当然我这里漏掉了一些东西——我只需要有人帮我把这些点连接起来!提前谢谢!

答案1

需要一个标准化协议... 因为它是标准化的?它也早于 HTTP(1988 年 vs 1991 年)。REST 应该与 1996 年的 HTTP 1.0 一起出现。一旦某种东西开始使用,坚持使用它通常更容易,即使只是为了支持遗留系统。

回应您的编辑:您是否希望/需要其他预先存在的工具来与您的应用程序通信?如果不是,您可以使用任何您喜欢的方法,但您需要使用自己的监控工具。如果是,您需要使用已经普遍支持的工具,例如SNMP。

答案2

虽然我不是这方面的专家,但我建议如下:

SNMP 有一个固定的管理信息库,其中包含信息类别的层次结构(例如接口的实际带宽)。因此,您可以轻松地将节点添加到您正在监控的网络,而无需进行大量配置。

甚至有些机器您可能无法访问。(要么是因为权限问题,要么是因为它们只是简单的路由器。)在这种情况下,SNMP 将是获取和设置配置参数的简单方法。

答案3

RESTful API via plain 'ole HTTP

这具有以下依赖关系:

  • HTTP 服务器
  • 由该服务器调用的用于维护状态的后端进程
  • 足够的内存、带宽和存储资源来处理设备应该执行的操作之外的所有可能的并发连接尝试(我们假设您希望设备执行除了响应状态请求之外的其他操作)
  • 如果使用框架,则实现上述内容所需的所有框架的子依赖项(例如,如果您的后端进程是用 Perl 编写的,那么就需要更多的资源等)

如今,上述内容已不再是难事(如今许多设备等都内置了 HTTP 服务器),但在开发 SNMP 时却并非如此。

SNMP 要简单得多,可以由低资源嵌入式设备(例如旧交换机等)更轻松地处理,并且可以更轻松地编写响应 SNMP 请求的软件,并且出现安全漏洞的可能性更小。

相关内容