使用 Zenoss 监控定制软件

And*_*y S 3 monitoring performance-monitoring zenoss

我们有很多需要监控性能的后端应用程序(指标,例如等待处理的订单、自上次运行以来的时间等)。目前,这是由内部看门狗应用程序完成的,该应用程序在超过阈值时发出电子邮件,但无法确认问题并消除这些警报。

我们不想构建我们自己的完整警报系统,而是希望与我们用来监控服务器的 Zenoss 安装相关联。我找到了几篇关于以编程方式创建事件的文章,但我更愿意 Zenoss 本身监控当前看门狗应用程序正在查看的值(因此我们也能从图形和历史中获得好处)。

那么,是否有可能以编程方式向 Zenoss 提供数据馈送(而不是事件)?或者还有其他方法可以解决这个问题吗?

sle*_*ske 5

恕我直言,最干净的解决方案是让应用程序通过 SNMP 提供信息。

然后您可以使用任何支持 SNMP 的软件来监控它,包括但不限于 Zenoss。

有多种方法可以实现这一点。

我自己为一些自定义应用程序做过:

这些应用程序在 Linux 服务器上运行,该服务器已经运行了 Net-SNMP 守护程序。所以我为 Net-SNMP 编写了一个插件(只是一个小的 Perl 脚本),它从应用程序中查询值并将其报告给 Net-SNMP。

我使用execNet-SNMP的机制来运行它(http://net-snmp.sourceforge.net/docs/man/snmpd.conf.html#lbAZ)。基本上你只是把

exec  [MIBOID] NAME PROG ARGS
Run Code Online (Sandbox Code Playgroud)

进入snmpd.conf. 然后 Net-SNMP 将调用您的脚本,并通过 SNMP 报告其结果。您的脚本只需要在 stdout 上打印结果(如果它报告多个值,则每行一个),否则它不必执行任何特定操作。注意: usingexec现在已被弃用而支持extend,但原理是相同的。

还有其他更强大的扩展机制(您可以用 Perl 编写插件,或用 C 编写动态模块,...),但这是一个很好的起点。

其他 SNMP 守护进程将具有类似的扩展机制,这仅取决于您当前在运行您的应用程序的服务器上使用的内容。

此外,还有一个称为AgentX的特殊协议,允许应用程序充当“子代理”(即,向系统上的主 SNMP 守护程序报告数据)。你甚至可以在你的应用程序中实现一个子代理。

总之,通过SNMP完成数据上报的方式有很多种;只需选择最简单的解决方案,然后在需要时扩展它。无论如何,这样您就可以获得可扩展的、基于标准的解决方案,而不是临时电子邮件。

编辑:

要在 MS Windows 下执行此操作:

一种可能性(可能还有其他,不知道)是在 Windows 下安装 Net-SNMP(它们有 Windows 版本)。你实际上有两个选择:

  1. 保持 Windows SNMP 服务运行,并在其旁边安装 Net-SNMP
  2. 禁用 Windows SNMP 服务,并运行 Net-SNMP

在选项 1 下,您需要让 Windows SNMP 服务使用非标准端口,并让 Net-SNMP 代理向其发出代理请求。在选项 2 下,Net-SNMP 代理将直接加载 Windows 代理运行时将使用的 DLL。因此,在这两种情况下,您仍应获得 Windows 代理提供的特定于 MS 的信息。这两种方法都有一些缺点。有关详细信息,请参阅README.win32

一旦您运行了 Net-SNMP,您就可以使用它的所有扩展功能,就像在 Linux 下一样(见上文)。

您也可以直接扩展 Windows SNMP 代理(不使用 Net-SNMP),但我对此知之甚少。有一个“Windows SNMP API”,这显然是一种方式:http : //msdn.microsoft.com/en-us/library/aa379207%28v=vs.85%29.aspx