U ovom članku ćemo govoriti malo o nadzoru IBM Storwize sustava za pohranu i drugih sustava za pohranu koji podržavaju CIM / WBEM protokole. Potreba za takvim praćenjem izostavljena je iz zagrada, smatrat ćemo to aksiomom. Koristit ćemo Zabbix kao sustav za praćenje.
U najnovijim verzijama Zabbixa, tvrtka je počela obraćati mnogo više pažnje na predloške - predlošci su se počeli pojavljivati za usluge praćenja, DBMS, hardver poslužitelja (IMM / iBMC) putem IPMI-ja. Praćenje pohrane još uvijek nije spremno, tako da integrirate informacije o statusu i performansama komponenti pohrane u Zabbix, morate koristiti prilagođene predloške. Predstavljam vam jedan od ovih predložaka.
Prvo malo teorije.
Za pristup statusu i statistici IBM Storwize pohrane, možete koristiti:
- CIM/WBEM protokoli;
- (podržava IBM Storwize počevši od verzije softvera 8.1.3);
- SNMP zamke (ograničen skup zamki, nema statistike);
- SSH veza nakon koje slijedi udaljena .
Zainteresirani mogu saznati više o različitim metodama nadzora u relevantnim odjeljcima dokumentacije dobavljača, kao iu dokumentu .
Koristit ćemo CIM / WBEM protokole koji nam omogućuju dobivanje parametara sustava pohrane bez značajnih promjena u softveru za različite sustave pohrane. CIM/WBEM protokoli rade prema . Inicijativa za upravljanje pohranom – Specifikacija temelji se na otvorenim standardima и definiran .
WBEM radi povrh HTTP protokola. Preko WBEM-a možete raditi ne samo sa sustavima za pohranu, već i s HBA-ovima, prekidačima i bibliotekama traka.
Prema i , glavna komponenta SMI implementacije je WBEM poslužitelj, koji obrađuje CIM-XML zahtjeve od WBEM klijenata (u našem slučaju, od nadzornih skripti):

CIM je objektno orijentirani model temeljen na Unified Modeling Language (UML).
Upravljane stavke definirane su kao CIM klase koje imaju svojstva i metode za predstavljanje upravljanih podataka i funkcionalnosti.
Prema , za pristup pohrani putem CIM / WBEM, možete koristiti PyWBEM, biblioteku otvorenog koda napisanu u Pythonu koja programerima i administratorima sustava pruža implementaciju CIM protokola za pristup CIM objektima i izvođenje raznih operacija s WBEM poslužiteljem koji radi prema SMI-S ili drugim CIM specifikacijama.
Za spajanje na WBEM poslužitelj koristite konstruktor klase :
conn = pywbem.WBEMConnection(server_uri, (self.login, self.password),
namespace, no_verification=True)
Ovo je virtualna veza, budući da CIM-XML/WBEM radi preko HTTP-a, stvarna veza se javlja kada se pozivaju metode na instanci klase WBEMConnection. U skladu s IBM System Storage SAN Volume Controller i Storwize V7000 najboljim praksama i smjernicama za izvedbu (Primjer C-8, str. 412), koristit ćemo "root/ibm" kao CIM imenski prostor za IBM Storwize pohranu.
Imajte na umu da za prikupljanje statistike o CIM-XML/WBEM protokolu morate uključiti korisnika u odgovarajuću sigurnosnu grupu. U suprotnom, prilikom izvršavanja WBEM upita, izlaz atributa instance klase bit će prazan.
Za pristup statistici pohrane, korisnik pod kojim se poziva konstruktor , mora imati najmanje RestrictedAdmin (dostupno za code_level > 7.8.0) ili Administrator (ne preporučuje se iz sigurnosnih razloga).
Spajamo se na sustav pohrane putem SSH-a i gledamo brojeve grupa:
> 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
Dodajte zabbix korisnika u željenu grupu:
> chuser -usergrp 5 zabbix
Dodatno, u skladu s IBM System Storage SAN Volume Controller i Storwize V7000 najboljim praksama i smjernicama za performanse (p. 415), morate omogućiti prikupljanje statistike na sustavu za pohranu. Dakle, za prikupljanje statistike svake minute:
> startstats -interval 1
Provjeravamo:
> lssystem | grep statistics
statistics_status on
statistics_frequency 1
Da biste dobili sve postojeće klase za pohranu, morate koristiti metodu EnumerateClassNames().
Primjer:
classnames = conn.EnumerateClassNames(namespace='root/ibm', DeepInheritance=True)
for classname in classnames:
print (classname)
Za dobivanje vrijednosti parametara sustava za pohranu, metoda Klasa WBEMConnection vraća popis instanci .
Primjer:
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))
Za neke klase koje sadrže veliki broj instanci, kao što je IBMTSSVC_StorageVolume, potpuni upit svih instanci može biti prilično spor. Može generirati velike količine podataka koje mora pripremiti sustav za pohranu, prenijeti preko mreže i obraditi skriptom. Za takav slučaj postoji metoda , što vam omogućuje da dobijete samo ona svojstva instance klase koja nas zanimaju. Ova metoda uključuje korištenje upitnog jezika sličnog SQL-u, bilo CIM Query Language (DMTF:CQL) ili WBEM Query Language (WQL), za postavljanje upita CIM objektima za pohranu:
request = 'SELECT Name FROM IBMTSSVC_StorageVolumeStatistics'
objects_perfs_cim = wbem_connection.ExecQuery('DMTF:CQL', request)
Da bismo odredili koje nam klase trebaju za dobivanje parametara skladišnih objekata, čitamo npr. dokumentaciju .
Dakle, da dobijemo parametre (ne brojače performansi) fizičkih diskova (Disk Drives), postavit ćemo upit klasi IBMTSSVC_DiskDrive, da dobijemo parametre volumena - klasi IBMTSSVC_StorageVolume, da dobijemo parametre polja - klasi IBMTSSVC_Array, da dobijemo parametre MDisks - klasi IBMTSSVC_BackendVolume, itd.
Možete pročitati o izvedbi (konkretno - ) i IBM System Storage SAN Volume Controller i Storwize V7000 Najbolje prakse i smjernice za performanse (Primjer C-11, stranica 415).
Da dobijete statistiku pohrane za volumene, morate navesti IBMTSSVC_StorageVolumeStatistics kao vrijednost parametra ClassName. Svojstva klase IBMTSSVC_StorageVolumeStatistics potrebna za prikupljanje statistike mogu se pronaći u .
Također, za analizu izvedbe, možete koristiti klase IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics.
Za pisanje podataka u sustav praćenja koristit ćemo mehanizam , implementiran u pythonu u modulu . Struktura klasa pohrane i njihova svojstva bit će smještena u rječnik u JSON formatu.
Učitavamo predložak na Zabbix poslužitelj, osiguravamo da poslužitelj za praćenje ima pristup pohrani putem WEB protokola (TCP / 5989), postavljamo konfiguracijske datoteke, skripte za detekciju i nadgledanje na poslužitelj za praćenje. Zatim dodajte skripte u planer. Kao rezultat: otkrivamo objekte za pohranu (nizovi, fizički i virtualni diskovi, kućišta i još mnogo toga), prosljeđujemo ih Zabbix otkrićima, čitamo status njihovih parametara, čitamo statistiku performansi (brojači performansi), sve to prenosimo u odgovarajuće Zabbix stavke našeg predloška.
Zabbix predložak, python skripte, struktura klasa za pohranu i njihova svojstva, kao i primjeri konfiguracijskih datoteka, mogu se .
Izvor: www.habr.com
