Monitorimi i ruajtjes së IBM Storwize me Zabbix

Në këtë artikull do të flasim pak për monitorimin e sistemeve të ruajtjes IBM Storwize dhe sistemeve të tjera të ruajtjes që mbështesin protokollet CIM/WBEM. Nevoja për një monitorim të tillë është lënë jashtë ekuacionit; ne do ta konsiderojmë këtë një aksiomë. Ne do të përdorim Zabbix si një sistem monitorimi.

Në versionet e fundit të Zabbix, kompania filloi t'i kushtojë shumë më tepër vëmendje shablloneve - shabllonet filluan të shfaqen për shërbimet e monitorimit, DBMS, harduerin e serverëve (IMM/iBMC) përmes IPMI. Monitorimi i sistemit të ruajtjes është ende jashtë shablloneve jashtë kutisë, kështu që për të integruar informacione rreth statusit dhe performancës së komponentëve të ruajtjes në Zabbix, duhet të përdorni shabllone të personalizuar. Unë sjell në vëmendjen tuaj një nga këto shabllone.

Së pari, një teori e vogël.

Për të hyrë në statusin dhe statistikat e sistemeve të ruajtjes IBM Storwize, mund të përdorni:

  1. Protokollet CIM/WBEM;
  2. API e RESTful (mbështetur në IBM Storwize duke filluar me versionin e softuerit 8.1.3);
  3. Kurthe SNMP (grup i kufizuar i kurtheve, pa statistika);
  4. Lidhu nëpërmjet SSH dhe më pas nga distanca i përshtatshëm për skriptim bash me kohë.

Të interesuarit mund të mësojnë më shumë rreth metodave të ndryshme të monitorimit në seksionet përkatëse të dokumentacionit të shitësit, si dhe në dokument IBM Spectrum Virtualize skriptimi.

Ne do të përdorim protokollet CIM/WBEM, të cilat na lejojnë të marrim parametrat e funksionimit të sistemit të ruajtjes pa ndryshime të rëndësishme softuerike për sisteme të ndryshme ruajtjeje. Protokollet CIM/WBEM funksionojnë në përputhje me Specifikimi i iniciativës së menaxhimit të hapësirës ruajtëse (SMI-S). Iniciativa për menaxhimin e magazinimit – Specifikimi bazohet në standarde të hapura CIM (Modeli i Përbashkët i Informacionit) и WBEM (Menaxhimi i Ndërmarrjeve të Bazuar në Ueb), i vendosur Task Forca e Menaxhimit të Shpërndarë.

WBEM funksionon në krye të protokollit HTTP. Nëpërmjet WBEM ju mund të punoni jo vetëm me sistemet e ruajtjes, por edhe me HBA, çelsat dhe bibliotekat e shiritave.

Sipas Arkitektura e LSI и Përcaktoni Infrastrukturën, komponenti kryesor i zbatimit të SMI është serveri WBEM, i cili përpunon kërkesat CIM-XML nga klientët WBEM (në rastin tonë, nga skriptet e monitorimit):

Monitorimi i ruajtjes së IBM Storwize me Zabbix

CIM është një model i orientuar nga objekti i bazuar në gjuhën e unifikuar të modelimit (UML).
Elementet e menaxhuara përcaktohen si klasa CIM që kanë veti dhe metoda për të përfaqësuar të dhënat dhe funksionalitetin e menaxhuar.

Sipas www.snia.org/pywbem, për të hyrë në sistemet e ruajtjes nëpërmjet CIM/WBEM, mund të përdorni PyWBEM - një bibliotekë me burim të hapur të shkruar në Python, e cila u ofron zhvilluesve dhe administratorëve të sistemit një implementim të protokollit CIM për aksesin e objekteve CIM dhe kryerjen e operacioneve të ndryshme me një server WBEM që vepron në në përputhje me SMI-S ose specifikime të tjera CIM.

Për t'u lidhur me serverin WBEM ne përdorim konstruktorin e klasës Lidhja WBEM:

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

Kjo është një lidhje virtuale, pasi CIM-XML/WBEM funksionon në krye të HTTP, lidhja reale ndodh kur metodat thirren në një shembull të klasës WBEMConnection. Në përputhje me IBM System Storage SAN Volume Controller dhe praktikat më të mira dhe udhëzimet e performancës Storwize V7000 (Shembulli C-8, faqe 412), ne do të përdorim "root/ibm" si hapësirën e emrave CIM për sistemin e ruajtjes IBM Storwize.

Ju lutemi vini re se për të mbledhur statistika duke përdorur protokollin CIM-XML/WBEM, duhet të përfshini përdoruesin në grupin e duhur të sigurisë. Përndryshe, gjatë ekzekutimit të pyetjeve WBEM, dalja e atributeve të shembullit të klasës do të jetë bosh.

Për të hyrë në statistikat e ruajtjes, përdoruesi nën të cilin thirret konstruktori WBEMConnection(), duhet të ketë të paktën RestrictedAdmin (e disponueshme për nivelin e kodit > 7.8.0) ose të drejtat e administratorit (nuk rekomandohet për arsye sigurie).

Ne lidhemi me sistemin e ruajtjes përmes SSH dhe shikojmë numrat e grupit:

> 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    

Shtoni përdoruesin zabbix në grupin e dëshiruar:

> chuser -usergrp 5 zabbix

Përveç kësaj, në përputhje me IBM System Storage SAN Volume Controller dhe Udhëzimet më të mira të praktikave dhe performancës Storwize V7000 (f. 415), duhet të aktivizoni mbledhjen e statistikave në sistemin e ruajtjes. Pra, për të mbledhur statistika çdo minutë:

> startstats -interval 1 

kontrolloni:

> lssystem | grep statistics
statistics_status on
statistics_frequency 1

Për të marrë të gjitha klasat ekzistuese të ruajtjes, duhet të përdorni metodën EnumerateClassNames().

Shembull:

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

Metoda përdoret për të marrë vlerat e parametrave të sistemit të ruajtjes EnumerateInstances() klasa WBEMConnection, duke kthyer një listë të rasteve CIMIstance().

Shembull:

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

Për disa klasa që përmbajnë një numër të madh shembujsh, si p.sh. IBMTSSVC_StorageVolume, një pyetje e plotë e të gjitha instancave mund të jetë mjaft e ngadaltë. Mund të gjenerojë vëllime të mëdha të dhënash që duhet të përgatiten nga sistemi i ruajtjes, të transmetohen përmes rrjetit dhe të përpunohen nga skripti. Ekziston një metodë për një rast të tillë ExecQuery (), e cila na lejon të marrim vetëm vetitë e një shembulli klase që na interesojnë. Kjo metodë përfshin përdorimin e një gjuhe pyetjesh të ngjashme me SQL, ose CIM Query Language (DMTF:CQL) ose WBEM Query Language (WQL), për të kërkuar objektet e ruajtjes CIM:

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

Për të përcaktuar se cilat klasa duhet të marrim parametrat e objekteve të ruajtjes, lexoni dokumentacionin, për shembull Si hartohen konceptet e sistemit me konceptet CIM.

Pra, për të marrë parametrat (jo numëruesit e performancës) të disqeve fizike (Disk Drives) ne do të anketojmë klasën IBMTSSVC_DiskDrive, për të marrë parametrat e Volumeve - Klasa IBMTSSVC_StorageVolume, për të marrë parametrat e grupit - Klasa IBMTSSVC_Array, për të marrë -MDisksVC_Array, për të marrë -MDisksVC_MTV, etj.

Për performancën mund të lexoni Diagramet funksionale të agjentit të Modelit të Përbashkët të Informacionit (konkretisht - Blloko nënprofilin e performancës së serverit) dhe IBM System Storage SAN Volume Controller dhe Storwize V7000 Udhëzimet më të mira të praktikave dhe performancës (Shembulli C-11, faqe 415).

Për të marrë statistika të ruajtjes për Vëllimet, duhet të specifikoni IBMTSSVC_StorageVolumeStatistics si vlerën e parametrit ClassName. Karakteristikat e klasës IBMTSSVC_StorageVolumeStatistics të nevojshme për mbledhjen e statistikave mund të shihen në Statistikat e Nyjeve.

Gjithashtu, për analizën e performancës mund të përdorni klasat IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics.

Për të regjistruar të dhënat në sistemin e monitorimit do të përdorim mekanizmin kurthe zabbix, i implementuar në python në një modul py-zabbix. Ne do të vendosim strukturën e klasave të sistemeve të ruajtjes dhe vetitë e tyre në një fjalor në formatin JSON.

Ne ngarkojmë shabllonin në serverin Zabbix, sigurojmë që serveri i monitorimit të ketë akses në sistemin e ruajtjes nëpërmjet protokollit WEB (TCP/5989) dhe vendosim skedarët e konfigurimit, skriptet e zbulimit dhe monitorimit në serverin e monitorimit. Më pas, shtoni nisjen e skriptit te planifikuesi. Si rezultat: ne zbulojmë objektet e ruajtjes (vargje, disqe fizike dhe virtuale, mbyllje dhe shumë më tepër), i transferojmë ato në zbulimet e Zabbix, lexojmë statusin e parametrave të tyre, lexojmë statistikat e performancës (numëruesit e performancës), i transferojmë të gjitha këto në Zabbix përkatës. Artikujt e shabllonit tonë.

Shablloni Zabbix, skriptet python, struktura e klasave të ruajtjes dhe vetitë e tyre, si dhe shembuj të skedarëve të konfigurimit, mund të gjeni këtu.

Burimi: www.habr.com

Shto një koment