Ing artikel iki, kita bakal ngomong sethithik babagan ngawasi sistem panyimpenan IBM Storwize lan sistem panyimpenan liyane sing ndhukung protokol CIM / WBEM. Keperluan kanggo ngawasi kasebut ditinggalake saka kurung; kita bakal nganggep iki minangka aksioma. Kita bakal nggunakake Zabbix minangka sistem ngawasi.
Ing versi paling anyar saka Zabbix, perusahaan wiwit mbayar manungsa waé luwih akeh kanggo cithakan - Cithakan wiwit katon kanggo layanan ngawasi, DBMS, Server hardware (IMM / iBMC) liwat IPMI. Pemantauan panyimpenan isih metu saka kothak, mulane, kanggo nggabungake informasi babagan status lan kinerja komponen panyimpenan menyang Zabbix, sampeyan kudu nggunakake template khusus. Aku nggawa menyang manungsa waé siji saka cithakan iki.
First, teori sethitik.
Kanggo ngakses status lan statistik panyimpenan IBM Storwize, sampeyan bisa nggunakake:
protokol CIM/WBEM;
RESTful API (didhukung dening IBM Storwize wiwit karo versi piranti lunak 8.1.3);
Traps SNMP (set jebakan winates, ora ana statistik);
Sing kasengsem bisa sinau luwih lengkap babagan macem-macem cara ngawasi ing bagean sing relevan saka dokumentasi vendor, uga ing dokumen kasebut IBM Spectrum Virtualize scripting.
WBEM dianggo ing ndhuwur protokol HTTP. Liwat WBEM, sampeyan ora mung bisa nggarap sistem panyimpenan, nanging uga nganggo perpustakaan HBA, switch, lan tape.
Miturut SMI Arsitektur и Nemtokake Infrastruktur, komponen utama implementasi SMI yaiku server WBEM sing ngolah panjalukan CIM-XML saka klien WBEM (ing kasus kita, saka skrip ngawasi):
CIM minangka model berorientasi obyek adhedhasar Unified Modeling Language (UML).
Item sing dikelola ditetepake minangka kelas CIM sing nduweni sifat lan cara kanggo makili data lan fungsi sing dikelola.
Miturut www.snia.org/pywbem, kanggo ngakses panyimpenan liwat CIM / WBEM, sampeyan bisa nggunakake PyWBEM, perpustakaan open source sing ditulis ing Python sing nyedhiyakake pangembang lan administrator sistem kanthi implementasi protokol CIM kanggo ngakses obyek CIM lan nindakake macem-macem operasi karo server WBEM sing beroperasi miturut SMI -S utawa specifications CIM liyane.
Kanggo nyambung menyang server WBEM, nggunakake konstruktor kelas Koneksi WBEMC:
Iki sambungan virtual, amarga CIM-XML / WBEM mbukak liwat HTTP, sambungan nyata occurs nalika cara disebut ing Kayata saka kelas WBEMConnection. Sesuai karo IBM System Storage SAN Volume Controller lan Storwize V7000 Best Practices and Performance Guidelines (Contone C-8, kaca 412), kita bakal nggunakake "root / ibm" minangka ruang jeneng CIM kanggo panyimpenan IBM Storwize.
Elinga yen kanggo ngumpulake statistik ing protokol CIM-XML/WBEM, sampeyan kudu nyakup pangguna ing grup keamanan sing cocog. Yen ora, nalika nglakokake pitakon WBEM, output atribut conto kelas bakal kosong.
Kanggo ngakses statistik panyimpenan, pangguna sing diarani konstruktor WBEMCconnection(), kudu paling sethithik RestrictedAdmin (kasedhiya kanggo code_level > 7.8.0) utawa Administrator (ora dianjurake kanggo alasan keamanan).
Kita nyambung menyang sistem panyimpenan liwat SSH lan ndeleng nomer 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
Tambah pangguna zabbix menyang grup sing dikarepake:
> chuser -usergrp 5 zabbix
Kajaba iku, miturut IBM System Storage SAN Volume Controller lan Storwize V7000 Best Practices and Performance Guidelines (p. 415), sampeyan kudu ngaktifake koleksi statistik ing sistem panyimpenan. Dadi, kanggo ngumpulake statistik saben menit:
> startstats -interval 1
Priksa:
> lssystem | grep statistics
statistics_status on
statistics_frequency 1
Kanggo entuk kabeh kelas panyimpenan sing ana, sampeyan kudu nggunakake metode EnumerateClassNames ().
Conto:
classnames = conn.EnumerateClassNames(namespace='root/ibm', DeepInheritance=True)
for classname in classnames:
print (classname)
Kanggo entuk nilai paramèter sistem panyimpenan, metode kasebut EnumerateInstances() Kelas WBEMConnection ngasilake dhaptar conto CIMInstance().
Conto:
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))
Kanggo sawetara kelas sing ngemot nomer akeh kedadean, kayata IBMTSSVC_StorageVolume, pitakonan lengkap kabeh kedadean bisa cukup alon. Bisa ngasilake akeh data sing kudu disiapake dening sistem panyimpenan, ditularake liwat jaringan lan diproses kanthi naskah. Kanggo kasus kaya mengkono, ana cara ExecQuery(), sing ngidini sampeyan entuk mung properti saka conto kelas sing menarik kanggo kita. Cara iki kalebu nggunakake basa pitakon kaya SQL, salah siji CIM Query Language (DMTF:CQL) utawa WBEM Query Language (WQL), kanggo pitakon obyek panyimpenan CIM:
request = 'SELECT Name FROM IBMTSSVC_StorageVolumeStatistics'
objects_perfs_cim = wbem_connection.ExecQuery('DMTF:CQL', request)
Dadi, kanggo entuk paramèter (dudu penghitung kinerja) saka disk fisik (Disk Drives), kita bakal takon Kelas IBMTSSVC_DiskDrive, kanggo njaluk parameter Volume - Kelas IBMTSSVC_StorageVolume, kanggo entuk paramèter array - Kelas IBMTSSVC_Array, kanggo njaluk parameter MDisks - Kelas IBMTSSVC_BackendVolume, etc.
Kanggo entuk statistik panyimpenan kanggo Volume, sampeyan kudu nemtokake IBMTSSVC_StorageVolumeStatistics minangka nilai parameter ClassName. Properti kelas IBMTSSVC_StorageVolumeStatistics sing dibutuhake kanggo ngumpulake statistik bisa ditemokake ing Statistik Node.
Uga, kanggo analisis kinerja, sampeyan bisa nggunakake kelas IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics.
Kanggo nulis data menyang sistem ngawasi, kita bakal nggunakake mekanisme kasebut traps zabbix, dipun ginakaken ing python ing modul py-zabbix. Struktur kelas panyimpenan lan sifate bakal diselehake ing kamus ing format JSON.
Kita ngunggah cithakan menyang server Zabbix, priksa manawa server ngawasi duwe akses menyang panyimpenan liwat protokol WEB (TCP / 5989), pasang file konfigurasi, deteksi lan skrip ngawasi ing server ngawasi. Sabanjure, tambahake skrip menyang panjadwal. Akibaté: kita nemokake obyek panyimpenan (larik, disk fisik lan virtual, enclosures, lan akeh liyane), pass menyang Zabbix panemuan, maca status paramèter, maca statistik kinerja (perfomance counters), transfer kabeh iki menyang cocog Zabbix Item saka cithakan kita.
Cithakan Zabbix, skrip python, struktur kelas panyimpenan lan properti, uga conto file konfigurasi, bisa golek kene.