用Zenoss监控定制软件

我们有很多后端应用程序,我们需要监视(等待处理的订单,自上次运行以来的时间等度量标准)的性能。 目前,这是通过一个内部的看门狗应用程序来完成的,当超出阈值时会触发电子邮件,但是没有办法确认问题并且压制这些警报。

我们不想build立自己完整的警报系统,而是想配合我们用来监视我们的服务器的Zenoss安装。 我已经发现了一些编程创build事件的文章 ,但我更愿意Zenoss本身监视当前看门狗应用程序正在查看的值(所以我们也得到了graphics和历史的好处)。

那么是否有可能以程序化的方式向Zenoss提供数据馈送(而不是事件)呢? 或者还有另外一种方法可以解决这个问题吗?

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

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

有很多种方法来实现这一点。

我自己做了一些自定义的应用程序:

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

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

 exec [MIBOID] NAME PROG ARGS 

进入snmpd.conf 。 然后Net-SNMP将调用您的脚本,并通过SNMP报告其结果。 你的脚本只需要在stdout上输出结果(如果它报告多个值,每行一个),否则不需要做任何特定的操作。 注意:使用exec现在不推荐使用extend ,但原理是一样的。

还有其他更强大的扩展机制(你可以在Perl中编写插件,或者在C中编写dynamic模块,…),但是这是一个很好的开始。

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

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

简而言之,通过SNMP完成数据报告的方式有很多, 只需select最简单的解决scheme,然后在需要时进行扩展。 无论如何,这样你就可以得到一个可扩展的,基于标准的解决scheme,而不是特别的电子邮件。

编辑:

在MS Windows下执行此操作:

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

  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,你就可以使用它的所有扩展function,就像在Linux下一样(见上)。

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

我写了一篇论文,讨论了Zenoss的“过程监控”的不同select – http://community.zenoss.org/docs/DOC-3537

除此之外,Zenoss的内置过程监控有点古怪,更可靠。 它讨论了各种方法,包括使用net-snmp守护进程(偶然也可用于Windows)。 它还讨论了使用ssh运行脚本。 无论哪种方式,除了在阈值上进行警报之外,还可以对收集的数据进行图表化。

干杯,简