Nadgledanje IBM Storwize skladištenja pomoću Zabbixa

U ovom članku ćemo malo govoriti o nadgledanju IBM Storwize sistema za skladištenje i drugih sistema skladištenja koji podržavaju CIM/WBEM protokole. Potreba za takvim praćenjem je izostavljena iz jednačine, ovo ćemo smatrati aksiomom. Koristićemo Zabbix kao sistem za praćenje.

U najnovijim verzijama Zabbix-a, kompanija je počela da obraća mnogo više pažnje na šablone - počeli su da se pojavljuju šabloni za usluge praćenja, DBMS, hardver servera (IMM/iBMC) preko IPMI-ja. Nadgledanje sistema za skladištenje je još uvek izvan šablona, ​​tako da da biste integrisali informacije o statusu i performansama komponenti skladištenja u Zabbix, morate da koristite prilagođene šablone. Predstavljam vam jedan od ovih šablona.

Prvo, malo teorije.

Da biste pristupili statusu i statistici IBM Storwize sistema skladištenja, možete koristiti:

  1. CIM/WBEM protokoli;
  2. RESTful API (podržano u IBM Storwize počevši od softverske verzije 8.1.3);
  3. SNMP zamke (ograničen skup zamki, bez statistike);
  4. Povežite se preko SSH-a, a zatim daljinski pogodno za ležerno bash skriptiranje.

Zainteresovani mogu saznati više o različitim metodama praćenja u relevantnim dijelovima dokumentacije dobavljača, kao iu dokumentu IBM Spectrum Virtualize skriptiranje.

Koristićemo CIM/WBEM protokole, koji nam omogućavaju da dobijemo operativne parametre sistema za skladištenje bez značajnih promena softvera za različite sisteme skladištenja. CIM/WBEM protokoli rade u skladu sa Specifikacija inicijative za upravljanje skladištem (SMI-S). Inicijativa za upravljanje skladištem – Specifikacija je zasnovana na otvorenim standardima CIM (Common Information Model) и WBEM (Web-based Enterprise Management), odlučan Radna grupa za distribuirano upravljanje.

WBEM radi na vrhu HTTP protokola. Preko WBEM-a možete raditi ne samo sa sistemima za skladištenje podataka, već i sa HBA-ovima, prekidačima i bibliotekama traka.

Prema SMI Architecture и Odredite infrastrukturu, glavna komponenta SMI implementacije je WBEM server, koji obrađuje CIM-XML zahtjeve od WBEM klijenata (u našem slučaju iz skripti za praćenje):

Nadgledanje IBM Storwize skladištenja pomoću Zabbixa

CIM je objektno orijentirani model baziran na Unified Modeling Language (UML).
Upravljani elementi su definirani kao CIM klase koje imaju svojstva i metode za predstavljanje upravljanih podataka i funkcionalnosti.

Prema www.snia.org/pywbem, za pristup sistemima za skladištenje putem CIM/WBEM-a, možete koristiti PyWBEM – biblioteku otvorenog koda napisanu na Python-u, koja programerima i sistem administratorima pruža implementaciju CIM protokola za pristup CIM objektima i izvođenje različitih operacija sa WBEM serverom koji radi u u skladu sa SMI-S ili drugim CIM specifikacijama.

Za povezivanje sa WBEM serverom koristimo konstruktor klase WBEMConnection:

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

Ovo je virtuelna veza, pošto CIM-XML/WBEM radi na HTTP-u, prava veza se javlja kada se pozovu metode na instanci klase WBEMConnection. U skladu s IBM System Storage SAN kontrolerom volumena i Storwize V7000 najboljim praksama i smjernicama za performanse (Primjer C-8, stranica 412), koristit ćemo “root/ibm” kao CIM prostor imena za IBM Storwize sistem pohrane.

Imajte na umu da za prikupljanje statistike putem CIM-XML/WBEM protokola morate uključiti korisnika u odgovarajuću sigurnosnu grupu. U suprotnom, prilikom izvršavanja WBEM upita, izlaz atributa instance klase će biti prazan.

Za pristup statistici pohrane, korisnik pod kojim je pozvan konstruktor WBEMConnection(), mora imati najmanje RestrictedAdmin (dostupno za code_level > 7.8.0) ili administratorska prava (ne preporučuje se iz sigurnosnih razloga).

Povezujemo se sa sistemom za skladištenje preko 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 sistemu 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 skladištenja, morate koristiti metodu EnumerateClassNames().

Primjer:

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

Metoda se koristi za dobivanje vrijednosti parametara sistema za skladištenje podataka EnumerateInstances() class WBEMConnection, vraćajući listu 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 sistem za pohranu, prenijeti preko mreže i obraditi skriptom. Za takav slučaj postoji metoda ExecQuery(), što nam omogućava da dobijemo samo svojstva instance klase koja nas zanimaju. Ova metoda uključuje korištenje jezika upita sličnog SQL-u, bilo CIM jezika upita (DMTF:CQL) ili WBEM jezika upita (WQL), za upit CIM objekata za pohranu:

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

Da bismo odredili koje klase trebamo da dobijemo parametre skladišnih objekata, pročitajte na primjer dokumentaciju Kako se koncepti sistema preslikavaju na CIM koncepte.

Dakle, da bismo dobili parametre (ne brojače performansi) fizičkih diskova (Disk Drives) mi ćemo anketirati klasu IBMTSSVC_DiskDrive, da dobijemo parametre volumena - Class IBMTSSVC_StorageVolume, da dobijemo parametre niza - Class IBMTSSVC_Array, da dobijemo MDisks parametre - Class IBMVTSSVC_Back itd.

Za performanse možete čitati Funkcionalni dijagrami agenta zajedničkog informacijskog modela (konkretno - Blokirajte podprofil performansi servera) i IBM System Storage SAN kontroler volumena i Storwize V7000 najbolje prakse i smjernice za performanse (Primjer C-11, stranica 415).

Za dobivanje statistike memorije za Volume, morate specificirati IBMTSSVC_StorageVolumeStatistics kao vrijednost parametra ClassName. Svojstva klase IBMTSSVC_StorageVolumeStatistics potrebne za prikupljanje statistike mogu se vidjeti u Statistika čvora.

Također, za analizu performansi možete koristiti klase IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics.

Za snimanje podataka u sistem praćenja koristićemo mehanizam zabbix traps, implementiran u Python-u u modulu py-zabbix. Strukturu klasa sistema za skladištenje i njihova svojstva postavićemo u rečnik u JSON formatu.

Šablon učitavamo na Zabbix server, uvjeravamo se da server za nadzor ima pristup sistemu za pohranu preko WEB protokola (TCP/5989) i postavljamo konfiguracijske datoteke, skripte za detekciju i praćenje na server za praćenje. Zatim dodajte pokretanje skripte u planer. Kao rezultat: otkrivamo objekte za pohranu (nizovi, fizičke i virtualne diskove, kućišta i još mnogo toga), prenosimo ih u Zabbix otkrića, čitamo status njihovih parametara, čitamo statistiku performansi (brojače performansi), prenosimo sve to u odgovarajući Zabbix Stavke našeg šablona.

Zabbix predložak, python skripte, strukturu klasa skladištenja i njihova svojstva, kao i primjere konfiguracijskih datoteka, možete pronađite ovdje.

izvor: www.habr.com

Dodajte komentar