Övervakning av IBM Storwize Lagringssystem med Zabbix

I denna artikel kommer vi att diskutera övervakning av IBM Storwize och andra lagringssystem som stödjer CIM/WBEM-protokollen. Behovet av sÄdan övervakning lÀmnas osagt, vi antar att detta Àr en axiom. Vi kommer att anvÀnda Zabbix som övervakningssystem.

I de senaste versionerna av Zabbix har företaget lagt mycket mer vikt vid mallarna — det har dykt upp mallar för övervakning av tjĂ€nster, databashanterare och servers hĂ„rdvara (IMM/iBMC) via IPMI. Övervakning av lagringssystem Ă€r fortfarande utanför standardmallarna, sĂ„ för att integrera information om status och prestanda för lagringssystemskomponenter i Zabbix mĂ„ste man anvĂ€nda anpassade mallar. En sĂ„dan mall erbjuder jag er.

Först lite teori.

För att fÄ tillgÄng till status och statistik för IBM Storwize kan man anvÀnda:

  1. CIM/WBEM-protokoll;
  2. RESTful API (stöds av IBM Storwize frÄn mjukvaruversion 8.1.3);
  3. SNMP Traps (begrÀnsad uppsÀttning traps, ingen statistik);
  4. Anslutning via SSH följt av fjÀrrÄtkomst passar för lÄngsam bash-scripting.

Intresserade kan lÀsa mer om olika övervakningsmetoder i relevanta avsnitt av leverantörens dokumentation, samt i dokumentet IBM Spectrum Virtualize scripting.

Vi kommer att anvĂ€nda CIM/WBEM-protokoll, som möjliggör Ă„tkomst till lagringssystemets driftparametrar utan betydande Ă€ndringar av mjukvaran för olika lagringssystem. CIM/WBEM-protokoll fungerar enligt Storage Management Initiative Specification (SMI-S). Storage Management Initiative – Specification Ă€r baserad pĂ„ öppna standarder CIM (Common Information Model) och WBEM (Web-Based Enterprise Management), definierade av Distributed Management Task Force.

WBEM fungerar över HTTP-protokollet. Genom WBEM kan man arbeta inte bara med lagringssystem utan Àven med HBA, switchar och bibliotek för bandlagring.

Enligt SMI Architecture och Determine Infrastructure, Ă€r den grundlĂ€ggande komponenten för implementeringen av SMI WBEM-servern, som hanterar CIM-XML-förfrĂ„gningar frĂ„n WBEM-klienter (i vĂ„rt fall — frĂ„n övervakningsskript):

Övervakning av IBM Storwize Lagringssystem med Zabbix

CIM Àr en objektorienterad modell baserad pÄ Unified Modeling Language (UML).
De hanterade elementen definieras som CIM-klasser som har egenskaper och metoder för att representera hanterade data och funktioner.

Enligt www.snia.org/pywbem, för att fĂ„ Ă„tkomst till lagringssystemet via CIM/WBEM kan man anvĂ€nda PyWBEM — ett open source-bibliotek skrivet i Python, vilket ger utvecklare och systemadministratörer möjlighet att implementera CIM-protokollet för att fĂ„ Ă„tkomst till CIM-objekt och utföra olika operationer med WBEM-servern som arbetar enligt SMI-S eller andra CIM-specifikationer.

För att ansluta till WBEM-servern anvÀnder vi klassens konstruktor WBEMConnection:

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

Detta Àr en virtuell anslutning eftersom CIM-XML/WBEM fungerar över HTTP; den verkliga anslutningen sker vid anrop av metoder för instansen av klassen WBEMConnection. I enlighet med IBM System Storage SAN Volume Controller och Storwize V7000 Best Practices and Performance Guidelines (Exempel C-8, s. 412), kommer vi att anvÀnda "root/ibm" som CIM-namnrymd för IBM Storwize-lagringssystem.

Observera att för att samla statistik via CIM-XML/WBEM mÄste anvÀndaren ingÄ i lÀmplig sÀkerhetsgrupp. Annars, vid utförande av WBEM-förfrÄgningar, kommer attribututsignalen för klassinstansen att vara tom..

För att fÄ Ätkomst till statistiken för lagringssystemet mÄste anvÀndaren som anropar konstruktorn WBEMConnection(), ha rÀttigheter minst som RestrictedAdmin (finns för code_level > 7.8.0) eller Administrator (inte rekommenderat av sÀkerhetsskÀl).

Anslut till lagringssystemet via SSH och kolla gruppnumren:

> 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    

LÀgg till anvÀndaren zabbix i rÀtt grupp:

> chuser -usergrp 5 zabbix

Dessutom, enligt IBM System Storage SAN Volume Controller och Storwize V7000 Best Practices and Performance Guidelines (s. 415) Àr det nödvÀndigt att aktivera insamling av statistik pÄ lagringssystemet. SÄ, för att samla statistik varje minut:

> startstats -interval 1 

Kontrollerar:

> lssystem | grep statistics
statistics_status on
statistics_frequency 1

För att fÄ alla befintliga klasser av lagringssystemet, anvÀnd metoden EnumerateClassNames().

Exempel:

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

För att fÄ vÀrden pÄ lagringssystemets parametrar finns metoden EnumerateInstances() för klassen WBEMConnection, som returnerar en lista av instanser CIMInstance().

Exempel:

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

För vissa klasser som innehĂ„ller mĂ„nga instanser, sĂ„som IBMTSSVC_StorageVolume, kan en fullstĂ€ndig förfrĂ„gan av alla instanser vara ganska lĂ„ngsam. Den kan generera stora datamĂ€ngder som mĂ„ste förberedas av Lagringssystemet, överföras över nĂ€tverket och bearbetas av skriptet. I sĂ„dana fall finns det en metod ExecQuery(), som möjliggör att endast hĂ€mta de egenskaper hos klassinstanserna som vi Ă€r intresserade av. Denna metod förutsĂ€tter anvĂ€ndning av en frĂ„gesprĂ„k som liknar SQL — antingen CIM Query Language (DMTF:CQL) eller WBEM Query Language (WQL), för att frĂ„ga CIM-objekt i Lagringssystemet:

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

För att faststÀlla vilka klasser vi behöver för att hÀmta egenskaperna för Lagringssystemets objekt lÀser vi dokumentationen, till exempel Hur systemkoncept kartlÀggs till CIM-koncept.

SĂ„ för att hĂ€mta parametrar (inte prestationsrĂ€knare) för fysiska diskar (Disk Drives) kommer vi att frĂ„ga klass IBMTSSVC_DiskDrive, för att hĂ€mta parametrar för Volumes — klass IBMTSSVC_StorageVolume, för att hĂ€mta parametrar för array — klass IBMTSSVC_Array, för att hĂ€mta parametrar för MDisks — klass IBMTSSVC_BackendVolume etc.

För att lĂ€sa om prestanda kan man kolla pĂ„ Funktionsdiagram över Common Information Model-agenten (specifikt — Block server prestanda delprofil) och IBM System Storage SAN Volume Controller och Storwize V7000 BĂ€sta praxis och prestationsriktlinjer (Exempel C-11, s. 415).

För att fÄ statistik över Lagringssystemet för Volumes, Àr det nödvÀndigt att ange IBMTSSVC_StorageVolumeStatistics som vÀrde för parameter ClassName. De egenskaper hos klassen IBMTSSVC_StorageVolumeStatistics som behövs för att samla statistik kan ses i Node Statistics.

Dessutom kan klasserna IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics anvÀndas för prestationsanalys.

För att skriva data till övervakningssystemet kommer vi att anvÀnda mekanismen zabbix traps, implementerad i python i modulen py-zabbix. Vi kommer att organisera strukturen av klasser för Lagringssystemet och deras egenskaper i en ordbok i JSON-format.

Laddar upp en mall till Zabbix-servern, sÀkerstÀller att det finns Ätkomst till lagringssystemet via WEB-protokollet (TCP/5989) frÄn övervakningsservern, placerar konfigurationsfiler, upptÀckts- och övervakningsskript pÄ övervakningsservern. DÀrefter lÀgger vi till skriptupplÀgg i schemalÀggaren. Slutresultatet: vi upptÀcker objekt i lagringssystemet (arrayer, fysiska och virtuella diskar, inneslutningar och mycket mer), överför dem till Zabbix-uppdagningar, lÀser av status för deras parametrar, lÀser av prestandastatistik (prestanda rÀknare) och överför allt detta till motsvarande Zabbix-objekt i vÄr mall.

Zabbix-mall, python-skript, strukturen för lagringssystemsklasser och deras egenskaper, samt exempel pÄ konfigurationsfiler kan hittas hÀr.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster