我知道Nagios是如何工作的,它定期轮询系统的状态。 它可以例如检查一些文件的存在或每分钟一些网页的可用性。
但是当我想直接从应用程序代码创build警报时呢? 说用户试图执行一些非法操作,我想收到一个警报。
例如我可以将这个事件logging到文件中,并configurationNagios定期轮询这个文件。 这似乎是间接的做法。 为什么要通过写入,轮询和parsing文件系统中的文件,如果我可以用警报细节调用某个接口(REST,SOAP)呢?
有什么可以让我的应用程序直接调用Nagios (或者由于某种原因,这会是一个糟糕的devise)?
你要找的是NAGIOS的被动服务概念,再加上使用NSCA进行状态注射。
这项服务是被动的 – 也就是说,NAGIOS永远不会调查它。 您在NAGIOS服务器上运行NSCA守护程序,并通过让应用程序调用send_nsca从客户端注入状态信息。 当NAGIOS得到这个状态信息时,会根据服务定义提醒。
如果您正在设置这样的服务,那么启用新鲜度检查是一个不错的主意,在连续的状态注入之间以大约两倍的最大延迟触发,并且在调用时新鲜度检查器直接进入CRITICAL。 这意味着如果状态注入中断,NAGIOS会通知您更新已经停止。
您可以通过被动检查和不稳定服务的组合来实现您的假设示例。
而且,正如MadHatter所说,没有新鲜度检查 ,就不会讨论易变的服务。
如果您坚持使用基于Web的API,那么在Nagios Exchange的API类别中可能有一些可行的方法。