Nagios Core支持一项功能,可以对主机和服务检查的结果进行“新鲜”检查。新鲜度检查的目的是确保外部应用程序定期被动地提供主机和服务检查。
当您要确保被动检查收到的次数尽可能多时,新鲜度检查很有用。这在分布式和故障转移监视环境中非常有用。
新鲜度检查如何工作?
Nagios Core会为启用了新鲜度检查的所有主机服务定期检查结果的新鲜度。
- 计算每个主机或服务的新鲜度阈值。
- 对于每个主机/服务,将其最后检查结果的期限与新鲜度阈值进行比较。
- 如果最后检查结果的寿命大于新鲜度阈值,则将检查结果视为“陈旧”。
- 如果检查结果陈旧,Nagios Core将通过执行主机或服务定义中指定的命令来强制对主机或服务进行主动检查。
提示:即使在程序范围内或特定于主机或服务的基础上禁用了活动检查,也会执行活动检查。
例如,如果您的一项服务的新鲜度阈值为60,则如果最后一次检查结果早于60秒,Nagios Core将认为该服务已过时。
启用新鲜度检查
这是启用新鲜度检查所需的操作…
- 使用check_service_freshness和check_host_freshness指令在程序范围内启用新鲜度检查。
- 使用service_freshness_check_interval和host_freshness_check_interval选项告诉Nagios Core应多久检查一次服务和主机结果的新鲜度。
- 通过将主机和服务定义中的check_freshness选项设置为1来启用特定于主机和服务的新鲜度检查。
- 通过在主机和服务定义中设置freshness_threshold选项来配置新鲜度阈值。
- 在主机或服务定义中配置check_command选项,以反映有效的命令,当检测到该主机或服务为过时时,该命令应用于主动检查该主机或服务。
- 当Nagios Core确定何时可以检查主机或服务的新鲜度时,将使用主机和服务定义中的check_period选项,因此请确保将其设置为有效的时间段。
提示:如果您未指定特定于主机或服务的Fresh_threshold值(或将其设置为零),则Nagios Core将根据您监视特定主机或服务的频率自动自动计算阈值。建议您明确指定新鲜度阈值,而不要让Nagios Core为您选择一个阈值。
例
可能需要更新检查的一项服务示例可能是报告每晚备份作业状态的服务。也许您有一个外部脚本,一旦备份完成,该脚本便将备份作业的结果提交给Nagios Core。在这种情况下,该服务的所有检查/结果均由外部应用程序使用被动检查提供。为了确保每天都报告备份作业的状态,您可能需要为服务启用更新检查。如果外部脚本未提交备份作业的结果,则可以通过执行以下操作使Nagios Core伪造关键结果。
服务的定义如下所示(省略了一些必需的选项):
define service {
host_name backup-server
service_description ArcServe Backup Job
active_checks_enabled 0 ; active checks are NOT enabled
passive_checks_enabled 1 ; passive checks are enabled (this is how results are reported)
check_freshness 1
freshness_threshold 93600 ; 26 hour threshold, since backups may not always finish at the same time
check_command no-backup-report ; this command is run only if the service results are "stale"
other options ...
}
请注意,已禁用该服务的活动检查。这是因为服务的结果仅由外部应用程序使用被动检查得出。新鲜度检查已启用,新鲜度阈值已设置为26小时。这比24小时要长一些,因为备份作业有时每天都运行较晚(取决于要备份的数据量,存在的网络流量等)。在没有备份报告只有在服务的结果被确定为陈旧的执行命令。no-backup-report命令的定义如下所示:
define command {
command_name no-backup-report
command_line /usr/local/nagios/libexec/check_dummy 2 "CRITICAL: Results of backup job were not reported!"
}
如果Nagios Core检测到服务结果过时,它将运行no-backup-report命令作为活动服务检查。这将导致执行check_dummy插件,从而将严重状态返回给Nagios Core。然后,该服务将进入严重状态(如果尚不存在)并通知管理人员。