Icinga 或 Nagios 配置中的服务定义可以具有称为 max_attempts
或 的参数max_check_attempts
。
文档描述max_attempts
如下:
如果您已将服务定义的 max_attempts 选项配置为大于 1 的值,Icinga 将在确定存在实际问题之前重新检查服务。在重新检查服务时(最多 max_attempts 次),它被视为处于“软”状态(如此处所述),并且服务检查将按照 retry_interval 选项确定的频率重新安排。
如果 Icinga 重新检查服务 max_attempts 次并且它仍然处于非 OK 状态,Icinga 将把服务置于“硬”状态,向联系人发送通知(如果适用),并开始以 check_interval 选项确定的频率重新安排服务的未来检查。
并max_check_attempts
作为:
当服务首次从 OK 状态变为非 OK 状态时,Icinga 可让您暂时减慢或加快该服务后续检查的间隔。当服务首次改变状态时,Icinga 将执行最多 max_check_attempts-1 次服务检查重试,然后才会确定这是一个真正的问题。在重试服务时,它会根据 retry_interval 选项进行安排,这可能比正常的 check_interval 选项更快或更慢。在重新检查服务时(最多 max_check_attempts-1 次),服务处于软状态。如果重新检查服务 max_check_attempts-1 次,并且它仍然处于非 OK 状态,则服务将变为硬状态,随后按照 check_interval 选项指定的正常速率重新安排。
附带说明一下,如果您将 max_check_attempts 选项的值指定为 1,则服务将永远不会按照 retry_interval 选项指定的间隔进行检查。相反,它会立即变为硬状态,随后按照 check_interval 选项指定的速率重新安排。
在我看来,它们听起来是一样的。它们之间有什么区别?什么时候应该使用它们?
答案1
max_attempts 是服务和主机的旧定义,在 nagios Core 4 中不再使用。查看它以了解你的对象的可能定义: 对象定义
使用 Icinga2
# icinga2 -V
icinga2 - The Icinga 2 network monitoring daemon (version: r2.6.3-1)
服务中使用 max_attempts 会触发错误:
服务声明:
object Service "Intel(R) 82574L Gigabit Network Connection" {
import "generic-service"
host_name = "server"
check_command = "check_netint"
vars.interface = "Intel(R) 82574L Gigabit Network Connection"
vars.warning= "650000"
vars.critical ="800000"
max_attempts=1
}
配置检查:
# service icinga2 checkconfig
[....] checking Icinga2 configuration
information/cli: Icinga application loader (version: r2.6.3-1)
information/cli: Loading configuration file(s).
information/ConfigItem: Committing config item(s).
critical/config: Error: Attribute 'max_attempts' does not exist.
Location: in /etc/icinga2/conf.d/1.conf: 32:3-32:16
/etc/icinga2/conf.d/1.conf(30): vars.warning= "650000"
/etc/icinga2/conf.d/1.conf(31): vars.critical ="800000"
/etc/icinga2/conf.d/1.conf(32): max_attempts=1
^^^^^^^^^^^^^^
/etc/icinga2/conf.d/1.conf(33): }
/etc/icinga2/conf.d/1.conf(34): /*
critical/config: 1 error
[FAIL] checking Icinga2 configuration. Check '/var/log/icinga2/startup.log' for details. ... failed!