Monitoring IBM Storwize SAN-a uz Zabbix

U ovom članku malo ćemo razgovarati o nadzoru IBM Storwize SAN-a i drugih SAN-ova koji podržavaju CIM/WBEM protokole. Potreba za takim nadzorom ostaje izvan rasprave, smatrat ćemo to aksiomom. Kao sustav nadzora koristit ćemo Zabbix.

U posljednjim verzijama Zabbixa, tvrtka je počela posvećivati mnogo više pažnje predlošcima — pojavili su se predlošci za nadzor usluga, DBMS-a, Servers hardware (IMM/iBMC) putem IPMI-a. Nadzor SAN-a još uvijek ostaje izvan unaprijed pripremljenih predložaka, stoga je za integraciju informacija o statusu i performansama komponenti SAN-a u Zabbix potrebno koristiti prilagođene predloške. Jedan od takvih predložaka predlažem vašoj pažnji.

Prvo malo teorije.

Za pristup statusu i statistici SAN-a IBM Storwize možete koristiti:

  1. CIM/WBEM protokole;
  2. RESTful API (podržava se u IBM Storwize počevši od verzije softvera 8.1.3);
  3. SNMP Trap-ove (ograničen skup trap-ova, nema statistike);
  4. Povezivanje putem SSH uz daljinsko prikladno za lagano bash skriptiranje.

Zainteresirani mogu detaljnije upoznati različite metode nadzora u odgovarajućim odjeljcima dokumentacije dobavljača, kao i u dokumentu IBM Spectrum Virtualize scripting.

Koristit ćemo CIM/WBEM protokole koji omogućuju dobivanje parametara rada SAN-a bez značajnih promjena u softveru za različite SAN-ove. CIM/WBEM protokoli rade u skladu s Storage Management Initiative Specification (SMI-S). Storage Management Initiative – Specifikacija se temelji na otvorenim standardima CIM (Common Information Model) i WBEM (Web-Based Enterprise Management), definiranim Distributed Management Task Force.

WBEM radi preko HTTP protokola. Kroz WBEM se može raditi ne samo s SAN-om, već i s HBA, prekidačima i trakastim bibliotekama.

Prema SMI Arhitektura i Odredite infrastrukturu, osnovna komponenta implementacije SMI je WBEM server koji obrađuje CIM-XML zahtjeve od WBEM klijenata (u našem slučaju — od skripti za nadzor):

Monitoring IBM Storwize SAN-a uz Zabbix

CIM je objektno-orijentirani model temeljen na Unified Modeling Language (UML).
Upravljani elementi definiraju se kao CIM klase koje imaju svojstva i metode za predstavljanje upravljanih podataka i funkcija.

Prema www.snia.org/pywbem, za pristup SCSI uređaju putem CIM/WBEM može se koristiti PyWBEM — open source biblioteka, napisana na Pythonu, koja omogućuje programerima i sistemskim administratorima implementaciju CIM protokola za pristup CIM-objektima i izvođenje raznih operacija s WBEM-serverom koji radi prema SMI-S ili drugim CIM-specifikacijama.

Za povezivanje s WBEM-serverom koristimo konstruktor klase WBEMConnection:

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

To je virtualna veza, s obzirom na to da CIM-XML/WBEM radi preko HTTP-a, stvarna veza se događa u trenutku pozivanja metoda za instancu klase WBEMConnection. U skladu s IBM System Storage SAN Volume Controller and Storwize V7000 Best Practices and Performance Guidelines (Primjer C-8, str. 412), kao CIM namespace za SCSI uređaj IBM Storwize koristit ćemo «root/ibm».

Napomena: za prikupljanje statistike o protokolu CIM-XML/WBEM, potrebno je uključiti korisnika u odgovarajuću sigurnosnu grupu. U suprotnom, pri izvršavanju WBEM-zahtjeva, izlaz atributa instance klase će biti prazan..

Za pristup statistici SCSI uređaja korisnik koji poziva konstruktor WBEMConnection(), mora imati prava barem RestrictedAdmin (dostupno za code_level > 7.8.0) ili Administrator (ne preporučujem zbog sigurnosnih razloga).

Povezujemo se s SCSI uređajem putem SSH i provjeravamo 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    

Dodajemo korisnika zabbix u potrebnu grupu:

> chuser -usergrp 5 zabbix

Osim toga, u skladu s IBM System Storage SAN Volume Controller and Storwize V7000 Best Practices and Performance Guidelines (str. 415) potrebno je uključiti prikupljanje statistike na SCSI uređaju. Dakle, za prikupljanje statistike svake minute:

> startstats -interval 1 

Provjeravamo:

> lssystem | grep statistics
statistics_status on
statistics_frequency 1

Kako bismo dobili sve postojeće klase SCSI uređaja, potrebno je koristiti metodu EnumerateClassNames().

Primjer:

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

Za dobivanje vrijednosti parametara SCSI uređaja namijenjena je metoda EnumerateInstances() klasa WBEMConnection, koja 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, poput IBMTSSVC_StorageVolume, potpuni upit svih instanci može biti prilično spor. Može generirati velike količine podataka koje treba pripremiti za pohranu, prenijeti putem mreže i obraditi skriptom. U tom slučaju postoji metoda ExecQuery(), koja omogućava dobivanje samo onih svojstava instance klase koja nas zanimaju. Ova metoda podrazumijeva korištenje jezika upita sličnog SQL-u — ili CIM Query Language (DMTF:CQL) ili WBEM Query Language (WQL) za upit CIM objekata pohrane:

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

Kako bismo odredili koje klase trebamo za dobivanje parametara objekata pohrane, čitamo dokumentaciju, na primjer Kako se koncepti sustava mapiraju na CIM koncepte.

Dakle, za dobivanje parametara (ne brojčanika performansi) fizičkih diskova (Disk Drives) anketirat ćemo klasu IBMTSSVC_DiskDrive, za dobivanje parametara volumena — klasu IBMTSSVC_StorageVolume, za dobivanje parametara nizova — klasu IBMTSSVC_Array, za dobivanje parametara MDisks — klasu IBMTSSVC_BackendVolume itd.

O performansama se može pročitati Funkcionalne dijagrame agenta zajedničkog informacijskog modela (konkretno — Podprofil performansi blok servera) i IBM System Storage SAN Volume Controller i Storwize V7000 najbolji postupci i smjernice za performanse (Primjer C-11, str. 415).

Za dobivanje statistike pohrane za volumene, potrebno je kao vrijednost parametra ClassName navesti IBMTSSVC_StorageVolumeStatistics. Potrebna svojstva klase IBMTSSVC_StorageVolumeStatistics za prikupljanje statistike mogu se pogledati u Statistika čvora.

Također, za analizu performansi mogu se koristiti klase IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics.

Za upis podataka u sustav praćenja koristit ćemo mehanizam zabbix traps, implementiran u python modulu py-zabbix. Strukturu klasa pohrane i njihovih svojstava smjestit ćemo u rječnik u JSON formatu.

Učitavamo predložak na Zabbix server, osiguravamo da postoji pristup STH-u s poslužitelja za nadzor putem WEB protokola (TCP/5989), postavljamo konfiguracijske datoteke, skripte za otkrivanje i nadzor na poslužitelju za nadzor. Zatim dodajemo pokretanje skripti u planer zadataka. Na kraju: otkrivamo objekte STH-a (matrice, fizički i virtualni diskovi, kućišta i još mnogo toga), prenesemo ih u Zabbix otkrića, očitavamo status njihovih parametara, očitavamo statistiku performansi (performanse brojača), sve to šaljemo u odgovarajuće Zabbix stavke našeg predloška.

Predložak Zabbix, python skripte, struktura klasa STH-a i njihovih svojstava, kao i primjeri konfiguracijskih datoteka su dostupni pronaći ovdje.

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster