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.