Memantau penyimpanan IBM Storwize dengan Zabbix

Pada artikel ini kita akan membahas sedikit tentang pemantauan sistem penyimpanan IBM Storwize dan sistem penyimpanan lain yang mendukung protokol CIM/WBEM. Kebutuhan akan pemantauan seperti ini tidak diperhitungkan; kami akan menganggap hal ini sebagai sebuah aksioma. Kami akan menggunakan Zabbix sebagai sistem pemantauan.

Di Zabbix versi terbaru, perusahaan mulai lebih memperhatikan templat - templat mulai bermunculan untuk layanan pemantauan, DBMS, perangkat keras Server (IMM/iBMC) melalui IPMI. Pemantauan sistem penyimpanan masih di luar templat, jadi untuk mengintegrasikan informasi tentang status dan kinerja komponen penyimpanan ke Zabbix, Anda perlu menggunakan templat khusus. Saya memberi perhatian Anda salah satu templat ini.

Pertama, sedikit teori.

Untuk mengakses status dan statistik sistem penyimpanan IBM Storwize, Anda dapat menggunakan:

  1. protokol CIM/WBEM;
  2. API TENANG (didukung di IBM Storwize dimulai dengan perangkat lunak versi 8.1.3);
  3. Perangkap SNMP (perangkap terbatas, tidak ada statistik);
  4. Terhubung melalui SSH dan kemudian dari jarak jauh cocok untuk skrip bash santai.

Mereka yang tertarik dapat mempelajari lebih lanjut tentang berbagai metode pemantauan di bagian yang relevan dari dokumentasi vendor, serta di dokumen Skrip Virtualisasi IBM Spectrum.

Kami akan menggunakan protokol CIM/WBEM, yang memungkinkan kami memperoleh parameter pengoperasian sistem penyimpanan tanpa perubahan perangkat lunak yang signifikan untuk sistem penyimpanan yang berbeda. Protokol CIM/WBEM beroperasi sesuai dengan Spesifikasi Inisiatif Manajemen Penyimpanan (SMI-S). Inisiatif Manajemen Penyimpanan – Spesifikasi didasarkan pada standar terbuka CIM (Model Informasi Umum) ΠΈ WBEM (Manajemen Perusahaan Berbasis Web), bertekad Gugus Tugas Manajemen Terdistribusi.

WBEM berjalan di atas protokol HTTP. Melalui WBEM Anda tidak hanya dapat bekerja dengan sistem penyimpanan, tetapi juga dengan HBA, switch, dan perpustakaan tape.

Menurut Arsitektur IKM ΠΈ Tentukan Infrastruktur, komponen utama implementasi SMI adalah server WBEM, yang memproses permintaan CIM-XML dari klien WBEM (dalam kasus kami, dari skrip pemantauan):

Memantau penyimpanan IBM Storwize dengan Zabbix

CIM adalah model berorientasi objek berdasarkan Unified Modeling Language (UML).
Elemen terkelola didefinisikan sebagai kelas CIM yang memiliki properti dan metode untuk mewakili data dan fungsionalitas terkelola.

Menurut www.snia.org/pywbem, untuk mengakses sistem penyimpanan melalui CIM/WBEM, Anda dapat menggunakan PyWBEM - pustaka sumber terbuka yang ditulis dengan Python, yang memberi pengembang dan administrator sistem implementasi protokol CIM untuk mengakses objek CIM dan melakukan berbagai operasi dengan server WBEM yang beroperasi di sesuai dengan SMI-S atau spesifikasi CIM lainnya.

Untuk terhubung ke server WBEM kami menggunakan konstruktor kelas Koneksi WBEM:

conn = pywbem.WBEMConnection(server_uri, (self.login, self.password),
            namespace, no_verification=True)

Ini adalah koneksi virtual, karena CIM-XML/WBEM berjalan di atas HTTP, koneksi sebenarnya terjadi ketika metode dipanggil pada instance kelas WBEMConnection. Sesuai dengan IBM System Storage SAN Volume Controller dan Storwize V7000 Best Practices and Performance Guidelines (Contoh C-8, halaman 412), kami akan menggunakan β€œroot/ibm” sebagai namespace CIM untuk sistem penyimpanan IBM Storwize.

Harap dicatat bahwa untuk mengumpulkan statistik melalui protokol CIM-XML/WBEM, Anda harus memasukkan pengguna dalam grup keamanan yang sesuai. Jika tidak, saat menjalankan kueri WBEM, keluaran atribut instance kelas akan kosong.

Untuk mengakses statistik penyimpanan, pengguna yang memanggil konstruktor Koneksi WBEM(), harus memiliki setidaknya RestrictedAdmin (tersedia untuk code_level > 7.8.0) atau hak Administrator (tidak disarankan karena alasan keamanan).

Kami terhubung ke sistem penyimpanan melalui SSH dan melihat nomor grup:

> lsusergrp
id name            role            remote
0  SecurityAdmin   SecurityAdmin   no    
1  Administrator   Administrator   no    
2  CopyOperator    CopyOperator    no    
3  Service         Service         no    
4  Monitor         Monitor         no    
5  RestrictedAdmin RestrictedAdmin no    

Tambahkan pengguna zabbix ke grup yang diinginkan:

> chuser -usergrp 5 zabbix

Selain itu, sesuai dengan IBM System Storage SAN Volume Controller dan Storwize V7000 Best Practices and Performance Guidelines (p. 415), Anda harus mengaktifkan pengumpulan statistik pada sistem penyimpanan. Jadi, untuk mengumpulkan statistik setiap menit:

> startstats -interval 1 

Kami memeriksa:

> lssystem | grep statistics
statistics_status on
statistics_frequency 1

Untuk mendapatkan semua kelas penyimpanan yang ada, Anda harus menggunakan metode EnumerateClassNames().

Contoh:

classnames = conn.EnumerateClassNames(namespace='root/ibm', DeepInheritance=True)
for classname in classnames:
     print (classname)

Metode tersebut digunakan untuk memperoleh nilai parameter sistem penyimpanan MenghitungInstance() kelas WBEMConnection, mengembalikan daftar instance CIMIInstance().

Contoh:

instances = conn.EnumerateInstances(classname,
                   namespace=nd_parameters['name_space'])
for instance in instances:
     for prop_name, prop_value in instance.items():
          print('  %s: %r' % (prop_name, prop_value))

Untuk beberapa kelas yang berisi sejumlah besar contoh, seperti IBMTSSVC_StorageVolume, permintaan penuh dari semua contoh bisa sangat lambat. Ini dapat menghasilkan data dalam jumlah besar yang harus disiapkan oleh sistem penyimpanan, dikirimkan melalui jaringan dan diproses oleh skrip. Ada metode untuk kasus seperti itu Eksekusi(), yang memungkinkan kita mendapatkan hanya properti instance kelas yang kita minati. Metode ini melibatkan penggunaan bahasa kueri mirip SQL, baik CIM Query Language (DMTF:CQL) atau WBEM Query Language (WQL), untuk mengkueri objek penyimpanan CIM:

request = 'SELECT Name FROM IBMTSSVC_StorageVolumeStatistics'
objects_perfs_cim = wbem_connection.ExecQuery('DMTF:CQL', request)

Untuk menentukan kelas mana yang kita perlukan untuk mendapatkan parameter objek penyimpanan, baca dokumentasinya, misalnya Bagaimana konsep sistem dipetakan ke konsep CIM.

Jadi, untuk mendapatkan parameter (bukan penghitung kinerja) dari disk fisik (Disk Drives) kita akan melakukan polling Kelas IBMTSSVC_DiskDrive, untuk mendapatkan parameter Volume - Kelas IBMTSSVC_StorageVolume, untuk mendapatkan parameter array - Kelas IBMTSSVC_Array, untuk mendapatkan parameter MDisks - Kelas IBMTSSVC_BackendVolume, dll.

Untuk performanya bisa anda baca Diagram fungsional agen Model Informasi Umum (khususnya - Blokir subprofil kinerja server) dan IBM System Storage SAN Volume Controller serta Praktik Terbaik dan Pedoman Kinerja Storwize V7000 (Contoh C-11, halaman 415).

Untuk mendapatkan statistik penyimpanan Volume, Anda harus menentukan IBMTSSVC_StorageVolumeStatistics sebagai nilai parameter ClassName. Properti kelas IBMTSSVC_StorageVolumeStatistics yang diperlukan untuk mengumpulkan statistik dapat dilihat di Statistik Node.

Selain itu, untuk analisis kinerja, Anda dapat menggunakan kelas IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics.

Untuk mencatat data ke dalam sistem monitoring kita akan menggunakan mekanisme perangkap zabbix, diimplementasikan dengan python dalam sebuah modul py-zabbix. Kami akan menempatkan struktur kelas sistem penyimpanan dan propertinya dalam kamus dalam format JSON.

Kami mengunggah template ke server Zabbix, memastikan bahwa server pemantauan memiliki akses ke sistem penyimpanan melalui protokol WEB (TCP/5989), dan menempatkan file konfigurasi, skrip deteksi dan pemantauan di server pemantauan. Selanjutnya, tambahkan peluncuran skrip ke penjadwal. Hasilnya: kami menemukan objek penyimpanan (array, disk fisik dan virtual, enklosur, dan banyak lagi), mentransfernya ke penemuan Zabbix, membaca status parameternya, membaca statistik kinerja (penghitung kinerja), mentransfer semua ini ke Zabbix yang sesuai Item templat kami.

Template Zabbix, skrip python, struktur kelas penyimpanan dan propertinya, serta contoh file konfigurasi, Anda bisa temukan di sini.

Sumber: www.habr.com

Tambah komentar