Monitorizarea stocării IBM Storwize cu Zabbix

În acest articol vom vorbi puțin despre monitorizarea sistemelor de stocare IBM Storwize și a altor sisteme de stocare care acceptă protocoalele CIM/WBEM. Necesitatea unei astfel de monitorizări este exclusă din ecuație; vom considera aceasta o axiomă. Vom folosi Zabbix ca sistem de monitorizare.

În cele mai recente versiuni de Zabbix, compania a început să acorde mult mai multă atenție șabloanelor - au început să apară șabloane pentru servicii de monitorizare, DBMS, servere hardware (IMM/iBMC) prin IPMI. Monitorizarea sistemului de stocare este încă în afara șabloanelor din cutie, așa că pentru a integra informații despre starea și performanța componentelor de stocare în Zabbix, trebuie să utilizați șabloane personalizate. Vă aduc în atenție unul dintre aceste șabloane.

În primul rând, o mică teorie.

Pentru a accesa starea și statisticile sistemelor de stocare IBM Storwize, puteți utiliza:

  1. protocoale CIM/WBEM;
  2. RESTful API (suportat în IBM Storwize începând cu versiunea software 8.1.3);
  3. Capcane SNMP (set limitat de capcane, fără statistici);
  4. Conectați-vă prin SSH și apoi de la distanță potrivit pentru scripturi bash pe îndelete.

Cei interesați pot afla mai multe despre diverse metode de monitorizare în secțiunile relevante din documentația furnizorului, precum și în document Scripturi IBM Spectrum Virtualize.

Vom folosi protocoalele CIM/WBEM, care ne permit să obținem parametrii de funcționare a sistemului de stocare fără modificări semnificative de software pentru diferite sisteme de stocare. Protocoalele CIM/WBEM operează în conformitate cu Specificația inițiativei de gestionare a stocării (SMI-S). Inițiativa de gestionare a stocării – Specificația se bazează pe standarde deschise CIM (Common Information Model) и WBEM (Managementul întreprinderilor bazat pe web), determinat Grup de lucru pentru management distribuit.

WBEM rulează peste protocolul HTTP. Prin WBEM puteți lucra nu numai cu sisteme de stocare, ci și cu HBA-uri, comutatoare și biblioteci de benzi.

În conformitate cu Arhitectura SMI и Determinați infrastructura, componenta principală a implementării SMI este serverul WBEM, care procesează cererile CIM-XML de la clienții WBEM (în cazul nostru, din scripturi de monitorizare):

Monitorizarea stocării IBM Storwize cu Zabbix

CIM este un model orientat pe obiecte bazat pe Unified Modeling Language (UML).
Elementele gestionate sunt definite ca clase CIM care au proprietăți și metode pentru a reprezenta datele și funcționalitatea gestionate.

În conformitate cu www.snia.org/pywbem, pentru a accesa sistemele de stocare prin CIM/WBEM, puteți utiliza PyWBEM - o bibliotecă open source scrisă în Python, care oferă dezvoltatorilor și administratorilor de sistem o implementare a protocolului CIM pentru accesarea obiectelor CIM și efectuarea diferitelor operațiuni cu un server WBEM care operează în în conformitate cu SMI-S sau alte specificații CIM.

Pentru a vă conecta la serverul WBEM folosim constructorul de clasă WBEMConexiune:

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

Aceasta este o conexiune virtuală, deoarece CIM-XML/WBEM rulează peste HTTP, conexiunea reală are loc atunci când metodele sunt apelate pe o instanță a clasei WBEMConnection. În conformitate cu IBM System Storage SAN Volume Controller și Storwize V7000 Best Practices and Performance Guidelines (Exemplu C-8, pagina 412), vom folosi „root/ibm” ca spațiu de nume CIM pentru sistemul de stocare IBM Storwize.

Vă rugăm să rețineți că pentru a colecta statistici prin protocolul CIM-XML/WBEM, trebuie să includeți utilizatorul în grupul de securitate corespunzător. În caz contrar, atunci când se execută interogări WBEM, ieșirea atributelor instanței de clasă va fi goală.

Pentru a accesa statisticile de stocare, utilizatorul sub care este apelat constructorul WBEMConnection(), trebuie să aibă cel puțin RestrictedAdmin (disponibil pentru code_level > 7.8.0) sau drepturi de administrator (nu este recomandat din motive de securitate).

Ne conectăm la sistemul de stocare prin SSH și ne uităm la numerele de grup:

> 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    

Adăugați utilizatorul zabbix la grupul dorit:

> chuser -usergrp 5 zabbix

În plus, în conformitate cu IBM System Storage SAN Volume Controller și Storwize V7000 Best Practices and Performance Guidelines (p. 415), trebuie să activați colectarea de statistici pe sistemul de stocare. Deci, pentru a colecta statistici în fiecare minut:

> startstats -interval 1 

Verificăm:

> lssystem | grep statistics
statistics_status on
statistics_frequency 1

Pentru a obține toate clasele de stocare existente, trebuie să utilizați metoda EnumerateClassNames().

Exemplu:

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

Metoda este utilizată pentru a obține valorile parametrilor sistemului de stocare EnumerateInstances() clasa WBEMConnection, returnând o listă de instanțe CIMInstance().

Exemplu:

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

Pentru unele clase care conțin un număr mare de instanțe, cum ar fi IBMTSSVC_StorageVolume, o interogare completă a tuturor instanțelor poate fi destul de lentă. Poate genera volume mari de date care trebuie pregătite de sistemul de stocare, transmise prin rețea și procesate de script. Există o metodă pentru un astfel de caz ExecQuery(), care ne permite să obținem doar proprietățile unei instanțe de clasă care ne interesează. Această metodă implică utilizarea unui limbaj de interogare asemănător SQL, fie CIM Query Language (DMTF:CQL) fie WBEM Query Language (WQL), pentru a interoga obiectele de stocare CIM:

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

Pentru a determina ce clase avem nevoie pentru a obține parametrii obiectelor de stocare, citiți documentația, de exemplu Cum se mapează conceptele de sistem cu conceptele CIM.

Deci, pentru a obține parametrii (nu contoare de performanță) ai discurilor fizice (Disk Drives) vom interoga Clasa IBMTSSVC_DiskDrive, pentru a obține parametrii Volumes - Clasa IBMTSSVC_StorageVolume, pentru a obține parametrii de matrice - Clasa IBMTSSVC_Array, pentru a obține parametrii MDisks - Clasa IBMTSSVC_BackendV etc.

Pentru performanță puteți citi Diagrame funcționale ale agentului Common Information Model (specific - Blocați subprofilul de performanță al serverului) și IBM System Storage SAN Volume Controller și Storwize V7000 Cele mai bune practici și ghiduri de performanță (Exemplu C-11, pagina 415).

Pentru a obţine statistici de stocare pentru volume, trebuie să specificaţi IBMTSSVC_StorageVolumeStatistics ca valoare a parametrului ClassName. Proprietățile clasei IBMTSSVC_StorageVolumeStatistics necesare pentru colectarea statisticilor pot fi vizualizate în Statistica nodului.

De asemenea, pentru analiza performanței puteți utiliza clasele IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics.

Pentru a înregistra datele în sistemul de monitorizare vom folosi mecanismul capcane zabbix, implementat în python într-un modul py-zabbix. Vom plasa structura claselor sistemelor de stocare și proprietățile acestora într-un dicționar în format JSON.

Încărcăm șablonul pe serverul Zabbix, ne asigurăm că serverul de monitorizare are acces la sistemul de stocare prin protocolul WEB (TCP/5989) și plasăm fișiere de configurare, scripturi de detectare și monitorizare pe serverul de monitorizare. Apoi, adăugați lansarea scriptului la planificator. Ca rezultat: descoperim obiecte de stocare (matrice, discuri fizice și virtuale, carcase și multe altele), le transferăm în descoperirile Zabbix, citim starea parametrilor acestora, citim statisticile de performanță (contoare de performanță), transferăm toate acestea către Zabbix-ul corespunzător. Elemente din șablonul nostru.

Șablon Zabbix, scripturi python, structura claselor de stocare și proprietățile acestora, precum și exemple de fișiere de configurare, puteți găsiți aici.

Sursa: www.habr.com

Adauga un comentariu