IBM Storwize tárolók monitorozása Zabbix segítségével

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:

  1. CIM/WBEM protokollok;
  2. RESTful API (az IBM Storwize esetében a 8.1.3 verziótól kezdődően támogatott);
  3. SNMP Traps (korlátozott számú trap, statisztika nélkül);
  4. SSH kapcsolaton keresztül, majd távoli alkalmas lassú bash-skriptekhez.

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 IBM Spectrum Virtualize scripting.

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 Storage Management Initiative Specification (SMI-S). A Storage Management Initiative – Specification nyílt standardokon alapul CIM (Common Information Model) és WBEM (Web-Based Enterprise Management), amelyeket a következő szervezet határoz meg: Distributed Management Task Force.

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 SMI Architecture és Determine Infrastructure, 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):

IBM Storwize tárolók monitorozása Zabbix segítségével

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 www.snia.org/pywbem, 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, WBEMConnection:

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, WBEMConnection(), 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 EnumerateInstances() metódus a WBEMConnection osztályban, amely 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))

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 ExecQuery(), 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 Hogyan térnek át a rendszerkoncepciók a CIM-koncepciókra.

Í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 A Common Information Model ügynök funkcionális diagramjai (konkrétan — Block server performance subprofile) é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 Node Statistics.

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 zabbix traps, amely pythonban valósul meg a py-zabbixmodulban. 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 itt.

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster