Bewaking van IBM Storwize-opslag met Zabbix

In dit artikel zullen we het hebben over het monitoren van IBM Storwize-opslagsystemen en andere opslagsystemen die CIM / WBEM-protocollen ondersteunen. De noodzaak van een dergelijke monitoring wordt buiten beschouwing gelaten; we zullen dit als een axioma beschouwen. We zullen Zabbix gebruiken als monitoringsysteem.

In de nieuwste versies van Zabbix begon het bedrijf veel meer aandacht te besteden aan sjablonen - er begonnen sjablonen te verschijnen voor monitoringdiensten, DBMS, serverhardware (IMM / iBMC) via IPMI. Opslagmonitoring is nog steeds out-of-the-box, dus om informatie over de status en prestaties van opslagcomponenten in Zabbix te integreren, moet u aangepaste sjablonen gebruiken. Ik breng een van deze sjablonen onder uw aandacht.

Eerst een beetje theorie.

Om toegang te krijgen tot de status en statistieken van IBM Storwize-opslag kunt u gebruik maken van:

  1. CIM/WBEM-protocollen;
  2. RESTful API (ondersteund door IBM Storwize vanaf softwareversie 8.1.3);
  3. SNMP Traps (beperkt aantal traps, geen statistieken);
  4. SSH-verbinding gevolgd door extern geschikt voor ontspannen bash-scripting.

Geïnteresseerden kunnen meer te weten komen over de verschillende monitoringmethoden in de relevante secties van de leveranciersdocumentatie, evenals in het document IBM Spectrum Virtualize-scripting.

We zullen de CIM / WBEM-protocollen gebruiken, waarmee we de parameters van het opslagsysteem kunnen verkrijgen zonder significante wijzigingen in de software voor verschillende opslagsystemen. CIM/WBEM-protocollen werken volgens Specificatie voor opslagbeheerinitiatieven (SMI-S). Het Storage Management Initiative – Specification is gebaseerd op open standaarden CIM (Gemeenschappelijk Informatie Model) и WBEM (webgebaseerd ondernemingsbeheer)bepaald Taakgroep voor gedistribueerd beheer.

WBEM werkt bovenop het HTTP-protocol. Via WBEM kunt u niet alleen met opslagsystemen werken, maar ook met HBA's, switches en tapebibliotheken.

Volgens SMI-architectuur и Bepaal de infrastructuur, is het belangrijkste onderdeel van de SMI-implementatie de WBEM-server die CIM-XML-verzoeken van WBEM-clients verwerkt (in ons geval van monitoringscripts):

Bewaking van IBM Storwize-opslag met Zabbix

CIM is een objectgeoriënteerd model gebaseerd op de Unified Modeling Language (UML).
Beheerde items worden gedefinieerd als CIM-klassen die eigenschappen en methoden hebben om beheerde gegevens en functionaliteit weer te geven.

Volgens www.snia.org/pywbem, om toegang te krijgen tot opslag via CIM / WBEM, kunt u PyWBEM gebruiken, een open source-bibliotheek geschreven in Python die ontwikkelaars en systeembeheerders de implementatie van het CIM-protocol biedt om toegang te krijgen tot CIM-objecten en verschillende bewerkingen uit te voeren met een WBEM-server die werkt volgens SMI -S of andere CIM-specificaties.

Gebruik de klassenconstructor om verbinding te maken met de WBEM-server WBEM-verbinding:

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

Dit is een virtuele verbinding, omdat CIM-XML/WBEM via HTTP loopt. De daadwerkelijke verbinding vindt plaats wanneer methoden worden aangeroepen op een instantie van de klasse WBEMConnection. In overeenstemming met de IBM System Storage SAN Volume Controller en Storwize V7000 Best Practices and Performance Guidelines (voorbeeld C-8, p. 412), zullen we “root/ibm” gebruiken als de CIM-naamruimte voor IBM Storwize-opslag.

Houd er rekening mee dat u, om statistieken over het CIM-XML/WBEM-protocol te verzamelen, de gebruiker in de juiste beveiligingsgroep moet opnemen. Anders zal bij het uitvoeren van WBEM-query's de uitvoer van klasse-instantiekenmerken leeg zijn.

Voor toegang tot opslagstatistieken: de gebruiker waaronder de constructor wordt aangeroepen WBEMVerbinding(), moet minimaal RestrictedAdmin (beschikbaar voor code_level > 7.8.0) of Administrator (niet aanbevolen om veiligheidsredenen) hebben.

We maken via SSH verbinding met het opslagsysteem en kijken naar de groepsnummers:

> 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 de zabbix-gebruiker toe aan de gewenste groep:

> chuser -usergrp 5 zabbix

Bovendien moet u, in overeenstemming met de IBM System Storage SAN Volume Controller en Storwize V7000 Best Practices and Performance Guidelines (p. 415), het verzamelen van statistieken op het opslagsysteem inschakelen. Dus om elke minuut statistieken te verzamelen:

> startstats -interval 1 

controleren:

> lssystem | grep statistics
statistics_status on
statistics_frequency 1

Om alle bestaande opslagklassen op te halen, moet u de methode EnumerateClassNames() gebruiken.

Voorbeeld:

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

Om de waarden van de opslagsysteemparameters te verkrijgen, is de methode EnumerateInstances() WBEMConnection-klasse retourneert een lijst met exemplaren CIInstance().

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

Voor sommige klassen die een groot aantal instances bevatten, zoals IBMTSSVC_StorageVolume, kan een volledige query van alle instances behoorlijk traag zijn. Het kan grote hoeveelheden gegevens genereren die door het opslagsysteem moeten worden voorbereid, via het netwerk moeten worden verzonden en door een script moeten worden verwerkt. Voor zo'n geval bestaat er een methode ExecQuery(), waarmee u alleen de eigenschappen van de klasse-instantie kunt verkrijgen die voor ons van belang zijn. Bij deze methode wordt een SQL-achtige querytaal gebruikt, CIM Query Language (DMTF:CQL) of WBEM Query Language (WQL), om CIM-opslagobjecten te bevragen:

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

Om te bepalen welke klassen we nodig hebben om de parameters van opslagobjecten op te halen, lezen we bijvoorbeeld de documentatie Hoe systeemconcepten worden gekoppeld aan CIM-concepten.

Dus om parameters (geen prestatietellers) van fysieke schijven (schijfstations) te krijgen, zullen we klasse IBMTSSVC_DiskDrive opvragen, om Volumes-parameters te krijgen - Klasse IBMTSSVC_StorageVolume, om array-parameters te krijgen - Klasse IBMTSSVC_Array, om MDisks-parameters te krijgen - Klasse IBMTSSVC_BackendVolume, enz.

Je kunt lezen over prestaties Functionele diagrammen van de Common Information Model-agent (specifiek - Subprofiel voor serverprestaties blokkeren) en IBM System Storage SAN Volume Controller en Storwize V7000 Best Practices en prestatierichtlijnen (voorbeeld C-11, pagina 415).

Om opslagstatistieken voor volumes op te halen, moet u IBMTSSVC_StorageVolumeStatistics opgeven als de waarde van de parameter ClassName. De eigenschappen van de klasse IBMTSSVC_StorageVolumeStatistics die nodig zijn voor het verzamelen van statistieken zijn te vinden in Knooppuntstatistieken.

Voor prestatieanalyse kunt u ook de klassen IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics gebruiken.

Om gegevens naar het monitoringsysteem te schrijven, zullen we het mechanisme gebruiken zabbix-vallen, geïmplementeerd in Python in een module py-zabbix. De structuur van opslagklassen en hun eigenschappen worden in een woordenboek in JSON-formaat geplaatst.

We uploaden de template naar de Zabbix-server, zorgen ervoor dat de monitoringserver toegang heeft tot opslag via het WEB-protocol (TCP/5989), plaatsen de configuratiebestanden, detectie- en monitoringscripts op de monitoringserver. Voeg vervolgens scripts toe aan de planner. Het resultaat: we ontdekken opslagobjecten (arrays, fysieke en virtuele schijven, behuizingen en nog veel meer), geven ze door aan Zabbix-ontdekkingen, lezen de status van hun parameters, lezen prestatiestatistieken (prestatietellers), dragen dit alles over naar de overeenkomstige Zabbix Items van onze sjabloon.

De Zabbix-sjabloon, Python-scripts, de structuur van opslagklassen en hun eigenschappen, evenals voorbeelden van configuratiebestanden, kunnen vind hier.

Bron: www.habr.com

Voeg een reactie