โฮสต์ของคุณกำหนดแอตทริบิวต์ที่กำหนดเอง "http_vhosts" เป็นพจนานุกรม แต่ไม่เคยใช้ (ไม่มีการกำหนดกฎสำหรับการทำซ้ำในพจนานุกรมนั้นและการให้บริการวัตถุทางภูมิศาสตร์)
แต่บริการจะใช้กฎ (โดยไม่ต้องใช้ for loop) เพียงแค่ใช้บริการ "httpS" โดยไม่ได้ตั้งใจจะมีการตั้งค่าแอตทริบิวต์ที่กำหนดเองของโฮสต์ "http_ssl" ซึ่งควรอ่านเป็นจริงเป็นบูลีนแทนที่จะเป็นตัวเลขเป็นสตริง (ซึ่งเป็นจริงเสมอ)
คุณอาจต้องการตรวจสอบ URI หลายรายการไม่เพียง แต่ /
ข้อเสนอของฉัน (2 โซลูชั่น):
1) แก้ไขกฎการใช้บริการของคุณและลบ http_ * แอตทริบิวต์ที่กำหนดเองออกจากข้อกำหนดวัตถุโฮสต์ของคุณ เพิ่มกฎเหล่านั้นลงในกฎการใช้บริการแทน:
apply Service "httpS" {
import "generic-service"
check_command = "http"
vars.http_uri = "/"
vars.http_ssl = true
assign where host.name == "mailserver-01"
}
คุณสามารถค้นหาแอตทริบิวต์ที่กำหนดเองทั้งหมดที่ใช้เป็นพารามิเตอร์คำสั่งสำหรับhttp CheckCommand ในเอกสารประกอบ: http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/plugin-check-commands#plugin-check- คำสั่ง http
2) ใช้บริการสมัครกฎแทนและวนซ้ำพจนานุกรม http_vhosts ที่กำหนดไว้ที่โฮสต์
vars.http_vhosts["https /"] = {
http_ssl = true
http_uri = "/"
}
หมายเหตุการตั้งชื่อที่นี่: "https /" จะเป็นชื่อบริการที่สร้างขึ้น http_ssl และ http_uri เป็นชื่อที่แน่นอนเหมือนกับแอตทริบิวต์ที่กำหนดเองที่จำเป็นโดย http CheckCommand
ความมหัศจรรย์เกิดขึ้นภายในกฎการสมัคร: คีย์พจนานุกรมจะเป็นชื่อบริการ ค่าพจนานุกรมเป็นพจนานุกรมที่ซ้อนกันและมี http_uri และ http_ssl เป็นคีย์ ในตัวอย่างที่เรียกว่า "config" พจนานุกรมการตั้งค่านั้นมีโครงสร้างที่แน่นอนเหมือนกับแอตทริบิวต์ "vars" ซึ่งเป็นเหตุผลว่าทำไมเราสามารถเพิ่มมันเข้าไปในบริการเพื่อขอคำจำกัดความ
apply Service for (servicename => config in host.vars.http_vhosts) {
import "generic-service"
check_command = "http"
vars += config
}
ตรวจสอบการกำหนดค่าโดยใช้icinga2 daemon -Cแล้วมองเข้าไปในวัตถุบริการที่สร้างขึ้นเพื่อดูว่าแอตทริบิวต์ที่กำหนดเองจะถูกสร้างขึ้น (รายการวัตถุ icinga2)
สิ่งหนึ่งที่ดี - โฮสต์ทั้งหมดที่มีแอตทริบิวต์กำหนดเอง http_vhosts จะสร้างออบเจ็กต์บริการเหล่านี้โดยไม่จำเป็นต้องมี extea "assign where" expression ด้วยกลยุทธ์ที่ถูกต้องคุณจะเขียนใช้กฎเพียงครั้งเดียวและเพิ่มโฮสต์ใหม่ที่มีพจนานุกรมแอตทริบิวต์ที่กำหนดเองที่ตรงกันในอนาคต :-)
http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/monitoring-basics#using-apply-for
แม้ว่าโซลูชัน 2) ต้องการความรู้ขั้นสูงเกี่ยวกับภาษาการกำหนดค่าของ icinga 2 และคำหลักประเภทค่าและเทคนิคมายากล แต่เราคิดว่าวิธีการและแนวทางปฏิบัติที่ดีที่สุดดังกล่าวจะช่วยลดการบำรุงรักษาในระยะยาวด้วยการนำและเปลี่ยนไฟล์
คุณสามารถไปต่อและใช้เงื่อนไขอื่นสำหรับ threshokds ที่แตกต่างกันตามชื่อโฮสต์ หรือใช้ฟังก์ชั่นเพื่อกำหนดเกณฑ์แบบไดนามิกโดยอิงตามช่วงเวลาเช่น