Monitoring IBM Storwize storage cù Zabbix

In questu articulu parlemu un pocu di u monitoraghju di i sistemi di almacenamiento IBM Storwize è altri sistemi di almacenamiento chì supportanu i protokolli CIM / WBEM. U bisognu di tali monitoraghju hè lasciatu fora di l'equazioni; cunsideremu questu un assioma. Avemu aduprà Zabbix cum'è un sistema di surviglianza.

In l'ultime versioni di Zabbix, a cumpagnia hà cuminciatu à pagà assai più attente à i mudelli - i mudelli cuminciaru à apparisce per i servizii di surviglianza, DBMS, Server hardware (IMM/iBMC) via IPMI. U monitoraghju di u sistema di almacenamiento hè sempre fora di i mudelli fora di a scatula, cusì per integrà l'infurmazioni nantu à u statutu è u rendiment di i cumpunenti di almacenamiento in Zabbix, avete bisognu di utilizà mudelli persunalizati. Aghju purtatu à a vostra attenzione unu di sti mudelli.

Prima, un pocu di teoria.

Per accede à u statutu è e statistiche di i sistemi di almacenamiento IBM Storwize, pudete aduprà:

  1. protocols CIM/WBEM;
  2. API RESTful (supportatu in IBM Storwize à partesi da a versione di u software 8.1.3);
  3. Trappule SNMP (set limitatu di trappule, senza statistiche);
  4. Cunnette via SSH è dopu remotamente adattatu per scripting bash tranquillamente.

Quelli interessati ponu amparà di più nantu à diversi metudi di monitoraghju in e sezioni pertinenti di a documentazione di u venditore, è ancu in u documentu. IBM Spectrum Virtualize scripting.

Adupremu i protokolli CIM / WBEM, chì ci permettenu di ottene paràmetri di u sistema di almacenamentu senza cambiamenti significativi di software per diversi sistemi di almacenamento. I protokolli CIM/WBEM operanu in cunfurmità cù Spécification de l'initiative de gestion du stockage (SMI-S). Iniziativa di Gestione di Storage - A specificazione hè basata nantu à standard aperti CIM (Model d'Informazione Cumunu) и WBEM (Gestione di l'impresa basata in Web), determinatu Task Force di Gestione Distribuita.

WBEM corre nantu à u protocolu HTTP. Per mezu di WBEM pudete travaglià micca solu cù sistemi di almacenamiento, ma ancu cù HBA, switches è biblioteche di cinta.

Sicondu SMI Architecture и Determinà l'infrastruttura, u cumpunente principale di l'implementazione SMI hè u servitore WBEM, chì processa e dumande CIM-XML da i clienti WBEM (in u nostru casu, da script di monitoraghju):

Monitoring IBM Storwize storage cù Zabbix

CIM hè un mudellu orientatu à l'ughjettu basatu in Unified Modeling Language (UML).
L'elementi gestiti sò definiti cum'è classi CIM chì anu pruprietà è metudi per rapprisintà e dati gestiti è funziunalità.

Sicondu www.snia.org/pywbem, per accede à i sistemi di almacenamento via CIM/WBEM, pudete aduprà PyWBEM - una libreria open source scritta in Python, chì furnisce à i sviluppatori è amministratori di sistema una implementazione di u protocolu CIM per accede à l'oggetti CIM è eseguisce diverse operazioni cù un servitore WBEM chì opera in in cunfurmità cù SMI-S o altre specificazioni CIM.

Per cunnette à u servitore WBEM usemu u constructore di classi WBEMConnection:

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

Questa hè una cunnessione virtuale, postu chì CIM-XML / WBEM corre nantu à HTTP, a cunnessione vera si trova quandu i metudi sò chjamati in una istanza di a classe WBEMConnection. In cunfurmità cù l'IBM System Storage SAN Volume Controller è Storwize V7000 Best Practices and Performance Guidelines (Esempiu C-8, pagina 412), useremu "root/ibm" cum'è u spaziu di nomi CIM per u sistema di almacenamiento IBM Storwize.

Per piacè nutate chì per cullà statistiche via u protokollu CIM-XML / WBEM, duvete include l'utilizatore in u gruppu di sicurità adattatu. Altrimenti, quandu eseguite e dumande WBEM, l'output di l'attributi di l'istanza di classi serà viotu.

Per accede à e statistiche di almacenamiento, l'utilizatore sottu quale u custruttore hè chjamatu WBEMConnection (), deve avè almenu RestrictedAdmin (disponibile per code_level> 7.8.0) o diritti di Amministratore (micca cunsigliatu per ragioni di sicurezza).

Cunnettamu à u sistema di almacenamiento via SSH è fighjemu i numeri di u gruppu:

> 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    

Aghjunghjite l'utilizatore zabbix à u gruppu desideratu:

> chuser -usergrp 5 zabbix

Inoltre, in cunfurmità cù l'IBM System Storage SAN Volume Controller è Storwize V7000 Best Practices and Performance Guidelines (p. 415), deve attivà a cullizzioni di statistiche nantu à u sistema di almacenamiento. Dunque, per cullà statistiche ogni minutu:

> startstats -interval 1 

Verificate:

> lssystem | grep statistics
statistics_status on
statistics_frequency 1

Per uttene tutte e classi di almacenamento esistenti, duvete aduprà u metudu EnumerateClassNames().

Esempiu:

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

U metudu hè adupratu per ottene i valori di i paràmetri di u sistema di almacenamento Enumerate Instances () classa WBEMConnection, riturnendu una lista di istanze CIMInstance ().

Esempiu:

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 certi classi chì cuntenenu un gran numaru di istanze, cum'è IBMTSSVC_StorageVolume, una dumanda completa di tutte l'istanze pò esse abbastanza lenta. Puderà generà grandi volumi di dati chì deve esse preparatu da u sistema di almacenamiento, trasmessi nantu à a reta è trattatu da u script. Ci hè un metudu per un tali casu ExecQuery (), chì ci permette di ottene solu e proprietà di una istanza di classa chì ci interessa. Stu metudu implica l'usu di una lingua di query simile à SQL, o CIM Query Language (DMTF: CQL) o WBEM Query Language (WQL), per interrogà l'uggetti di almacenamiento CIM:

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

Per determinà quali classi avemu bisognu di ottene i paràmetri di l'uggetti di almacenamiento, leghjite a documentazione, per esempiu Cumu i cuncetti di u sistema mappanu à i cuncetti CIM.

Dunque, per ottene parametri (micca cuntatori di prestazione) di dischi fisici (Disk Drives) sondaremu Class IBMTSSVC_DiskDrive, per ottene paràmetri di volumi - Class IBMTSSVC_StorageVolume, per ottene paràmetri di array - Class IBMTSSVC_Array, per ottene parametri MDisks - Class IBMTSSVC_BackendVolume, etc.

Per u performance pudete leghje I diagrammi funziunali di l'agente di u Modellu d'Informazione Cumunu (in particulare - Bloccà u subprofilu di prestazione di u servitore) è IBM System Storage SAN Volume Controller è Storwize V7000 Best Practices and Performance Guidelines (Esempiu C-11, pagina 415).

Per ottene statistiche di almacenamiento per i volumi, deve specificà IBMTSSVC_StorageVolumeStatistics cum'è u valore di u paràmetru ClassName. E proprietà di a classe IBMTSSVC_StorageVolumeStatistics necessaria per a cullizzioni di statistiche ponu esse vistu in Statistiche Node.

Inoltre, per l'analisi di u rendiment pudete aduprà e classi IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics.

Per registrà e dati in u sistema di surviglianza, useremu u mecanismu trappule zabbix, implementatu in python in un modulu py-zabbix. Puderemu a struttura di classi di sistemi di almacenamento è e so proprietà in un dizziunariu in formatu JSON.

Caricà u mudellu à u servitore Zabbix, assicuratevi chì u servitore di surviglianza hà accessu à u sistema di almacenamentu via u protocolu WEB (TCP/5989), è mette i schedarii di cunfigurazione, script di deteczione è di monitoraghju in u servitore di monitoraghju. In seguitu, aghjunghje script launch à u scheduler. In u risultatu: scopre l'uggetti di almacenamento (arrays, dischi fisici è virtuali, enclosures è assai più), trasfiriu à i scuperti Zabbix, leghje u statutu di i so paràmetri, leghje statistiche di rendiment (contatori di rendiment), trasfiriu tuttu questu à u Zabbix currispundente. Elementi di u nostru mudellu.

U mudellu Zabbix, script python, struttura di classi di almacenamento è e so proprietà, è ancu esempi di schedarii di cunfigurazione, pudete trova quì.

Source: www.habr.com

Add a comment