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:
- Protokolle CIM/WBEM;
- (IBM Storwize'is on toetatud alates tarkvara versioonist 8.1.3);
- SNMP Traps (piiratud kogum trap'e, statistika puudub);
- SSH kaudu ĂŒhendamine ja seejĂ€rel kauge .
Huvitatud saavad lÀhemalt tutvuda erinevate monitooringumeetoditega vastavates tootja dokumentatsiooni jaotisetes ning dokumendis .
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 pĂ”hineb avatud standarditel ja , mida mÀÀratleb .
WBEM töötab HTTP protokolli peal. WBEM-i kaudu saab töötada mitte ainult salvestusseadmetega, vaid ka HBA-de, lĂŒlititega ja digitaallindiga.
Vastavalt ja , SMI rakendamise pÔhikomponent on WBEM-server, mis töötleb CIM-XML pÀringuid WBEM-klientidelt (meie puhul monitooringuskriptidelt):

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 , 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 :
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 , 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 klassist WBEMConnection, mis tagastab eksemplaride loendi .
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 , 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 .
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 (konkreetselt â ) 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 .
Lisaks saab jĂ”udluse analĂŒĂŒsimiseks kasutada klasse IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics.
Andmete salvestamiseks jĂ€lgimisse sĂŒsteemi kasutame mehhanismi , mis on rakendatud pythonis moodulis . 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 .
Allikas: habr.com
