Nagios 被动检查

介绍

在大多数情况下,您将使用Nagios Core通过定期安排的活动检查来监视主机和服务。主动检查可经常用于“轮询”设备或服务以获取状态信息。Nagios Core还支持一种被动而非主动监视主机和服务的方法。被动检查的主要功能如下:

  • 被动检查由外部应用程序/进程启动和执行
  • 被动检查结果将提交给Nagios Core进行处理

主动检查和被动检查之间的主要区别在于,主动检查由Nagios Core发起和执行,而被动检查则由外部应用程序执行。

用于被动检查

被动检查对于监视以下服务很有用:

  • 本质上是异步的,无法通过定期轮询其状态进行有效监控
  • 位于防火墙后面,无法从监视主机主动检查

可以被动监视的异步服务示例包括SNMP陷阱和安全警报。您永远不会知道在给定的时间段内将收到多少个陷阱或警报,因此仅每隔几分钟监视一次它们的状态是不可行的。

在配置分布式冗余监视安装时,还会使用被动检查。

被动检查

被动检查的工作方式

以下是被动检查的工作原理。

  1. 外部应用程序检查主机或服务的状态。
  2. 外部应用程序将检查结果写入外部命令文件
  3. 下次Nagios Core读取外部命令文件时,它将把所有被动检查的结果放入队列中,以供以后处理。 在Nagios Core 4之前,用于存储主动检查结果的队列也用于存储被动检查结果。
  4. Nagios Core将定期执行检查结果收割者事件并扫描检查结果队列。队列中找到的每个服务检查结果都以相同的方式处理-不管检查是主动还是被动。Nagios Core可能会根据检查结果信息发出通知,日志警报等。

主动和被动检查结果的处理基本相同。这允许将来自外部应用程序的状态信息与Nagios Core无缝集成。

启用被动检查

为了在Nagios Core中启用被动检查,您需要执行以下操作:

如果要全局禁用被动检查的处理,请将accept_passive_service_checks指令设置为0。

如果只想对几个主机或服务禁用被动检查,请在主机和/或服务定义中使用passive_checks_enabled指令来执行此操作。

提交被动服务检查结果

外部应用程序可以通过将PROCESS_SERVICE_CHECK_RESULT外部命令写入外部命令文件来将被动服务检查结果提交给Nagios Core 。

该命令的格式如下:

[<timestamp>] PROCESS_SERVICE_CHECK_RESULT;<host_name>;<svc_description>;<return_code>;<plugin_output>

哪里…

  • timestamp是执行(或提交)服务检查的time_t格式的时间(自UNIX时代以来的秒数)。请注意右括号后的单个空格。
  • host_name是服务定义中与服务关联的主机的简称
  • svc_description是服务定义中指定的服务描述
  • return_code是支票的返回码(0 = OK,1 = WARNING,2 = CRITICAL,3 = UNKNOWN)
  • plugin_output是服务检查的文本输出(即插件输出)

 注意:必须先在Nagios Core中定义服务,然后才能为其提交被动检查结果!对于最后一次(重新)启动之前尚未配置的服务,Nagios Core将忽略所有检查结果。

 提示:有关易失性服务的文档中提供了有关如何向Nagios提交被动服务检查结果的shell脚本示例。

提交被动主机检查结果

外部应用程序可以通过将PROCESS_HOST_CHECK_RESULT外部命令写入外部命令文件来将被动主机检查结果提交给Nagios Core。

该命令的格式如下:

[<timestamp>] PROCESS_HOST_CHECK_RESULT;<host_name>;<host_status>;<plugin_output>

哪里…

  • timestamp是执行(或提交)主机检查的time_t格式的时间(自UNIX时代以来的秒数)。请注意右括号后的单个空格。
  • host_name是主机的简称(在主机定义中定义)
  • host_status是主机的状态(0 = UP,1 = DOWN,2 = UNREACHABLE)
  • plugin_output是主机检查的文本输出

 注意:必须先在Nagios Core中定义主机,然后才能为其提交被动检查结果!对于最后一次(重新)启动之前尚未配置的主机,Nagios Core将忽略所有检查结果。

被动检查和主机状态

与主动主机检查不同,Nagios Core不会(默认)通过被动检查尝试确定主机是DOWN还是UNREACHABLE。而是,Nagios Core将被动检查结果作为主机所处的实际状态,并且不会尝试使用可达性逻辑来确定主机的实际状态。如果您要从远程主机提交被动检查,或者您具有父/子主机关系不同的分布式监视设置,则可能导致问题。

您可以通过使用translate_passive_host_checks变量告诉Nagios Core将DOWN / UNREACHABLE被动检查结果状态转换为它们的“适当”状态。有关如何工作的更多信息,请参见此处

 注意:除非启用了active_host_checks_are_soft选项,否则被动主机检查通常被视为HARD状态

从远程主机提交被动检查结果

NSCA插件

如果与Nagios Core驻留在同一主机上的应用程序正在发送被动主机或服务检查结果,则它可以简单地将结果直接写入外部命令文件,如上所述。但是,远程主机上的应用程序无法做到这一点。

为了允许远程主机将被动检查结果发送到监视主机,可以使用NSCANRDP插件。NSCA插件包括在Nagios Core主机上运行的守护程序和从远程主机执行的客户端。守护程序将侦听来自远程客户端的连接,对提交的结果执行一些基本的验证,然后将检查结果直接写入外部命令文件(如上所述)。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁