วิธีการตรวจสอบระยะไกล“ https” ด้วย Icinga รุ่น 2


9

ฉันมี icinga 2.3.11 บน Ubuntu 14.04.3 ใน VirtualBox ฉันกำลังพยายามตรวจสอบ "https" พอร์ต 443 เช่น " https://mail.google.com " ที่นี่ด้านล่างคือตัวอย่างข้อมูลของฉันจากไฟล์ host.conf เริ่มต้น

object Host "mailserver-01" {
    import "generic-host"
    address = "74.125.136.17"    /* ip for mail.google.com */ 
    vars.os = "Linux"
    vars.http_vhosts["http"] = {
        http_uri = "/"
    }
    vars.http_ssl = "1"
    vars.http_warn_time = "5"
    vars.http_critical_time = "10"

    vars.notification["mail"] = {
        groups = [ "icingaadmins" ]
    }
}

ด้านล่างเป็นตัวอย่างข้อมูลจากไฟล์ services.conf เริ่มต้น

apply Service "httpS" {
    import "generic-service"
    check_command = "http"
    assign where host.name == "mailserver-01"
}

แม้ว่าแดชบอร์ด icingaweb2 จะแสดง OK / เขียว แต่ฉันไม่แน่ใจว่ามันถูกต้องหรือไม่

คำตอบ:


10

โฮสต์ของคุณกำหนดแอตทริบิวต์ที่กำหนดเอง "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 ที่แตกต่างกันตามชื่อโฮสต์ หรือใช้ฟังก์ชั่นเพื่อกำหนดเกณฑ์แบบไดนามิกโดยอิงตามช่วงเวลาเช่น


2

ฉัน googled และพบคำสั่ง http ใน

/usr/share/icinga2/include/command-plugins.conf

ในตัวอย่างนี้ฉันได้ลองตรวจสอบhttps://mail.google.com ด้านล่างนี้คือ /etc/icinga2/conf.d/hosts.conf

object Host "www.google.com" {
address = "74.125.136.84"
check_command = "http"
vars.http_vhost = "mail.google.com"
vars.http_ssl = "1"
}

นี่คือลักษณะที่ปรากฏบนแดชบอร์ด icingaweb2 ป้อนคำอธิบายรูปภาพที่นี่

example2

object Host "secure.example.com" {
    address = "14.28.83.22"
    check_command = "http"
    vars.http_vhosts["secure.example.com"] = {
    http_uri = "/merchant/login.aspx"    
    }
        vars.notification["mail"] = {
        groups = [ "icingaadmins" ]
        }
    vars.http_ssl="1"
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.