IBM Storwize -tallennustilan valvonta Zabbixin avulla
Tässä artikkelissa puhumme hieman IBM Storwize -tallennusjärjestelmien ja muiden CIM/WBEM-protokollia tukevien tallennusjärjestelmien valvonnasta. Tällaisen seurannan tarve on jätetty pois yhtälöstä; pidämme tätä aksioomana. Käytämme Zabbixia valvontajärjestelmänä.
Zabbixin uusimmissa versioissa yritys alkoi kiinnittää paljon enemmän huomiota malleihin - malleja alkoi ilmestyä valvontapalveluille, DBMS:lle, palvelinlaitteistolle (IMM/iBMC) IPMI:n kautta. Tallennusjärjestelmän valvonta on edelleen mallien ulkopuolella, joten sinun on käytettävä mukautettuja malleja, jotta voit integroida tiedot tallennuskomponenttien tilasta ja suorituskyvystä Zabbixiin. Tuon huomionne yhden näistä malleista.
Ensinnäkin pieni teoria.
Voit tarkastella IBM Storwize -tallennusjärjestelmien tilaa ja tilastoja käyttämällä:
CIM/WBEM-protokollat;
RESTful API (tuettu IBM Storwizessa ohjelmistoversiosta 8.1.3 alkaen);
SNMP Traps (rajoitettu joukko ansoja, ei tilastoja);
Kiinnostuneet voivat tutustua erilaisiin valvontamenetelmiin toimittajan dokumentaation asianmukaisissa osioissa sekä asiakirjassa IBM Spectrum Virtualize -komentosarjat.
WBEM toimii HTTP-protokollan päällä. WBEM:n avulla voit työskennellä tallennusjärjestelmien lisäksi myös HBA:iden, kytkimien ja nauhakirjastojen kanssa.
Mukaan SMI-arkkitehtuuri и Määritä infrastruktuuri, SMI-toteutuksen pääkomponentti on WBEM-palvelin, joka käsittelee CIM-XML-pyyntöjä WBEM-asiakkailta (meissä tapauksessa valvontaskripteistä):
CIM on UML (Unified Modeling Language) -kieleen perustuva oliomalli.
Hallitut elementit määritellään CIM-luokiksi, joilla on ominaisuuksia ja menetelmiä, jotka edustavat hallittua dataa ja toimintoja.
Mukaan www.snia.org/pywbem, päästäksesi tallennusjärjestelmiin CIM/WBEM:n kautta, voit käyttää PyWBEM:ää – Pythonilla kirjoitettua avoimen lähdekoodin kirjastoa, joka tarjoaa kehittäjille ja järjestelmänvalvojille CIM-protokollan toteutuksen CIM-objektien käyttämiseen ja erilaisten toimintojen suorittamiseen WBEM-palvelimella, joka toimii SMI-S:n tai muiden CIM-määritysten mukaisesti.
Tämä on virtuaalinen yhteys, koska CIM-XML/WBEM toimii HTTP:n päällä, todellinen yhteys syntyy, kun menetelmiä kutsutaan WBEMConnection-luokan esiintymässä. IBM System Storage SAN Volume Controllerin ja Storwize V7000 Best Practices and Performance Guidelines -ohjeiden (esimerkki C-8, sivu 412) mukaisesti käytämme IBM Storwize -tallennusjärjestelmän CIM-nimiavaruudena "root/ibm".
Huomaa, että jos haluat kerätä tilastoja CIM-XML/WBEM-protokollan kautta, sinun on sisällytettävä käyttäjä sopivaan suojausryhmään. Muussa tapauksessa WBEM-kyselyitä suoritettaessa luokan ilmentymien attribuuttien tulos on tyhjä.
Tallennustilastoihin pääsee käsiksi käyttäjä, jonka alaisuudessa konstruktoria kutsutaan WBEMConnection(), on oltava vähintään RestrictedAdmin (saatavilla kooditasolle > 7.8.0) tai järjestelmänvalvojan oikeudet (ei suositella turvallisuussyistä).
Yhdistämme tallennusjärjestelmään SSH:n kautta ja katsomme ryhmänumeroita:
> 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
Lisää zabbix-käyttäjä haluttuun ryhmään:
> chuser -usergrp 5 zabbix
Lisäksi IBM System Storage SAN Volume Controllerin ja Storwize V7000 Best Practices and Performance Guidelines -ohjeiden (s. 415) mukaisesti sinun on otettava käyttöön tilastotietojen kerääminen tallennusjärjestelmässä. Joten kerätäksesi tilastoja joka minuutti:
> startstats -interval 1
tarkista:
> lssystem | grep statistics
statistics_status on
statistics_frequency 1
Saadaksesi kaikki olemassa olevat tallennusluokat, sinun on käytettävä EnumerateClassNames()-metodia.
Esimerkiksi:
classnames = conn.EnumerateClassNames(namespace='root/ibm', DeepInheritance=True)
for classname in classnames:
print (classname)
Menetelmää käytetään tallennusjärjestelmän parametrien arvojen saamiseksi EnumerateInstances() luokka WBEMConnection, palauttaa luettelon esiintymistä CIMInstance().
Esimerkiksi:
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))
Joissakin luokissa, jotka sisältävät suuren määrän ilmentymiä, kuten IBMTSSVC_StorageVolume, kaikkien ilmentymien täydellinen kysely voi olla melko hidasta. Se voi tuottaa suuria määriä dataa, jotka tallennusjärjestelmän on valmisteltava, lähetettävä verkon yli ja käsiteltävä komentosarjalla. Tällaiseen tapaukseen on olemassa menetelmä ExecQuery(), jonka avulla voimme saada vain meitä kiinnostavan luokkaesiintymän ominaisuudet. Tässä menetelmässä käytetään SQL:n kaltaista kyselykieltä, joko CIM-kyselykieltä (DMTF:CQL) tai WBEM-kyselykieltä (WQL), CIM-tallennusobjektien kyselyyn:
request = 'SELECT Name FROM IBMTSSVC_StorageVolumeStatistics'
objects_perfs_cim = wbem_connection.ExecQuery('DMTF:CQL', request)
Jos haluat saada tallennustilastoja Volumeille, sinun on määritettävä IBMTSSVC_StorageVolumeStatistics ClassName-parametrin arvoksi. Tilastojen keräämiseen tarvittavat IBMTSSVC_StorageVolumeStatistics-luokan ominaisuudet ovat nähtävissä osoitteessa Solmutilastot.
Suorituskykyanalyysiin voit myös käyttää luokkia IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics.
Käytämme mekanismia tietojen tallentamiseen valvontajärjestelmään zabbix ansoja, toteutettu pythonissa moduulissa py-zabbix. Sijoitamme tallennusjärjestelmäluokkien rakenteen ja niiden ominaisuudet sanakirjaan JSON-muodossa.
Lataamme mallin Zabbix-palvelimelle, varmistamme, että valvontapalvelimella on pääsy tallennusjärjestelmään WEB-protokollan (TCP/5989) kautta ja asetamme valvontapalvelimelle konfiguraatiotiedostot, tunnistus- ja valvontaskriptit. Lisää seuraavaksi komentosarjan käynnistys ajastimeen. Tuloksena: löydämme tallennusobjekteja (taulukoita, fyysisiä ja virtuaalisia levyjä, koteloita ja paljon muuta), siirrämme ne Zabbix-löytöihin, luemme niiden parametrien tilan, luemme suorituskykytilastot (suorituskykylaskurit), siirrämme kaiken vastaavaan Zabbixiin Mallimme kohteet.
Zabbix-malli, python-skriptit, tallennusluokkien rakenne ja niiden ominaisuudet sekä esimerkkejä asetustiedostoista, voit löytää täältä.