Monitorado de IBM Storwize-stokado kun Zabbix

En ĉi tiu artikolo ni parolos iomete pri monitorado de IBM Storwize stokadsistemoj kaj aliaj stokadsistemoj kiuj subtenas la CIM/WBEM-protokolojn. La bezono de tia monitorado estas forlasita el la ekvacio; ni konsideros ĉi tion aksiomo. Ni uzos Zabbix kiel monitoran sistemon.

En la plej novaj versioj de Zabbix, la kompanio komencis atenti multe pli da ŝablonoj - ŝablonoj komencis aperi por monitorado de servoj, DBMS, Serviloj-aparataro (IMM/iBMC) per IPMI. Monitorado de stokadsistemo ankoraŭ estas ekster la ŝablonoj el la skatolo, do por integri informojn pri la stato kaj agado de stokadkomponentoj en Zabbix, vi devas uzi kutimajn ŝablonojn. Mi atentigas vin pri unu el ĉi tiuj ŝablonoj.

Unue, iom da teorio.

Por aliri la statuson kaj statistikon de IBM Storwize stokadsistemoj, vi povas uzi:

  1. CIM/WBEM-protokoloj;
  2. RESTful API (subtenata en IBM Storwize komencante kun softvarversio 8.1.3);
  3. SNMP-Kaptiloj (limigita aro de kaptiloj, neniuj statistikoj);
  4. Konekti per SSH kaj poste malproksime taŭga por trankvila bash-skripto.

Interesatoj povas lerni pli pri diversaj monitoraj metodoj en la koncernaj sekcioj de la vendisto-dokumentado, kaj ankaŭ en la dokumento. IBM Spectrum Virtualize skripto.

Ni uzos la protokolojn CIM/WBEM, kiuj ebligas al ni akiri operaciumajn parametrojn de stokado sen signifaj programaj ŝanĝoj por malsamaj stokadsistemoj. La CIM/WBEM-protokoloj funkcias laŭ Specifo pri Stokado-Administra Iniciato (SMI-S). Storage Management Initiative - Specifo baziĝas sur malfermaj normoj CIM (Komuna Informo-Modelo) и WBEM (Ret-Bazita Entreprena Administrado), decidita Distribuita Administra Task Force.

WBEM funkcias super la HTTP-protokolo. Per WBEM vi povas labori ne nur kun stokaj sistemoj, sed ankaŭ kun HBA-oj, ŝaltiloj kaj bendbibliotekoj.

Laŭ SMI-Arkitekturo и Determini Infrastrukturon, la ĉefa komponanto de la SMI-efektivigo estas la WBEM-servilo, kiu prilaboras CIM-XML-petojn de WBEM-klientoj (en nia kazo, de monitoraj skriptoj):

Monitorado de IBM Storwize-stokado kun Zabbix

CIM estas objekto-orientita modelo bazita sur Unified Modeling Language (UML).
Administritaj elementoj estas difinitaj kiel CIM-klasoj kiuj havas trajtojn kaj metodojn por reprezenti administritajn datenojn kaj funkciecon.

Laŭ www.snia.org/pywbem, por aliri stokadsistemojn per CIM/WBEM, vi povas uzi PyWBEM - malfermfonteca biblioteko skribita en Python, kiu provizas programistojn kaj sistemadministrantojn per efektivigo de la CIM-protokolo por aliri CIM-objektojn kaj plenumi diversajn operaciojn kun WBEM-servilo funkcianta en konforme al SMI-S aŭ aliaj CIM-specifoj.

Por konektiĝi al la WBEM-servilo ni uzas la klaskonstruilon WBEMCkonekto:

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

Ĉi tio estas virtuala konekto, ĉar CIM-XML/WBEM funkcias supre de HTTP, la reala konekto okazas kiam metodoj estas vokitaj sur okazo de la WBEMConnection-klaso. Konforme al la IBM System Storage SAN Volume Controller kaj Storwize V7000 Best Practices and Performance Guidelines (Ekzemplo C-8, paĝo 412), ni uzos "root/ibm" kiel la CIM-nomspacon por la IBM Storwize stokadsistemo.

Bonvolu noti, ke por kolekti statistikojn per la protokolo CIM-XML/WBEM, vi devas inkluzivi la uzanton en la taŭga sekureca grupo. Alie, dum plenumado de WBEM-demandoj, la eligo de klasaj petskriboj estos malplena.

Por aliri stokadstatistikojn, la uzanto sub kiu la konstrukciisto estas vokita WBEMKonekto (), devas havi almenaŭ RestrictedAdmin (disponebla por code_level > 7.8.0) aŭ Administranto-rajtojn (ne rekomenditaj pro sekurecaj kialoj).

Ni konektas al la stokadsistemo per SSH kaj rigardas la grupnumerojn:

> 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    

Aldonu la uzanton zabbix al la dezirata grupo:

> chuser -usergrp 5 zabbix

Krome, laŭ la IBM System Storage SAN Volume Controller kaj Storwize V7000 Best Practices and Performance Guidelines (p. 415), vi devas ebligi statistikan kolekton sur la stokadsistemo. Do, por kolekti statistikojn ĉiun minuton:

> startstats -interval 1 

Ni kontrolas:

> lssystem | grep statistics
statistics_status on
statistics_frequency 1

Por akiri ĉiujn ekzistantajn stokadklasojn, vi devas uzi la metodon EnumerateClassNames().

Ekzemplo:

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

La metodo estas uzata por akiri la valorojn de la parametroj de la stokadsistemo Nombri instancojn () klaso WBEMConnection, resendante liston de okazoj CIMInstance ().

Ekzemplo:

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))

Por kelkaj klasoj kiuj enhavas grandan nombron da okazoj, kiel IBMTSSVC_StorageVolume, plena pridemando de ĉiuj okazoj povas esti sufiĉe malrapida. Ĝi povas generi grandajn volumojn da datumoj, kiuj devas esti preparitaj de la stokada sistemo, transdonitaj tra la reto kaj prilaboritaj de la skripto. Estas metodo por tia kazo ExecQuery (), kiu ebligas al ni ricevi nur la ecojn de klasa petskribo kiu interesas nin. Ĉi tiu metodo implikas uzi SQL-similan demandlingvon, aŭ CIM Query Language (DMTF:CQL) aŭ WBEM Query Language (WQL), por pridemandi CIM-stokadobjektojn:

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

Por determini kiajn klasojn ni bezonas akiri la parametrojn de stokaj objektoj, legu la dokumentadon, ekzemple Kiel sistemaj konceptoj mapas al CIM-konceptoj.

Do, por akiri parametrojn (ne efikecajn nombrilojn) de fizikaj diskoj (Disk Drives) ni balotos Class IBMTSSVC_DiskDrive, por akiri Volumojn-parametrojn - Class IBMTSSVC_StorageVolume, por akiri tabelajn parametrojn - Class IBMTSSVC_Array, por akiri MDisks-parametrojn - Class IBMTSSVC_BackendVolume, ktp.

Por agado vi povas legi Funkciaj diagramoj de la Common Information Model agento (specife - Bloki servila agado subprofilo) kaj IBM System Storage SAN Volume Controller kaj Storwize V7000 Best Practices and Performance Guidelines (Ekzemplo C-11, paĝo 415).

Por akiri stokajn statistikojn por Volumoj, vi devas specifi IBMTSSVC_StorageVolumeStatistics kiel la valoron de la parametro ClassName. La trajtoj de la IBMTSSVC_StorageVolumeStatistics klaso necesaj por kolektado de statistikoj povas esti viditaj en Noda Statistiko.

Ankaŭ por analizo de rendimento vi povas uzi la klasojn IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics.

Por registri datumojn en la monitoran sistemon ni uzos la mekanismon zabbix kaptiloj, efektivigita en python en modulo py-zabbix. Ni metos la strukturon de klasoj de stokaj sistemoj kaj iliaj propraĵoj en vortaron en formato JSON.

Ni alŝutas la ŝablonon al la servilo Zabbix, certigas, ke la monitora servilo havas aliron al la stokadsistemo per la WEB-protokolo (TCP/5989), kaj metas agordajn dosierojn, detektajn kaj monitorajn skriptojn sur la monitora servilo. Poste, aldonu skriptolanĉon al la planilo. Kiel rezulto: ni malkovras stokadobjektojn (tabeloj, fizikaj kaj virtualaj diskoj, enfermaĵoj kaj multe pli), transdonas ilin al Zabbix-malkovroj, legas la staton de iliaj parametroj, legas rendimentostatistikojn (efikeckalkuliloj), transdonas ĉion ĉi al la responda Zabbix. Eroj de nia ŝablono.

Zabbix-ŝablono, python-skriptoj, strukturo de stokaj klasoj kaj iliaj propraĵoj, same kiel ekzemploj de agordaj dosieroj, vi povas trovi ĉi tie.

fonto: www.habr.com

Aldoni komenton