Ebben a cikkben egy kicsit a Zabbix használatával történő IBM Storwize tárolók és egyéb, CIM/WBEM protokollokat támogató tárolók monitorozásáról beszélünk. A monitorozás szükségességét nem taglaljuk, tekintsük ezt axiómának. A monitorozó rendszerként a Zabbix-ot fogjuk használni.
A Zabbix legújabb verzióiban a cég sokkal nagyobb figyelmet fordít a sablonokra – megjelentek sablonok a szolgáltatások, adatbázisok, és a Servers hardware (IMM/iBMC) IPMI-n keresztüli monitorozására. Jelenleg a tárolók monitorozása még mindig nem része a gyári sablonoknak, így a Zabbix-ba a tárolók állapotának és teljesítményének integrálásához egyedi sablonokat kell használni. Még egy ilyen sablont szeretnék a figyelmetekbe ajánlani.
Először egy kis elmélet.
Az IBM Storwize tároló állapotának és statisztikájának eléréséhez a következőket használhatjuk:
- CIM/WBEM protokollok;
- (az IBM Storwize esetében a 8.1.3 verziótól kezdődően támogatott);
- SNMP Traps (korlátozott számú trap, statisztika nélkül);
- SSH kapcsolaton keresztül, majd távoli .
Az érdeklődők a megfelelő gyártói dokumentációs fejezetekben, valamint a dokumentumban a különböző monitorozási módszerekkel bővebben is megismerkedhetnek .
A CIM/WBEM protokollokat fogjuk használni, amelyek lehetővé teszik a tárolók működési paramétereinek elérését jelentős szoftverváltoztatások nélkül különböző tárolók esetében. A CIM/WBEM protokollok a következők szerint működnek . A Storage Management Initiative – Specification nyílt standardokon alapul és , amelyeket a következő szervezet határoz meg: .
A WBEM az HTTP protokoll fölött működik. A WBEM-en keresztül nemcsak a tárolók, hanem az HBA-k, switchek és szalagos könyvtárak is kezelhetők.
A következő szerint és , az SMI megvalósításának fő összetevője a WBEM szerver, amely feldolgozza a CIM-XML kéréseket a WBEM-ügyfelektől (esetünkben a monitorozó szkriptektől):

A CIM egy objektum-orientált modell, amely az Unified Modeling Language (UML) alapjaira épül.
A kezelt elemeket CIM-osztályok formájában definiálják, amelyeknek jellemzőik és módszereik vannak a kezelt adatok és funkciók megjelenítésére.
A következő szerint , a CIM/WBEM eléréséhez a PyWBEM nyílt forráskódú könyvtárat használhatjuk, amely Pythonban készült, és lehetővé teszi a fejlesztők és rendszergazdák számára a CIM protokoll megvalósítását a CIM-objektumokhoz való hozzáféréshez és a WBEM-szerverrel való különböző műveletek végrehajtásához, amely az SMI-S vagy más CIM-specifikációknak megfelelően működik.
A WBEM-szerverhez való kapcsolódáshoz használjuk az osztályok konstruktorát, :
conn = pywbem.WBEMConnection(server_uri, (self.login, self.password),
namespace, no_verification=True)
Ez virtuális kapcsolat, mivel a CIM-XML/WBEM HTTP-n keresztül működik, a valódi kapcsolat a WBEMConnection osztály példányának metódusainak meghívásakor jön létre. Az IBM System Storage SAN Volume Controller és Storwize V7000 Legjobb Gyakorlatok és Teljesítmény Irányelvek (Példa C-8, 412. old.) szerint a CIM névtérként az IBM Storwize esetében a következőt fogjuk használni: 'root/ibm'.
Figyeljen arra, hogy a statisztikák gyűjtéséhez a CIM-XML/WBEM protokollhoz a felhasználót a megfelelő biztonsági csoportba kell felvenni. Ellenkező esetben, amikor WBEM-kérdéseket hajt végre, az osztály példányának attribútumainak kimenete üres lesz..
A statisztikák eléréséhez a felhasználónak, akivel a konstruktor hívása történik, , legalább RestrictedAdmin jogokkal kell rendelkeznie (az 7.8.0 kódszint fölött elérhető) vagy Administrator jogokkal (biztonsági okokból nem ajánlott).
SSH-n keresztül csatlakozunk a tárolóhoz, és megnézzük a csoportok számát:
> lsusergrp
id név szerep távoli
0 SecurityAdmin SecurityAdmin nem
1 Administrator Administrator nem
2 CopyOperator CopyOperator nem
3 Szolgáltatás Szolgáltatás nem
4 Monitor Monitor nem
5 RestrictedAdmin RestrictedAdmin nem
Hozzáadjuk a zabbix felhasználót a megfelelő csoporthoz:
> chuser -usergrp 5 zabbix
Ezenkívül az IBM System Storage SAN Volume Controller és Storwize V7000 Legjobb Gyakorlatok és Teljesítmény Irányelvek (415. oldal) szerint engedélyezni kell a statisztikák gyűjtését a tárolón. Tehát a statisztikák egy percenkénti gyűjtéséhez:
> startstats -interval 1
Ellenőrizzük:
> lssystem | grep statistics
statistics_status be
statistics_frequency 1
Minden létező osztály eléréséhez a tárolón a EnumerateClassNames() metódust kell használni.
Példa:
classnames = conn.EnumerateClassNames(namespace='root/ibm', DeepInheritance=True)
for classname in classnames:
print (classname)
A tároló paramétereinek értékeinek lekérésére szolgál a metódus a WBEMConnection osztályban, amely példányok listáját adja vissza .
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))
Néhány osztály esetén, amelyek sok 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 generálhat, amelyet elő kell készíteni az tárolórendszer számára, át kell adni a hálózaton, és feldolgozni kell a szkripttel. Ilyen esetekre létezik egy módszer , amely lehetővé teszi számunkra, hogy csak az osztály példányának érdekes tulajdonságait kapjuk meg. Ez a módszer lekérdezési nyelv, például SQL használatát feltételezi — akár CIM Query Language (DMTF:CQL), akár WBEM Query Language (WQL) a CIM-objektumok tárolórendszerben történő lekérdezéséhez:
request = 'SELECT Name FROM IBMTSSVC_StorageVolumeStatistics'
objects_perfs_cim = wbem_connection.ExecQuery('DMTF:CQL', request)
Ahhoz, hogy meghatározzuk, mely osztályokra van szükségünk a tárolórendszer objektumainak paramétereinek lekérdezéséhez, el kell olvasnunk a dokumentációt, például .
Így a fizikai lemezek (Disk Drives) paramétereinek (nem teljesítménymérő) lekérdezéséhez az IBMTSSVC_DiskDrive osztályt kérdezzük, a Volumes paramétereinek lekérdezéséhez az IBMTSSVC_StorageVolume osztályt, a tömbök paramétereinek lekérdezéséhez az IBMTSSVC_Array osztályt, a MDisks paramétereinek lekérdezéséhez az IBMTSSVC_BackendVolume osztályt stb.
A teljesítményről olvashatunk (konkrétan — ) és az IBM System Storage SAN Volume Controller and Storwize V7000 Legjobb Gyakorlatok és Teljesítmény-útmutatók (példa C-11, 415. oldal).
A Volumes tárolórendszer statisztikájának lekérdezéséhez az IBMTSSVC_StorageVolumeStatistics értéket kell megadnunk a ClassName paraméterhez. A IBMTSSVC_StorageVolumeStatistics osztály statisztikai gyűjtéshez szükséges tulajdonságait megtekinthetjük a .
Ezen kívül a teljesítmény elemzéséhez az IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics osztályokat is használhatjuk.
Az adatok monitorozási rendszerbe történő beviteléhez a következő mechanizmust fogjuk használni , amely pythonban valósul meg a modulban. A tárolórendszer osztályainak és tulajdonságainak struktúráját JSON formátumú szótárban helyezzük el.
A Zabbix sablon feltöltése a szerverre, biztosítva, hogy a megfigyelő szerver hozzáféréssel rendelkezik a tömbtárolóhoz a WEB protokollon (TCP/5989). A konfigurációs fájlokat, a felfedező és felügyeleti szkripteket a megfigyelő szerveren helyezzük el. Ezután a feladatütemezőben hozzáadjuk a szkriptek futtatását. Ennek eredményeként: felfedezzük a tömbtároló objektumokat (tömbök, fizikai és virtuális lemezek, burkolatok és sok más), továbbítjuk őket a Zabbix felfedezésekhez, beolvassuk a paramétereik állapotát, beolvassuk a teljesítménystatisztikát (teljesítményszámlálók), mindezt továbbítjuk a sablonunk megfelelő Zabbix elemein.
A Zabbix sablon, python szkriptek, a tömbtárolók osztályainak és azok tulajdonságainak struktúrája, valamint konfigurációs fájlok példái megtalálhatók .
Forrás: habr.com
