In hierdie artikel sal ons 'n bietjie praat oor die monitering van IBM Storwize-bergingstelsels en ander bergingstelsels wat die CIM/WBEM-protokolle ondersteun. Die behoefte aan sulke monitering word uit die vergelyking gelaat; ons sal dit as 'n aksioma beskou. Ons sal Zabbix as 'n moniteringstelsel gebruik.
In die nuutste weergawes van Zabbix het die maatskappy baie meer aandag aan sjablone begin gee - sjablone het begin verskyn vir monitering van dienste, DBMS, bedieners hardeware (IMM/iBMC) via IPMI. Stoorstelselmonitering is steeds buite die sjablone buite die boks, dus om inligting oor die status en werkverrigting van bergingskomponente in Zabbix te integreer, moet u pasgemaakte sjablone gebruik. Ek bring een van hierdie sjablone onder jou aandag.
Eerstens 'n bietjie teorie.
Om toegang tot die status en statistieke van IBM Storwize-bergingstelsels te verkry, kan jy:
CIM/WBEM-protokolle;
RESTful API (ondersteun in IBM Storwize vanaf sagteware weergawe 8.1.3);
SNMP-valle (beperkte stel lokvalle, geen statistieke);
Belangstellendes kan meer te wete kom oor verskeie moniteringsmetodes in die relevante afdelings van die verkoperdokumentasie, sowel as in die dokument IBM Spectrum Virtualiseer scripting.
WBEM loop bo-op die HTTP-protokol. Deur WBEM kan jy nie net met stoorstelsels werk nie, maar ook met HBA's, skakelaars en bandbiblioteke.
Volgens SMI argitektuur и Bepaal infrastruktuur, is die hoofkomponent van die SMI-implementering die WBEM-bediener, wat CIM-XML-versoeke van WBEM-kliënte verwerk (in ons geval, vanaf moniteringsskrifte):
CIM is 'n objekgeoriënteerde model gebaseer op Unified Modeling Language (UML).
Bestuurde elemente word gedefinieer as CIM-klasse wat eienskappe en metodes het om bestuurde data en funksionaliteit voor te stel.
Volgens www.snia.org/pywbem, om toegang tot bergingstelsels via CIM/WBEM te verkry, kan jy PyWBEM gebruik - 'n oopbron-biblioteek geskryf in Python, wat ontwikkelaars en stelseladministrateurs voorsien van 'n implementering van die CIM-protokol vir toegang tot CIM-voorwerpe en om verskeie bewerkings uit te voer met 'n WBEM-bediener wat in in ooreenstemming met SMI-S of ander CIM-spesifikasies.
Om aan die WBEM-bediener te koppel, gebruik ons die klaskonstruktor WBEMCneksie:
Dit is 'n virtuele verbinding, aangesien CIM-XML/WBEM bo-op HTTP loop, vind die werklike verbinding plaas wanneer metodes op 'n instansie van die WBEMConnection-klas geroep word. In ooreenstemming met die IBM System Storage SAN Volume Controller en Storwize V7000 Beste Praktyke en Prestasieriglyne (Voorbeeld C-8, bladsy 412), sal ons "root/ibm" as die CIM-naamruimte vir die IBM Storwize-bergingstelsel gebruik.
Neem asseblief kennis dat om statistieke in te samel via die CIM-XML/WBEM-protokol, jy die gebruiker by die toepaslike sekuriteitsgroep moet insluit. Andersins, wanneer WBEM-navrae uitgevoer word, sal die uitvoer van klasinstansiekenmerke leeg wees.
Om toegang tot bergingstatistieke te verkry, die gebruiker onder wie die konstruktor geroep word WBEMConnection(), moet ten minste RestrictedAdmin (beskikbaar vir kode_vlak > 7.8.0) of administrateurregte hê (nie aanbeveel vir sekuriteitsredes nie).
Ons koppel aan die stoorstelsel via SSH en kyk na die groepnommers:
> 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
Voeg die zabbix-gebruiker by die gewenste groep:
> chuser -usergrp 5 zabbix
Daarbenewens, in ooreenstemming met die IBM System Storage SAN Volume Controller en Storwize V7000 Beste Praktyke en Prestasieriglyne (bl. 415), moet jy statistieke insameling op die bergingstelsel aktiveer. Dus, om elke minuut statistieke in te samel:
> startstats -interval 1
Ons kyk na:
> lssystem | grep statistics
statistics_status on
statistics_frequency 1
Om alle bestaande bergingsklasse te kry, moet jy die EnumerateClassNames() metode gebruik.
Voorbeeld:
classnames = conn.EnumerateClassNames(namespace='root/ibm', DeepInheritance=True)
for classname in classnames:
print (classname)
Die metode word gebruik om die waardes van stoorstelselparameters te verkry EnumerateInstances() klas WBEMConnection, gee 'n lys van gevalle terug CIMInstance().
Voorbeeld:
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))
Vir sommige klasse wat 'n groot aantal gevalle bevat, soos IBMTSSVC_StorageVolume, kan 'n volledige navraag van alle gevalle redelik stadig wees. Dit kan groot volumes data genereer wat deur die stoorstelsel voorberei moet word, oor die netwerk versend en deur die skrif verwerk moet word. Daar is 'n metode vir so 'n geval ExecQuery(), wat ons toelaat om slegs die eienskappe van 'n klasgeval te kry wat ons interesseer. Hierdie metode behels die gebruik van 'n SQL-agtige navraagtaal, hetsy CIM Query Language (DMTF:CQL) of WBEM Query Language (WQL), om CIM-bergingsvoorwerpe te bevraagteken:
request = 'SELECT Name FROM IBMTSSVC_StorageVolumeStatistics'
objects_perfs_cim = wbem_connection.ExecQuery('DMTF:CQL', request)
Dus, om parameters (nie prestasietellers nie) van fisiese skywe (Disk Drives) te verkry, sal ons Klas IBMTSSVC_DiskDrive bekom, om Volumes-parameters te verkry - Klas IBMTSSVC_StorageVolume, om skikkingsparameters te verkry - Klas IBMTSSVC_Array, om MDisks-parameters te verkry - Klas IBMTSSVume_BackendVol.
Om bergingstatistieke vir Volumes te verkry, moet jy IBMTSSVC_StorageVolumeStatistics spesifiseer as die waarde van die ClassName-parameter. Die eienskappe van die IBMTSSVC_StorageVolumeStatistics-klas wat nodig is vir die insameling van statistieke kan bekyk word in Node Statistiek.
Ook, vir prestasie-analise kan jy die klasse IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics gebruik.
Om data in die moniteringstelsel aan te teken, sal ons die meganisme gebruik zabbix lokvalle, geïmplementeer in python in 'n module py-zabbix. Ons sal die struktuur van bergingstelselklasse en hul eienskappe in 'n woordeboek in JSON-formaat plaas.
Ons laai die sjabloon op na die Zabbix-bediener, maak seker dat die moniteringsbediener toegang het tot die stoorstelsel via die WEB-protokol (TCP/5989), en plaas konfigurasielêers, opsporing en moniteringskrifte op die moniteringsbediener. Voeg dan script launch by die skeduleerder. As gevolg hiervan: ons ontdek stoorvoorwerpe (skikkings, fisiese en virtuele skywe, omhulsels en nog baie meer), dra dit oor na Zabbix-ontdekkings, lees die status van hul parameters, lees prestasiestatistieke (prestasietellers), dra dit alles oor na die ooreenstemmende Zabbix Items van ons sjabloon.
Zabbix-sjabloon, python-skrifte, struktuur van bergingsklasse en hul eienskappe, sowel as voorbeelde van konfigurasielêers, kan u vind hier.