我应该/可以通过编程方式调用 Nagios 而不是等待它轮询您的状态吗?

我应该/可以通过编程方式调用 Nagios 而不是等待它轮询您的状态吗?

我理解 Nagios 的工作原理是定期轮询系统状态。例如,它可以每分钟检查某些文件是否存在或某些网页是否可用。

但是当我想直接从应用程序代码创建警报时该怎么办?假​​设用户试图执行某些非法操作,而我希望收到警报。

例如,我可以将此事件记录到文件中,并配置 Nagios 定期轮询此文件。这似乎只是一种间接的方法。如果我可以调用带有警报详细信息的某个接口(REST、SOAP),为什么还要在文件系统中写入、轮询和解析文件?

有什么可以我的应用程序直接调用 Nagios(或者由于某种原因这是一个糟糕的设计)?

答案1

您正在寻找的是 NAGIOS 的概念被动服务,并配合使用NSCA状态注入。

该服务是被动的 - 也就是说,NAGIOS 根本不会轮询它。您在 NAGIOS 服务器上运行 NSCA 守护程序,并通过让您的应用程序调用从客户端注入状态信息send_nsca。当 NAGIOS 获得此状态信息时,它将根据服务定义发出警报。

如果您正在设置这样的服务,最好启用其新鲜度检查,以大约两倍于您预期的连续状态注入之间的最大延迟触发,并让新鲜度检查器在调用时直接进入 CRITICAL。这意味着,如果状态注入发生故障,NAGIOS 将通知您更新已停止到达。

答案2

您可以通过以下组合来实现您的假设示例被动检查不稳定的服务

此外,正如 MadHatter 所说,如果没有新鲜度检查

如果你坚持使用基于 Web 的 API,那么Nagios Exchange 的 API 类别

相关内容