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;
RESTful API (podržava IBM Storwize počevši od verzije softvera 8.1.3);
SNMP zamke (ograničen skup zamki, nema statistike);
Zainteresirani mogu saznati više o različitim metodama nadzora u relevantnim odjeljcima dokumentacije dobavljača, kao iu dokumentu IBM Spectrum Virtualize skriptiranje.
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 SMI arhitektura и Odredite infrastrukturu, 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 www.snia.org/pywbem, 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 WBEMConnection:
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 WBEMConnection(), 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 EnumerateInstances() Klasa WBEMConnection vraća popis instanci CIMInstance().
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 ExecQuery(), š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 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 Statistika čvorova.
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 zabbix zamke, implementiran u pythonu u modulu py-zabbix. 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 pronaći ovdje.