IBM Storwize'i salvestussüsteemide jälgimine Zabbixi abil

Selles artiklis räägime natuke IBM Storwize'i ja teiste salvestussüsteemide jälgimisest, mis toetavad protokolle CIM/WBEM. Selle jälgimise vajadust ei käsitleta, oletame, et see on aksepteeritud. Jälgimissüsteemina kasutame Zabbixi.

Zabbixi viimastes versioonides on ettevõte pööranud palju rohkem tähelepanu mallidele — ilmuvad mallid teenuste, andmebaaside ja serverite riistvara (IMM/iBMC) jälgimiseks IPMI kaudu. Salvestussüsteemide jälgimine jääb siiski välja malli, seega info integreerimiseks Zabbixisse salvestussüsteemi komponentide oleku ja jõudluse kohta on vaja kasutada kohandatud malle. Ühte sellist malli pakun teie tähelepanu alla.

Alustuseks natuke teooriat.

IBM Storwize'i oleku ja statistika juurde pääsemiseks saab kasutada:

  1. Protokolle CIM/WBEM;
  2. RESTful API (IBM Storwize'is on toetatud alates tarkvara versioonist 8.1.3);
  3. SNMP Traps (piiratud kogum trap'e, statistika puudub);
  4. SSH kaudu ühendamine ja seejärel kauge sobib aeglaseks bash-skriptimiseks..

Huvitatud saavad lähemalt tutvuda erinevate monitooringumeetoditega vastavates tootja dokumentatsiooni jaotisetes ning dokumendis IBM Spectrum Virtualize skriptimine.

Kasutame protokolle CIM/WBEM, mis võimaldavad saada salvestusseadmestiku tööparameetreid ilma oluliste tarkvaramuudatusteta erinevatele salvestusseadmestikele. Protokollid CIM/WBEM toimivad vastavalt Storage Management Initiative Specification (SMI-S). Storage Management Initiative – Specification põhineb avatud standarditel CIM (Common Information Model) ja WBEM (Web-Based Enterprise Management), mida määratleb Distributed Management Task Force.

WBEM töötab HTTP protokolli peal. WBEM-i kaudu saab töötada mitte ainult salvestusseadmetega, vaid ka HBA-de, lülititega ja digitaallindiga.

Vastavalt SMI arhitektuur ja Määratle infrastruktuur, SMI rakendamise põhikomponent on WBEM-server, mis töötleb CIM-XML päringuid WBEM-klientidelt (meie puhul monitooringuskriptidelt):

IBM Storwize'i salvestussüsteemide jälgimine Zabbixi abil

CIM on objekti-orienteeritud mudel, mis põhineb Ühtse Modelleerimise Keeles (UML).
Haldatavad elemendid määratletakse CIM-klassidena, millel on omadused ja meetodid hallatavate andmete ja funktsioonide esitamiseks.

Vastavalt www.snia.org/pywbem, et le CIM / WBEM juuresse pääsemiseks võib kasutada PyWBEM'i — avatud lähtekoodiga raamatukogu, mis on kirjutatud Pythonis ja pakub arendajatele ja süsteemiadministraatoritele CIM-protokolli rakendust, et pääseda CIM-objektidele ja teostada erinevaid toiminguid WBEM-serveriga, mis töötab SMI-S või muude CIM-spetsifikatsioonide kohaselt.

WBEM-serveriga ühenduse loomiseks kasutame klassi konstruktorit WBEMConnection:

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

See on virtuaalne ühendus, kuna CIM-XML / WBEM töötab HTTP peal, reaalse ühenduse loomine toimub WBEMConnection klassi meetodite kutsumise ajal. Vastavalt IBM System Storage SAN Volume Controller ja Storwize V7000 parimate praktikate ja jõudluse juhistele (Näide C-8, lk 412), kasutame IBM Storwize jaoks CIM nimiruumi «root / ibm».

Pange tähele, et CIM-XML / WBEM protokolli statistika kogumiseks peab kasutaja kuuluma vastavasse turvagruppi. Vastasel juhul on WBEM-päringute täitmisel klassi eksemplari atribuutide väljund tühi..

Süsteemilooja statistikale pääsemiseks peab kasutaja, kelle alt lood konstruktorit WBEMConnection(), peab olema vähemalt RestrictedAdmin (kehtib code_level > 7.8.0) või Administrator (ei soovita turvakaalutlustel).

Ühendame SAN-i SSH kaudu ja vaatame grupi numbreid:

> 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    

Lisame kasutaja zabbix vajalikku gruppi:

> chuser -usergrp 5 zabbix

Lisaks tuleb IBM System Storage SAN Volume Controller ja Storwize V7000 parimate praktikate ja jõudluse suuniste kohaselt (lk 415) statistika kogumine SAN-is sisse lülitada. Seega statistika kogumiseks iga minuti tagant:

> startstats -interval 1 

Kontrollin:

> lssystem | grep statistics
statistics_status on
statistics_frequency 1

Kõikide olemasolevate SAN-i klasside saamiseks tuleb kasutada meetodit EnumerateClassNames().

Näide:

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

SAN-i parameetrite väärtuste saamiseks on mõeldud meetod EnumerateInstances() klassist WBEMConnection, mis tagastab eksemplaride loendi CIMInstance().

Näide:

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

Teatud klasside, mis sisaldavad suurt hulka eksemplare, nagu IBMTSSVC_StorageVolume, täispäring kõigi eksemplaride kohta võib olla üsna aeglane. See võib genereerida suuri andmemahtusid, mis peavad olema ette valmistatud salvestusseadmest, edastatud üle võrgu ja töödeldud skripti poolt. Sellistel juhtudel on olemas meetod ExecQuery(), mis võimaldab saada ainult meid huvitavad klassi eksemplari omadused. See meetod eeldab päringukeelt, nagu SQL — kas CIM Query Language (DMTF:CQL) või WBEM Query Language (WQL), et küsida CIM-objekte salvestusseadmest:

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

Kuna saame määrata, millised klassid on vajalikud salvestusseadmest objektide parameetrite saamiseks, siis loeme dokumentatsiooni, näiteks How system concepts map to CIM concepts.

Seega, et saada füüsiliste diskide (Disk Drives) parameetreid, uurime klassi IBMTSSVC_DiskDrive, et saada mahtude (Volumes) parameetreid — klassi IBMTSSVC_StorageVolume, et saada massiivide (Arrays) parameetreid — klassi IBMTSSVC_Array, et saada MDisks'i parameetreid — klassi IBMTSSVC_BackendVolume jne.

Tootlikkuse kohta saab lugeda Functional diagrams of the Common Information Model agent (konkreetselt — Blokeeri serveri jõudluse alaprofiil) ja IBM System Storage SAN Volume Controller ja Storwize V7000 parimad praktikas ja jõudluse juhised (Näide C-11, lk 415).

Süsteemi volüümide statistika saamiseks tuleb parameetri ClassName väärtuseks määrata IBMTSSVC_StorageVolumeStatistics. Statistika kogumiseks vajalikud klassi IBMTSSVC_StorageVolumeStatistics omadused on üle vaatamiseks saadaval Node Statistics.

Lisaks saab jõudluse analüüsimiseks kasutada klasse IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics.

Andmete salvestamiseks jälgimisse süsteemi kasutame mehhanismi zabbix traps, mis on rakendatud pythonis moodulis py-zabbix. Klasside struktuuri ja nende omadused korraldame sõnastikus JSON formaadis.

Laadime Zabbixi mallile, veendume, et monitooringuserver pääseb andmesalvestusse TCP/5989 protokolli kaudu, paigaldame monitooringuserverisse konfiguratsioonifailid, avastusskriptid ja monitooringuskriptid. Seejärel lisame ajastajasse skriptide käivitamise. Tulemuseks on: avastame andmesalvestusseadmed (maatriksid, füüsilised ja virtuaalsed kettad, enclosure'id ja palju muud), edastame need Zabbixi avastustesse, loeme nende parameetrite oleku, loeme jõudluse statistikat (jõudlusnäidikud) ja edastame kõik selle vastavatesse Zabbixi elementidesse meie mallis.

Zabbixi mall, python-skripti, andmesalvestusseadmete klasside struktuur ja nende omadused, samuti konfiguratsioonifailide näidised on siit leitavad.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster