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à:
protocols CIM/WBEM;
API RESTful (supportatu in IBM Storwize à partesi da a versione di u software 8.1.3);
Trappule SNMP (set limitatu di trappule, senza statistiche);
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.
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):
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:
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)
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 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ì.