Supervisió de l'emmagatzematge d'IBM Storwize amb Zabbix

En aquest article, parlarem una mica sobre la supervisió dels sistemes d'emmagatzematge IBM Storwize i altres sistemes d'emmagatzematge que admeten els protocols CIM / WBEM. La necessitat d'aquest seguiment es deixa fora dels parèntesis; ho considerarem un axioma. Utilitzarem Zabbix com a sistema de seguiment.

A les últimes versions de Zabbix, l'empresa va començar a prestar molta més atenció a les plantilles: van començar a aparèixer plantilles per a serveis de supervisió, DBMS, maquinari de servidors (IMM / iBMC) mitjançant IPMI. La supervisió d'emmagatzematge encara està fora de la caixa, per tant, per integrar informació sobre l'estat i el rendiment dels components d'emmagatzematge a Zabbix, heu d'utilitzar plantilles personalitzades. Apunto a la vostra atenció una d'aquestes plantilles.

Primer, una mica de teoria.

Per accedir a l'estat i les estadístiques de l'emmagatzematge d'IBM Storwize, podeu utilitzar:

  1. protocols CIM/WBEM;
  2. API RESTful (admès per IBM Storwize a partir de la versió de programari 8.1.3);
  3. Trampes SNMP (conjunt limitat de trampes, sense estadístiques);
  4. Connexió SSH seguida de control remot adequat per a scripts de bash tranquil·lament.

Els interessats poden obtenir més informació sobre els diferents mètodes de seguiment a les seccions rellevants de la documentació del proveïdor, així com al document Scripts d'IBM Spectrum Virtualize.

Utilitzarem els protocols CIM/WBEM, que ens permeten obtenir els paràmetres del sistema d'emmagatzematge sense canvis significatius en el programari per a diversos sistemes d'emmagatzematge. Els protocols CIM/WBEM funcionen segons Especificació de la iniciativa de gestió d'emmagatzematge (SMI-S). L'Especificació de la Iniciativa de gestió de l'emmagatzematge es basa en estàndards oberts CIM (Model d'informació comú) и WBEM (Gestió empresarial basada en web)definit Grup de treball de gestió distribuïda.

WBEM funciona a la part superior del protocol HTTP. Mitjançant WBEM, podeu treballar no només amb sistemes d'emmagatzematge, sinó també amb HBA, commutadors i biblioteques de cintes.

Segons Arquitectura SMI и Determinar la infraestructura, el component principal de la implementació SMI és el servidor WBEM que processa les sol·licituds CIM-XML dels clients WBEM (en el nostre cas, des dels scripts de monitorització):

Supervisió de l'emmagatzematge d'IBM Storwize amb Zabbix

CIM és un model orientat a objectes basat en el llenguatge de modelatge unificat (UML).
Els elements gestionats es defineixen com a classes CIM que tenen propietats i mètodes per representar dades i funcionalitats gestionades.

Segons www.snia.org/pywbem, per accedir a l'emmagatzematge mitjançant CIM / WBEM, podeu utilitzar PyWBEM, una biblioteca de codi obert escrita en Python que proporciona als desenvolupadors i administradors de sistemes la implementació del protocol CIM per accedir als objectes CIM i realitzar diverses operacions amb un servidor WBEM que funciona segons SMI. -S o altres especificacions CIM.

Per connectar-vos al servidor WBEM, utilitzeu el constructor de classes WBEMCconnection:

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

Aquesta és una connexió virtual, ja que CIM-XML/WBEM s'executa sobre HTTP, la connexió real es produeix quan es criden mètodes en una instància de la classe WBEMConnection. D'acord amb l'IBM System Storage SAN Volume Controller i Storwize V7000 Best Practices and Performance Guidelines (Exemple C-8, pàg. 412), utilitzarem “root/ibm” com a espai de noms CIM per a l'emmagatzematge IBM Storwize.

Tingueu en compte que per recopilar estadístiques sobre el protocol CIM-XML/WBEM, heu d'incloure l'usuari al grup de seguretat adequat. En cas contrari, quan s'executen consultes WBEM, la sortida dels atributs de la instància de classe estarà buida.

Per accedir a les estadístiques d'emmagatzematge, l'usuari sota el qual es crida el constructor WBEMConnection(), ha de tenir almenys RestrictedAdmin (disponible per a codi_nivell > 7.8.0) o Administrador (no recomanat per motius de seguretat).

Ens connectem al sistema d'emmagatzematge mitjançant SSH i mirem els números 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    

Afegiu l'usuari zabbix al grup desitjat:

> chuser -usergrp 5 zabbix

A més, d'acord amb IBM System Storage SAN Volume Controller i Storwize V7000 Best Practices and Performance Guidelines (pàg. 415), heu d'habilitar la recollida d'estadístiques al sistema d'emmagatzematge. Per tant, per recopilar estadístiques cada minut:

> startstats -interval 1 

Comprovem:

> lssystem | grep statistics
statistics_status on
statistics_frequency 1

Per obtenir totes les classes d'emmagatzematge existents, heu d'utilitzar el mètode EnumerateClassNames().

Exemple:

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

Per obtenir els valors dels paràmetres del sistema d'emmagatzematge, el mètode Enumerar Instàncies() Classe WBEMConnection que retorna una llista d'instàncies CIMInstance().

Exemple:

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

Per a algunes classes que contenen un gran nombre d'instàncies, com ara IBMTSSVC_StorageVolume, una consulta completa de totes les instàncies pot ser bastant lenta. Pot generar grans quantitats de dades que han de ser preparades pel sistema d'emmagatzematge, transmeses per la xarxa i processades per un script. Per a aquest cas, hi ha un mètode ExecQuery(), que permet obtenir només les propietats de la instància de classe que ens interessen. Aquest mètode implica utilitzar un llenguatge de consulta semblant a SQL, ja sigui CIM Query Language (DMTF:CQL) o WBEM Query Language (WQL), per consultar objectes d'emmagatzematge CIM:

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

Per determinar quines classes necessitem per obtenir els paràmetres dels objectes d'emmagatzematge, llegim la documentació, per exemple Com es mapegen els conceptes del sistema amb els conceptes CIM.

Per tant, per obtenir paràmetres (no comptadors de rendiment) dels discs físics (unitats de disc), consultarem la classe IBMTSSVC_DiskDrive, per obtenir els paràmetres de volums - Classe IBMTSSVC_StorageVolume, per obtenir paràmetres de matriu - Classe IBMTSSVC_Array, per obtenir els paràmetres de MDisks - Classe IBMTSSVC_Backend, etc.

Podeu llegir sobre el rendiment Esquemes funcionals de l'agent Common Information Model (concretament - Bloqueja el subperfil de rendiment del servidor) i IBM System Storage SAN Volume Controller i Storwize V7000 Best Practices and Performance Guidelines (Exemple C-11, pàgina 415).

Per obtenir estadístiques d'emmagatzematge per a volums, heu d'especificar IBMTSSVC_StorageVolumeStatistics com a valor del paràmetre ClassName. Les propietats de la classe IBMTSSVC_StorageVolumeStatistics necessàries per recopilar estadístiques es poden trobar a Estadístiques de nodes.

També, per a l'anàlisi del rendiment, podeu utilitzar les classes IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics.

Per escriure dades al sistema de monitorització, utilitzarem el mecanisme trampes zabbix, implementat en python en un mòdul py-zabbix. L'estructura de les classes d'emmagatzematge i les seves propietats es col·locaran en un diccionari en format JSON.

Pugem la plantilla al servidor Zabbix, ens assegurem que el servidor de monitoratge té accés a l'emmagatzematge mitjançant el protocol WEB (TCP/5989), col·loquem els fitxers de configuració, scripts de detecció i monitoratge al servidor de monitoratge. A continuació, afegiu scripts al planificador. Com a resultat: descobrim objectes d'emmagatzematge (matrius, discs físics i virtuals, carcasses i molt més), els passem als descobriments de Zabbix, llegim l'estat dels seus paràmetres, llegim les estadístiques de rendiment (comptadors de rendiment), transferim tot això als corresponents Elements Zabbix de la nostra plantilla.

La plantilla Zabbix, els scripts de Python, l'estructura de les classes d'emmagatzematge i les seves propietats, així com exemples de fitxers de configuració, es poden trobar aquí.

Font: www.habr.com

Afegeix comentari