2017-08-08 30 views
0

在icinga2監控中,如果服務已關閉一段時間,我希望能夠升級問題通知,或者在停止工作時間時清除問題通知。我想在服務恢復時收到單個通知。如何從升級通知模板中獲取icinga2中的單個確認/確認通知?

當我將「service-test-down-1」和「service-test-down-2」設置爲所有類型和狀態時,服務成功時我會收到兩個「OK」消息。當我像下面那樣設置它時,將OK消息和Not-OK消息分開,我從來沒有得到任何確定。我覺得這應該是直接的,但我還沒有取得任何進展。

~# icinga2 object list --name service-test-* 
Object 'icinga2.acceleration.net!NotificationTest!service-test-down-1' of type 'Notification': 
    % declared in '/opt/icinga2lib/lib.conf.d//test.conf', lines 2:1-2:51 
    * __name = "icinga2.acceleration.net!NotificationTest!service-test-down-1" 
    * command = "dispatch-service" 
    % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 3:3-3:30 
    * command_endpoint = "" 
    * host_name = "icinga2.acceleration.net" 
    % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 2:1-2:51 
    * interval = 60 
    % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 13:3-13:15 
    * name = "service-test-down-1" 
    * package = "_etc" 
    % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 2:1-2:51 
    * period = "24x7" 
    % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 8:3-8:17 
    * service_name = "NotificationTest" 
    % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 2:1-2:51 
    * states = [ "Warning", "Critical", "Unknown" ] 
    % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 4:3-4:41 
    * templates = [ "service-test-down-1" ] 
    % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 2:1-2:51 
    * times 
    * begin = 0 
     % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 11:3-11:18 
    * end = 180 
     % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 12:3-12:16 
    * type = "Notification" 
    * types = [ "Problem", "Custom", "FlappingStart", "FlappingEnd", "DowntimeStart", "DowntimeEnd", "DowntimeRemoved" ] 
    % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 5:3-6:57 
    * user_groups = null 
    * users = [ "russ" ] 
    % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 7:3-7:18 
    * vars 
    * priority = "medium" 
     % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 10:3-10:26 
    * zone = "" 

Object 'icinga2.acceleration.net!NotificationTest!service-test-down-2' of type 'Notification': 
    % declared in '/opt/icinga2lib/lib.conf.d//test.conf', lines 16:1-16:51 
    * __name = "icinga2.acceleration.net!NotificationTest!service-test-down-2" 
    * command = "dispatch-service" 
    % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 17:3-17:30 
    * command_endpoint = "" 
    * host_name = "icinga2.acceleration.net" 
    % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 16:1-16:51 
    * interval = 120 
    % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 27:3-27:15 
    * name = "service-test-down-2" 
    * package = "_etc" 
    % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 16:1-16:51 
    * period = "24x7" 
    % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 21:3-21:17 
    * service_name = "NotificationTest" 
    % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 16:1-16:51 
    * states = [ "Warning", "Critical", "Unknown" ] 
    % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 18:3-18:41 
    * templates = [ "service-test-down-2" ] 
    % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 16:1-16:51 
    * times 
    * begin = 180 
     % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 25:3-25:18 
    * end = 43200 
     % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 26:3-26:17 
    * type = "Notification" 
    * types = [ "Problem", "Custom", "FlappingStart", "FlappingEnd", "DowntimeStart", "DowntimeEnd", "DowntimeRemoved" ] 
    % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 19:3-20:57 
    * user_groups = null 
    * users = [ "russ" ] 
    % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 22:3-22:18 
    * vars 
    * priority = "medium" 
     % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 24:3-24:26 
    * zone = "" 

Object 'icinga2.acceleration.net!NotificationTest!service-test-recovery' of type 'Notification': 
    % declared in '/opt/icinga2lib/lib.conf.d//test.conf', lines 29:1-29:53 
    * __name = "icinga2.acceleration.net!NotificationTest!service-test-recovery" 
    * command = "dispatch-service" 
    % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 30:3-30:30 
    * command_endpoint = "" 
    * host_name = "icinga2.acceleration.net" 
    % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 29:1-29:53 
    * interval = 1 
    % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 37:3-37:14 
    * name = "service-test-recovery" 
    * package = "_etc" 
    % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 29:1-29:53 
    * period = "24x7" 
    % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 34:3-34:17 
    * service_name = "NotificationTest" 
    % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 29:1-29:53 
    * states = [ "OK" ] 
    % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 31:3-31:17 
    * templates = [ "service-test-recovery" ] 
    % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 29:1-29:53 
    * times = null 
    * type = "Notification" 
    * types = [ "Acknowledgement", "Recovery" ] 
    % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 32:3-32:39 
    * user_groups = null 
    * users = [ "russ" ] 
    % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 33:3-33:18 
    * vars 
    * priority = "medium" 
     % = modified in '/opt/icinga2lib/lib.conf.d//test.conf', lines 35:3-35:26 
    * zone = "" 

相關文件鏈接:

apply Notification "service-test-down-1" to Service { 
    command = "dispatch-service" 
    states = [ Warning, Critical, Unknown ] 
    types = [ Problem, Custom, FlappingStart, FlappingEnd, 
      DowntimeStart, DowntimeEnd, DowntimeRemoved ] 
    users = ["russ"] 
    period = "24x7" 
    assign where "tests" in service.groups 
    vars.priority = "medium" 
    times.begin = 0m 
    times.end = 3m 
    interval = 1m 
} 

apply Notification "service-test-down-2" to Service { 
    command = "dispatch-service" 
    states = [ Warning, Critical, Unknown ] 
    types = [ Problem, Custom, FlappingStart, FlappingEnd, 
      DowntimeStart, DowntimeEnd, DowntimeRemoved ] 
    period = "24x7" 
    users = ["russ"] 
    assign where "tests" in service.groups 
    vars.priority = "medium" 
    times.begin = 3m 
    times.end = 12h 
    interval = 2m 
} 
apply Notification "service-test-recovery" to Service { 
    command = "dispatch-service" 
    states = [ OK ] 
    types = [ Acknowledgement, Recovery ] 
    users = ["russ"] 
    period = "24x7" 
    vars.priority = "medium" 
    assign where "tests" in service.groups 
    interval = 1 
} 

apply Service "NotificationTest" { 
    enable_active_checks = true 
    check_command = "passive" 
    max_check_attempts = 1 

    ignore where host.vars.noservices == true 
    groups += ["tests"] 
    assign where host.name == "icinga2.acceleration.net" 
    max_check_attempts = 5 
    check_interval = 5m 
    retry_interval = 5m 
} 

此配置文件會通過icinga印 https://www.icinga.com/docs/icinga2/latest/doc/03-monitoring-basics/#notification-escalations

十字發佈:https://github.com/Icinga/icinga2/issues/5478

回答

0

通過icinga2的開發者提供的(對答案github:https://github.com/Icinga/icinga2/issues/5478)是沒有辦法發送一個單一的恢復通知當你有通知升級時,從icinga2內。

每個升級都是一個單獨的通知對象,每個通知有關PROBLEM的通知都將發送一條RECOVERY消息。沒有RECOVERY通知將被髮送到從未發送PROBLEM通知的任何通知對象(這看起來是錯誤的,但是無論如何)。

建議的解決方案是讓通知代理爲您消除重複消息。鑑於不希望擁有一個有狀態的代理,我提出了一個函數來設置正在通知的主機/服務上的current_escalation,以便只有當前升級纔會真正發送RECOVERY消息,並且我們的代理仍然可以是無狀態的。 github上的示例代碼。