IBM Storwize tárhely figyelése a Zabbix segítségével
Ebben a cikkben egy kicsit az IBM Storwize tárolórendszerek és más, CIM / WBEM protokollokat támogató tárolórendszerek figyeléséről fogunk beszélni. Az ilyen ellenőrzés szükségessége kimarad a zárójelekből, ezt axiómának fogjuk tekinteni. A Zabbixot felügyeleti rendszerként fogjuk használni.
A Zabbix legújabb verzióiban a vállalat sokkal nagyobb figyelmet kezdett fordítani a sablonokra - megjelentek a sablonok a szolgáltatások, a DBMS, a szerver hardver (IMM / iBMC) megfigyeléséhez az IPMI-n keresztül. A tárhelyfigyelés még mindig készen áll, ezért a tárolási összetevők állapotával és teljesítményével kapcsolatos információk Zabbixba való integrálásához egyéni sablonokat kell használnia. Figyelmébe ajánlom az egyik ilyen sablont.
Először is, egy kis elmélet.
Az IBM Storwize tárhely állapotának és statisztikáinak eléréséhez a következőket használhatja:
CIM/WBEM protokollok;
RESTful API (az IBM Storwize támogatja a 8.1.3-as szoftververziótól kezdve);
SNMP csapdák (korlátozott számú csapda, nincs statisztika);
Az érdeklődők a különböző ellenőrzési módszerekről a szállítói dokumentáció megfelelő rovataiban, valamint a dokumentumban tájékozódhatnak. IBM Spectrum Virtualize parancsfájlok.
A WBEM a HTTP protokollon felül működik. A WBEM-en keresztül nem csak tárolórendszerekkel, hanem HBA-kkal, kapcsolókkal és szalagos könyvtárakkal is dolgozhat.
Szerint SMI architektúra и Határozza meg az infrastruktúrát, az SMI implementáció fő összetevője a WBEM szerver, amely feldolgozza a WBEM kliensek CIM-XML kéréseit (esetünkben a megfigyelő szkriptekből):
A CIM egy objektumorientált modell, amely az egységes modellezési nyelven (UML) alapul.
A felügyelt elemek olyan CIM-osztályok, amelyek tulajdonságokkal és metódusokkal rendelkeznek a felügyelt adatok és funkciók megjelenítésére.
Szerint www.snia.org/pywbem, a tárhelyhez CIM/WBEM-en keresztül történő hozzáféréshez használhatja a PyWBEM-et, egy Pythonban írt nyílt forráskódú könyvtárat, amely a fejlesztők és rendszergazdák számára biztosítja a CIM protokoll megvalósítását a CIM objektumok eléréséhez és különféle műveletek végrehajtásához az SMI szerint működő WBEM szerverrel. -S vagy más CIM specifikációk.
A WBEM-kiszolgálóhoz való csatlakozáshoz használja az osztálykonstruktort WBEMConnection:
Ez egy virtuális kapcsolat, mivel a CIM-XML/WBEM HTTP-n keresztül fut, a tényleges kapcsolat akkor jön létre, amikor metódusokat hívnak meg a WBEMConnection osztály egy példányán. Az IBM System Storage SAN kötetvezérlővel és a Storwize V7000 legjobb gyakorlataira és teljesítményére vonatkozó irányelveivel összhangban (C-8. példa, 412. o.) a „root/ibm”-et fogjuk használni az IBM Storwize tárhely CIM névtereként.
Kérjük, vegye figyelembe, hogy a CIM-XML/WBEM protokollra vonatkozó statisztikák gyűjtéséhez fel kell vennie a felhasználót a megfelelő biztonsági csoportba. Ellenkező esetben a WBEM lekérdezések végrehajtásakor az osztálypéldány attribútumainak kimenete üres lesz.
A tárolási statisztikák eléréséhez az a felhasználó, aki alatt a konstruktor meg van hívva WBEMConnection(), legalább RestrictedAdmin (elérhető kód_szint > 7.8.0 esetén) vagy Rendszergazda (biztonsági okokból nem ajánlott) rendelkeznie kell.
SSH-n keresztül csatlakozunk a tárolórendszerhez, és megnézzük a csoportszámokat:
> 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
Adja hozzá a zabbix felhasználót a kívánt csoporthoz:
> chuser -usergrp 5 zabbix
Ezenkívül az IBM System Storage SAN Volume Controller és a Storwize V7000 legjobb gyakorlatok és teljesítmény irányelveinek (415. oldal) megfelelően engedélyeznie kell a statisztikai adatok gyűjtését a tárolórendszeren. Tehát, hogy percenként gyűjtsünk statisztikákat:
> startstats -interval 1
Ellenőrizzük:
> lssystem | grep statistics
statistics_status on
statistics_frequency 1
Az összes meglévő tárolási osztály lekéréséhez az EnumerateClassNames() metódust kell használnia.
Példa:
classnames = conn.EnumerateClassNames(namespace='root/ibm', DeepInheritance=True)
for classname in classnames:
print (classname)
A tárolórendszer paramétereinek értékeinek megszerzéséhez a módszer Enumerate Instances() A WBEMConnection osztály a példányok listáját adja vissza CIMInstance().
Példa:
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))
Egyes osztályok esetében, amelyek nagy számú példányt tartalmaznak, mint például az IBMTSSVC_StorageVolume, az összes példány teljes lekérdezése meglehetősen lassú lehet. Nagy mennyiségű adatot képes előállítani, amelyet a tárolórendszernek kell előkészítenie, továbbítania a hálózaton, és egy parancsfájl segítségével kell feldolgoznia. Ilyen esetre van egy módszer ExecQuery(), amivel csak az osztálypéldány számunkra érdekes tulajdonságait kaphatjuk meg. Ez a módszer egy SQL-szerű lekérdezési nyelv, CIM Query Language (DMTF:CQL) vagy WBEM Query Language (WQL) használatát foglalja magában a CIM tárolóobjektumok lekérdezéséhez:
request = 'SELECT Name FROM IBMTSSVC_StorageVolumeStatistics'
objects_perfs_cim = wbem_connection.ExecQuery('DMTF:CQL', request)
Tehát a fizikai lemezek (Disk Drives) paramétereinek (nem teljesítményszámlálóinak) lekéréséhez lekérdezzük az IBMTSSVC_DiskDrive osztályt, hogy megkapjuk a Volumes paramétereket - IBMTSSVC_StorageVolume osztály, a tömbparaméterek lekéréséhez - az IBMTSSVC_Array osztály, az MDisks paraméterek lekéréséhez - az IBMTSSVC_BackendVolume osztály stb.
A kötetek tárolási statisztikáinak megtekintéséhez meg kell adnia az IBMTSSVC_StorageVolumeStatistics értéket a ClassName paraméter értékeként. Az IBMTSSVC_StorageVolumeStatistics osztály statisztikagyűjtéshez szükséges tulajdonságait a Csomóponti statisztika.
A teljesítmény elemzéséhez használhatja az IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics osztályokat is.
Az adatok felügyeleti rendszerbe írásához a mechanizmust fogjuk használni zabbix csapdák, pythonban implementálva egy modulban py-zabbix. A tárolási osztályok szerkezete és tulajdonságai egy JSON formátumú szótárba kerülnek.
Feltöltjük a sablont a Zabbix szerverre, megbizonyosodunk arról, hogy a felügyeleti szerver WEB protokollon (TCP / 5989) keresztül hozzáfér a tárhelyhez, elhelyezzük a konfigurációs fájlokat, az észlelési és megfigyelési szkripteket a megfigyelő szerveren. Ezután adjon hozzá szkripteket az ütemezőhöz. Ennek eredményeként: tárolóobjektumokat (tömböket, fizikai és virtuális lemezeket, burkolatokat és még sok mást) fedezünk fel, átadjuk a Zabbix felfedezéseknek, leolvassuk a paramétereik állapotát, kiolvassuk a teljesítménystatisztikát (teljesítményszámlálók), mindezt átvisszük a megfelelő helyre. Zabbix Sablonunk elemei.
A Zabbix sablon, a python szkriptek, a tárolási osztályok szerkezete és tulajdonságaik, valamint a konfigurációs fájlok példái itt találja.