Icinga:max_attempts 與 max_check_attempts
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 選項指定的速率重新調度。
這些對我來說聽起來是一樣的。它們之間有什麼區別,什麼時候應該使用它們?
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!