Praktik terbaik server nagios?

10

Saya menjalankan server Nagios berukuran sedang. Ini memantau sekitar 40 server dengan 180 layanan saat ini dan hanya tumbuh dari hari ke hari.

Saya bermigrasi dari pengaturan Nagios lama yang dikonfigurasi dengan cara yang sangat esoteris, memaksa saya untuk mengonfigurasi ulang semuanya dari awal.

Sekarang server sedang berjalan dan bekerja untuk sebagian besar dari apa yang kita butuhkan untuk itu, saya ingin membuatnya sedikit lebih skalabel; saat ini masing-masing host memiliki file sendiri /etc/nagios/hosts/, dan setiap host memiliki semua layanannya dalam file yang sama. Ini jelas tidak optimal, tetapi tidak juga mengacaukan semua konfigurasi saya menjadi ratusan file yang berbeda.

Jadi pertanyaan saya adalah ini: untuk setiap admin Nagi yang berpengalaman di luar sana, apa cara terbaik untuk menggunakan hostgroups / servicegroups tanpa terlalu menyulitkan konfigurasi?

Michael Pobega
sumber

Jawaban:

13

Grup host dan template.

Template memungkinkan Anda menentukan kelas untuk host dan layanan Anda, mis. "Layanan normal", "layanan kritis", "host prioritas rendah". Mereka juga berfungsi sebagai cara yang berguna untuk membagi tanggung jawab jika Anda memiliki banyak tim dengan tanggung jawab yang berbeda, sehingga Anda dapat memiliki templat "host linux" dan templat "host windows", dengan masing-masing menentukan info kontak yang sesuai.

Anda dapat menggunakan beberapa templat pada satu sumber daya tunggal, sehingga Anda dapat menyusun templat ortogonal yang sesuai. Misalnya, Anda bisa memilikinya

host foo {
    use windows-host,normal-priority-host
    ...
}

yang akan menarik info kontak (dan eskalasi) untuk tim Windows dan tingkat pemungutan suara dan ambang batas untuk host "normal".

Hostgroup memungkinkan Anda mengelompokkan semua cek untuk subset host Anda. Memiliki hal-hal seperti "baseline-linux-hosts" yang memeriksa beban, ruang disk, sshkemampuan, dan apa pun hal lain yang harus ada di setiap host yang Anda monitor. Tambahkan grup seperti "https-server" dengan cek untuk konektivitas HTTP, konektivitas HTTPS, dan tanggal kedaluwarsa sertifikat SSL; "fileservers" dengan pemeriksaan untuk aksesibilitas NFS dan SMB dan mungkin pemeriksaan disk yang lebih agresif; atau "mesin virtual" dengan pemeriksaan apakah alat aksesibilitas VM berjalan dengan benar.

Tempatkan setiap host dan hostgroup dalam file sendiri. File itu harus mengandung definisi host atau hostgroup terlebih dahulu, diikuti oleh definisi layanan yang berlaku untuknya.

Jika Anda menggunakan cfg_dirarahan dalam nagios.cfgfile Anda , Nagios akan mencari secara rekursif melalui direktori itu. Manfaatkan itu. Untuk pengaturan cfg_dir=/etc/nagios/conf.d, Anda dapat memiliki pohon direktori seperti berikut:

  • /etc/nagios/conf.d/
    • perintah.d /
      • http.cfg
      • nrpe.cfg
      • smtp.cfg
      • ssh.cfg
    • hosts.d /
      • host1.cfg
      • host2.cfg
      • host3.cfg
    • hostgroups.d /
      • hostgroup1.cfg
      • hostgroup2.cfg

Saya cenderung membuat direktori untuk setiap jenis sumber daya (perintah, grup kontak, kontak, peningkatan, grup host, host, grup layanan, timeperiod) kecuali untuk layanan, yang dikelompokkan dengan host atau grup host yang menggunakannya.

Struktur yang tepat dapat bervariasi sesuai dengan kebutuhan organisasi Anda. Di pekerjaan sebelumnya, saya menggunakan subdirektori di bawah hosts.duntuk setiap situs yang berbeda. Pada pekerjaan saya saat ini, sebagian besar definisi nagios host dikelola oleh Puppet, jadi ada satu direktori untuk host yang dikelola Puppet dan yang terpisah untuk host yang dikelola dengan tangan.

Perhatikan bahwa di atas juga membagi perintah menjadi beberapa file, umumnya dengan protokol. Dengan demikian, nrpe.cfgberkas akan memiliki perintah check_nrpedan check_nrpe_1arg, sementara http.cfgbisa memiliki check_http, check_http_port, check_https, check_https_port, dan check_https_cert. 1

Saya biasanya tidak memiliki banyak template, jadi saya biasanya hanya punya hosts.d/templates.cfgfile dan services.d/templates.cfgfile. Jika Anda menggunakannya lebih banyak, mereka dapat masuk ke file yang dinamai secara tepat dalam templates.ddirektori.

1 Saya juga ingin memiliki check_http_blindlyperintah, yang pada dasarnya check_http -H $HOSTADDRESS$ -I $HOSTADDRESS$ -e HTTP/1.; mengembalikan OK bahkan jika mendapat kode respons 403.

asciiphil
sumber
6

Manfaatkan layanan dan grup host secara ekstensif, dan templating. Buat hostgroup, dan tetapkan layanan ke hostgroup. Gunakan servicegroups untuk dependensi, eskalasi, dan pengelompokan logis di UI web.

Jika Anda memiliki grup untuk semuanya, menambahkan host baru hanya 3 atau 4 baris: nama, alamat, templat, dan hostgroup (opsional). Semuanya bisa di-templated.

Pastikan untuk membaca dokumen tentang warisan , dan juga halaman trik menghemat waktu . Banyak warisan bisa menjadi rumit, tetapi ketika digunakan dengan benar itu adalah penghemat waktu yang sangat besar.

Keith
sumber
Saya ingin menemukan keseimbangan dengan konfigurasi; terlalu banyak warisan bisa menjadi rumit ketika admin lain harus mengambil server (saya magang jadi saya tidak akan menjalankan ini lebih lama).
Michael Pobega
1
Mungkin menjauh dari banyak warisan, lalu. Cukup gunakan cascading templates jika Anda ingin membuatnya tetap sederhana (ish).
Keith
1

Saya sudah terbiasa mengkonfigurasi server nagios saya (sebelum saya beralih ke Icinga) dengan cara ini, dan tidak ada kekurangan kinerja sampai Anda mencapai lebih dari 500 layanan setidaknya dengan server Memory / 1 CPU 512Mb. hostgroups dan servicegroups dapat diperlakukan sepenuhnya secara terpisah, dan saya akan merekomendasikan pendekatan ini karena memungkinkan memiliki satu file per server (layanan untuk server ini didefinisikan dalam file ini) dan kemudian, pada file per hostgroup / servicegroups. Ini hanya lebih dimengerti / jelas.

Jika Anda mengalami masalah skalabilitas, Anda mungkin ingin melihat nagios-nrpe-server, yang melakukan pemeriksaan pada sisi klien dan semua server nagios Anda hanya meminta hasil saja; yang menyisihkan sumber daya cek. (Nagios meluncurkan check_nrpe, klien diminta, melakukan pemeriksaan secara lokal dan membalas kembali ke nagios). Ingatlah bahwa semua cek tidak dapat diperlakukan dengan cara ini (misalnya SNMP).

Untuk menyelesaikannya, dan bahkan jika kelihatannya di luar jangkauan pertanyaan Anda, saya akan menyarankan untuk beralih ke Icinga, yang merupakan cara yang lebih terukur, dimiliki oleh komunitas yang lebih kuat yang benar-benar peduli pada implementasi fitur baru dan dukungan pengguna. Konfigurasi sama (file konfigurasi yang sama, sintaks yang sama).

philippe
sumber
Dengan scalable yang saya maksud adalah konfigurasi, bukan masalah skalabilitas; Saya tidak khawatir akan mencapai ambang itu. Apa sebenarnya yang Anda maksud tentang hostgroups / servicegroups? Saya tidak mengerti penjelasan Anda.
Michael Pobega
1

Saya menggunakan skema ini:

  • tuan rumah,
  • hostgroup,
  • layanan jarak jauh,
  • layanan lokal.

Setiap entitas memiliki file sendiri. Selain dengan template Anda selalu dapat membuat pembersih konfigurasi Anda lebih mudah dibaca. Misalnya, Anda mungkin memiliki rata-rata memuat, ruang disk, memori di setiap host. Jadi cukup mudah dan praktis untuk membuat template umum dan menggunakannya.

pengguna3120146
sumber
1

Anda tidak dapat menyulitkan konfigurasi dengan membuat grup. Seperti yang dikatakan asciiphil, Anda membuat file atau Anda dapat menentukan grup yang sama di beberapa file yang ada seperti (hosts.cfg atau apa pun), dan Anda membuat file ini atau Anda mengatakan kepada nagios bahwa file ini aktif (ini adalah jika Anda membuat file baru, jika belum aktif), dan ini ada di file nagios.cfg di mana Anda meletakkan path file yang baru dibuat. "cfg_file = / usr / local / nagios / etc / objects / NEW_FILE.cfg"

Hal lainnya adalah membuat grup tergantung pada infrastruktur Anda. Jika misalnya saya punya linux dan windows server saya akan membuat dua kelompok berbeda satu untuk linux dan lainnya untuk windows. Itu sama dengan layanan. Tergantung pada bagaimana Anda ingin mengonfigurasi dan melihat ketika Anda memantau pada monitor, bagaimana Anda ingin melihatnya sebagai kelompok.

Dan untuk file atau bagian cara membuat grup itu sederhana.

    define hostgroup{
    hostgroup_name novell-servers
    alias Novell Servers
    members netware1,netware2,netware3,netware4
    }

Dan pada konfigurasi host / atau jika Anda menggunakan template atau jika Anda telah menentukan template host atau layanan dan penggunaan, Anda dapat memberitahu secara otomatis ke semua host / windows atau host linux untuk menjadi anggota dari grup host yang ditentukan yang Anda buat.

IvanAK
sumber