Praćenje IBM Storwize pohrane sa Zabbixom

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:

  1. CIM/WBEM protokoli;
  2. RESTful API (podržava IBM Storwize počevši od verzije softvera 8.1.3);
  3. SNMP zamke (ograničen skup zamki, nema statistike);
  4. SSH veza nakon koje slijedi udaljena pogodan za ležerno bash skriptiranje.

Zainteresirani mogu saznati više o različitim metodama nadzora u relevantnim odjeljcima dokumentacije dobavljača, kao iu dokumentu IBM Spectrum Virtualize skriptiranje.

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 Specifikacija Inicijative za upravljanje pohranom (SMI-S). Inicijativa za upravljanje pohranom – Specifikacija temelji se na otvorenim standardima CIM (Common Information Model) и WBEM (upravljanje poduzećem temeljeno na webu)definiran Radna skupina za distribuirano upravljanje.

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

Praćenje IBM Storwize pohrane sa Zabbixom

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:

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 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 bismo odredili koje nam klase trebaju za dobivanje parametara skladišnih objekata, čitamo npr. dokumentaciju Kako se koncepti sustava preslikavaju na koncepte CIM-a.

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 Funkcionalni dijagrami agenta Common Information Model (konkretno - Blokiraj podprofil performansi poslužitelja) 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 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.

Izvor: www.habr.com

Dodajte komentar