Övervakar IBM Storwize-lagring med Zabbix

I den här artikeln kommer vi att prata lite om övervakning av IBM Storwize-lagringssystem och andra lagringssystem som stöder CIM/WBEM-protokoll. Behovet av sådan övervakning utelämnas ur ekvationen; Vi kommer att betrakta det som ett axiom. Vi kommer att använda Zabbix som ett övervakningssystem.

I de senaste versionerna av Zabbix började företaget ägna mycket mer uppmärksamhet åt mallar – mallar började dyka upp för övervakningstjänster, DBMS, serverhårdvara (IMM/iBMC) via IPMI. Övervakning av lagringssystem sker fortfarande utanför de färdiga mallarna, så för att integrera information om status och prestanda för lagringssystemkomponenter i Zabbix måste du använda anpassade mallar. Jag erbjuder er en av dessa mallar.

Först en liten teori.

För att få åtkomst till status och statistik för IBM Storwize-lagringssystem kan du använda:

  1. CIM/WBEM-protokoll;
  2. RESTful API (stöds i IBM Storwize från och med programvaruversion 8.1.3);
  3. SNMP-fällor (begränsad uppsättning fällor, ingen statistik);
  4. Ansluta via SSH och sedan fjärransluta lämplig för avslappnat bash-skript.

Intresserade kan läsa mer om de olika övervakningsmetoderna i relevanta avsnitt i leverantörsdokumentationen, samt i dokumentet IBM Spectrum Virtualize-skript

Vi kommer att använda CIM/WBEM-protokoll, som gör det möjligt för oss att hämta parametrarna för lagringssystemets drift utan betydande förändringar i programvaran för olika lagringssystem. CIM/WBEM-protokollen fungerar i enlighet med Specifikation för lagringshanteringsinitiativ (SMI-S). Storage Management Initiative – Specifikationen är baserad på öppna standarder CIM (gemensam informationsmodell) и WBEM (Webbaserad företagsledning), bestämd Distribuerad ledningsgrupp.

WBEM körs ovanpå HTTP-protokollet. Genom WBEM kan du arbeta inte bara med lagringssystem, utan även med HBA:er, switchar och bandbibliotek.

Enligt SMI-arkitekturoch Bestäm infrastrukturHuvudkomponenten i SMI-implementeringen är WBEM-servern, som bearbetar CIM-XML-förfrågningar från WBEM-klienter (i vårt fall från övervakningsskript):

Övervakar IBM Storwize-lagring med Zabbix

CIM är en objektorienterad modell baserad på Unified Modeling Language (UML).
Hanterade element definieras som CIM-klasser som har egenskaper och metoder för att representera hanterad data och funktionalitet.

Enligt www.snia.org/pywbemFör att komma åt lagringssystemet via CIM/WBEM kan du använda PyWBEM, ett bibliotek med öppen källkod skrivet i Python som förser utvecklare och systemadministratörer med en implementering av CIM-protokollet för att komma åt CIM-objekt och utföra olika operationer med en WBEM-server som fungerar enligt SMI-S eller andra CIM-specifikationer.

För att ansluta till WBEM-servern använder vi klasskonstruktorn WBEMANslutning:

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

Detta är en virtuell anslutning, eftersom CIM-XML/WBEM körs över HTTP, uppstår den verkliga anslutningen när metoder anropas på en instans av WBEMConnection-klassen. 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-lagringssystemet.

Observera att för att samla in statistik via CIM-XML/WBEM-protokollet måste du inkludera användaren i lämplig säkerhetsgrupp. Annars, när WBEM-frågor körs, kommer utdata för klassinstansattribut att vara tomma..

För att komma åt lagringssystemets statistik, den användare under vilken konstruktorn anropas WBEMANslutning(), måste ha minst rättigheterna RestrictedAdmin (tillgängligt för kodnivå > 7.8.0) eller administratör (rekommenderas inte av säkerhetsskäl).

Vi ansluter till lagringssystemet via SSH och tittar på 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 zabbix-användaren i den obligatoriska gruppen:

> chuser -usergrp 5 zabbix

Dessutom måste du, i enlighet med IBM System Storage SAN Volume Controller och Storwize V7000 Best Practices and Performance Guidelines (s. 415), aktivera statistikinsamling på lagringssystemet. Så, för att samla in statistik varje minut:

> startstats -interval 1 

Vi kontrollerar:

> lssystem | grep statistics
statistics_status on
statistics_frequency 1

För att hämta alla befintliga lagringsklasser måste du använda metoden EnumerateClassNames().

Exempel:

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

Metoden är avsedd att erhålla värdena för lagringssystemets parametrar UppräknaInstanser() WBEMConnection-klass som returnerar en lista över instanser CIM-instans().

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 ett stort antal instanser, till exempel IBMTSSVC_StorageVolume, kan en fullständig fråga för alla instanser vara ganska långsam. Den kan generera stora mängder data som måste förberedas av lagringssystemet, överföras över nätverket och bearbetas av skriptet. Det finns en metod för ett sådant fall ExecQuery(), vilket tillåter oss att endast erhålla de egenskaper hos en klassinstans som är av intresse för oss. Den här metoden innebär att man använder ett SQL-liknande frågespråk, antingen CIM Query Language (DMTF:CQL) eller WBEM Query Language (WQL), för att fråga CIM-lagringsobjekten:

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

För att avgöra vilka klasser vi behöver för att hämta parametrarna för lagringssystemobjekt läser vi till exempel dokumentationen Hur systemkoncept mappas till CIM-koncept.

Så, för att hämta parametrar (inte prestandamätare) för fysiska diskar (diskenheter), kommer vi att fråga klassen IBMTSSVC_DiskDrive, för att hämta parametrar för volymer — klass IBMTSSVC_StorageVolume, för att hämta parametrar för arrayer — klass IBMTSSVC_Array, för att hämta parametrar för MDisks — klass IBMTSSVC_BackendVolume, etc.

Du kan läsa om prestationen här Funktionsdiagram över Common Information Model-agenten (specifikt - Blockera serverprestandaunderprofil) och IBM System Storage SAN Volume Controller och Storwize V7000 Best Practices and Performance Guidelines (Exempel C-11, sidan 415).

För att hämta lagringssystemstatistik för volymer måste du ange IBMTSSVC_StorageVolumeStatistics som värde för parametern ClassName. Egenskaperna för klassen IBMTSSVC_StorageVolumeStatistics som krävs för att samla in statistik kan visas i Nodstatistik.

För prestandaanalys kan du också använda klasserna IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics och IBMTSSVC_NodeStatistics.

För att registrera data i övervakningssystemet använder vi mekanismen zabbix-fällor, implementerad i Python i en modul py-zabbix. Vi kommer att placera strukturen för lagringsklasserna och deras egenskaper i en ordbok i JSON-format.

Vi laddar upp mallen till Zabbix-servern, ser till att övervakningsservern har åtkomst till lagringssystemet via WEB-protokollet (TCP/5989), placerar konfigurationsfilerna, detekterings- och övervakningsskripten på övervakningsservern. Nästa steg är att lägga till skriptstart i schemaläggaren. Sammanfattningsvis: vi upptäcker lagringssystemobjekt (arrayer, fysiska och virtuella diskar, kabinett och mycket mer), skickar dem till Zabbix-upptäckter, läser statusen för deras parametrar, läser prestandastatistik (prestandaräknare) och skickar allt detta till motsvarande Zabbix-objekt i vår mall.

Zabbix-mall, Python-skript, struktur för lagringsklasser och deras egenskaper, samt exempel på konfigurationsfiler, finns här. hitta här.

Källa: will.com

Köp pålitlig hosting för webbplatser med DDoS-skydd, VPS VDS-servrar 🔥 Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster