Bagaimana cara memonitor "https" jarak jauh dengan Icinga versi 2?

9

Saya memiliki icinga 2.3.11 di ubuntu 14.04.3 di dalam VirtualBox. Saya mencoba memonitor "https" port 443 misalnya " https://mail.google.com " di sini. Berikut adalah cuplikan saya dari file host.conf default

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" ]
    }
}

Di bawah ini cuplikan dari file default services.conf

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

Meskipun dasbor icingaweb2 menunjukkan OK / hijau, saya tidak yakin apakah itu cara yang benar

satch_boogie
sumber

Jawaban:

10

Tuan rumah Anda mendefinisikan atribut khusus "http_vhosts" sebagai kamus, tetapi itu tidak pernah digunakan (tidak ada berlaku untuk iterasi aturan yang ditetapkan atas kamus itu dan objek layanan geberating).

Sebaliknya layanan menerapkan aturan (tanpa loop) hanya menerapkan layanan "httpS". Secara tidak sengaja atribut khusus host "http_ssl" diset - itu harus dibaca true sebagai boolean, bukan angka sebagai string (itu selalu benar).

Anda mungkin ingin memeriksa beberapa URI, tidak hanya /.

Proposal saya (2 solusi):

1) Perbaiki aturan berlaku layanan Anda dan hapus atribut kustom http_ * dari definisi objek host Anda. Alih-alih menambahkannya ke aturan layanan berlaku:

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

Anda dapat menemukan semua atribut khusus yang digunakan sebagai parameter perintah untuk http CheckCommand dalam dokumentasi: http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/plugin-check-commands#plugin-check- perintah-http

2) Gunakan layanan yang berlaku untuk aturan saja dan lewati kamus http_vhosts yang ditentukan di host.

vars.http_vhosts["https /"] = {
  http_ssl = true
  http_uri = "/"
}

Perhatikan penamaan di sini: "https /" akan menjadi nama layanan yang dihasilkan. http_ssl dan http_uri adalah nama yang persis sama dengan atribut khusus yang diperlukan oleh http CheckCommand.

Keajaiban terjadi di dalam aturan berlaku: Kunci kamus akan menjadi nama layanan. Nilai kamus adalah kamus bersarang dan berisi http_uri dan http_ssl sebagai kunci. Dalam contoh itu disebut "config". Kamus konfigurasi itu memiliki struktur yang sama persis dengan atribut "vars" yang mengapa kita bisa menambahkannya di dalam layanan berlaku untuk definisi.

apply Service for (servicename => config in host.vars.http_vhosts) {
  import "generic-service"
  check_command = "http"
  vars += config
}

Verifikasi konfigurasi menggunakan icinga2 daemon -C dan kemudian melihat ke objek layanan yang dihasilkan untuk melihat atribut kustom yang dihasilkan (daftar objek icinga2).

Satu hal yang baik - semua host yang memiliki atribut khusus http_vhosts didefinisikan akan menghasilkan objek layanan ini, tidak perlu untuk ekstea "menetapkan di mana" ekspresi (mungkin lebih baik tambahkan mengabaikan di mana pengecualian). Dengan strategi yang tepat Anda akan menulis berlaku untuk aturan sekali saja, dan hanya menambahkan host baru dengan kamus atribut khusus yang sesuai di masa depan :-)

http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/monitoring-basics#using-apply-for

Meskipun solusi 2) membutuhkan pengetahuan lanjutan tentang bahasa konfigurasi icinga 2 dan kata kuncinya, tipe nilai, dan trik sulap. Namun kami berpikir bahwa metode dan praktik terbaik seperti itu membantu mengurangi pemeliharaan jangka panjang dengan mengadopsi dan mengubah file.

Anda juga bisa melangkah lebih jauh dan menggunakan kondisi if-else untuk ambang yang berbeda berdasarkan nama host. Atau gunakan fungsi untuk mendefinisikan ambang dinamis berdasarkan periode waktu misalnya.

dnsmichi
sumber
2

Saya mencari di Google dan menemukan perintah http

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

Dalam contoh ini saya telah mencoba memonitor https://mail.google.com Di bawah ini adalah /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"
}

Berikut tampilannya di dasbor icingaweb2 masukkan deskripsi gambar di sini

Contoh2

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"
}
satch_boogie
sumber