Šajā rakstā mēs nedaudz runāsim par IBM Storwize uzglabāšanas sistēmu un citu uzglabāšanas sistēmu, kas atbalsta CIM/WBEM protokolus, uzraudzību. Nepieciešamība pēc šādas uzraudzības nav iekļauta vienādojumā; mēs to uzskatīsim par aksiomu. Mēs izmantosim Zabbix kā uzraudzības sistēmu.
Jaunākajās Zabbix versijās uzņēmums sāka pievērst daudz lielāku uzmanību veidnēm - sāka parādīties veidnes uzraudzības pakalpojumiem, DBVS, serveru aparatūrai (IMM/iBMC), izmantojot IPMI. Krātuves sistēmas uzraudzība joprojām ir ārpus veidnēm, tāpēc, lai Zabbix integrētu informāciju par krātuves komponentu statusu un veiktspēju, ir jāizmanto pielāgotas veidnes. Es vēršu jūsu uzmanību uz vienu no šīm veidnēm.
Pirmkārt, nedaudz teorijas.
Lai piekļūtu IBM Storwize krātuves sistēmu statusam un statistikai, varat izmantot:
- CIM/WBEM protokoli;
- (atbalsta IBM Storwize, sākot ar programmatūras versiju 8.1.3);
- SNMP Traps (ierobežots slazdu komplekts, nav statistikas);
- Izveidojiet savienojumu, izmantojot SSH, un pēc tam attālināti .
Vairāk par dažādām uzraudzības metodēm interesenti var uzzināt attiecīgajās pārdevēja dokumentācijas sadaļās, kā arī dokumentā .
Izmantosim CIM/WBEM protokolus, kas ļauj iegūt uzglabāšanas sistēmas darbības parametrus bez būtiskām programmatūras izmaiņām dažādām uzglabāšanas sistēmām. CIM/WBEM protokoli darbojas saskaņā ar . Krātuves pārvaldības iniciatīva — specifikācijas pamatā ir atvērtie standarti и , noteica .
WBEM darbojas papildus HTTP protokolam. Izmantojot WBEM, varat strādāt ne tikai ar uzglabāšanas sistēmām, bet arī ar HBA, slēdžiem un lentu bibliotēkām.
Saskaņā ar un SMI ieviešanas galvenā sastāvdaļa ir WBEM serveris, kas apstrādā CIM-XML pieprasījumus no WBEM klientiem (mūsu gadījumā no uzraudzības skriptiem):

CIM ir uz objektu orientēts modelis, kura pamatā ir vienotā modelēšanas valoda (UML).
Pārvaldītie elementi ir definēti kā CIM klases, kurām ir rekvizīti un metodes pārvaldīto datu un funkcionalitātes attēlošanai.
Saskaņā ar , lai piekļūtu krātuves sistēmām, izmantojot CIM/WBEM, var izmantot PyWBEM – Python valodā rakstītu atvērtā koda bibliotēku, kas izstrādātājiem un sistēmu administratoriem nodrošina CIM protokola ieviešanu, lai piekļūtu CIM objektiem un veiktu dažādas darbības ar WBEM serveri, kas darbojas saskaņā ar SMI-S vai citām CIM specifikācijām.
Lai izveidotu savienojumu ar WBEM serveri, mēs izmantojam klases konstruktoru :
conn = pywbem.WBEMConnection(server_uri, (self.login, self.password),
namespace, no_verification=True)
Šis ir virtuāls savienojums, jo CIM-XML/WBEM darbojas virs HTTP, reālais savienojums rodas, kad metodes tiek izsauktas WBEMConnection klases instancē. Saskaņā ar IBM System Storage SAN Volume Controller un Storwize V7000 paraugprakses un veiktspējas vadlīnijām (piemērs C-8, 412. lpp.), mēs izmantosim “root/ibm” kā IBM Storwize krātuves sistēmas CIM nosaukumvietu.
Lūdzu, ņemiet vērā: lai apkopotu statistiku, izmantojot CIM-XML/WBEM protokolu, lietotājs ir jāiekļauj attiecīgajā drošības grupā. Pretējā gadījumā, izpildot WBEM vaicājumus, klases gadījumu atribūtu izvade būs tukša.
Lai piekļūtu krātuves statistikai, lietotājs, kura ietvaros tiek izsaukts konstruktors , jābūt vismaz RestrictedAdmin (pieejams koda_līmenis > 7.8.0) vai administratora tiesībām (nav ieteicams drošības apsvērumu dēļ).
Mēs izveidojam savienojumu ar krātuves sistēmu, izmantojot SSH, un aplūkojam grupu numurus:
> 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
Pievienojiet zabbix lietotāju vēlamajai grupai:
> chuser -usergrp 5 zabbix
Turklāt saskaņā ar IBM System Storage SAN Volume Controller un Storwize V7000 paraugprakses un veiktspējas vadlīnijām (415. lpp.) ir jāiespējo statistikas apkopošana uzglabāšanas sistēmā. Tātad, lai apkopotu statistiku katru minūti:
> startstats -interval 1
Pārbaude:
> lssystem | grep statistics
statistics_status on
statistics_frequency 1
Lai iegūtu visas esošās krātuves klases, ir jāizmanto metode EnumerateClassNames().
Piemērs:
classnames = conn.EnumerateClassNames(namespace='root/ibm', DeepInheritance=True)
for classname in classnames:
print (classname)
Metode tiek izmantota, lai iegūtu uzglabāšanas sistēmas parametru vērtības klase WBEMConnection, atgriežot gadījumu sarakstu .
Piemērs:
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))
Dažām klasēm, kurās ir liels skaits gadījumu, piemēram, IBMTSSVC_StorageVolume, visu gadījumu pilns vaicājums var būt diezgan lēns. Tas var ģenerēt lielu datu apjomu, kas jāsagatavo uzglabāšanas sistēmai, jāpārsūta tīklā un jāapstrādā skriptam. Šādam gadījumam ir metode , kas ļauj iegūt tikai mūs interesējošās klases instances īpašības. Šī metode ietver SQL līdzīgas vaicājuma valodas izmantošanu, vai nu CIM vaicājumu valodu (DMTF:CQL) vai WBEM vaicājumu valodu (WQL), lai meklētu CIM krātuves objektus:
request = 'SELECT Name FROM IBMTSSVC_StorageVolumeStatistics'
objects_perfs_cim = wbem_connection.ExecQuery('DMTF:CQL', request)
Lai noteiktu, kuras klases mums jāiegūst krātuves objektu parametri, izlasiet, piemēram, dokumentāciju .
Tātad, lai iegūtu fizisko disku (Disk Drives) parametrus (nevis veiktspējas skaitītājus), aptaujāsim klase IBMTSSVC_DiskDrive, lai iegūtu Volumes parametrus - klase IBMTSSVC_StorageVolume, lai iegūtu masīva parametrus - klase IBMTSSVC_Array, MDisks parametri - klase IBMTSSVC_BackendVolume utt.
Par veiktspēju jūs varat lasīt (konkrēti - ) un IBM System Storage SAN Volume Controller un Storwize V7000 paraugprakses un veiktspējas vadlīnijas (piemērs C-11, 415. lpp.).
Lai iegūtu sējumu krātuves statistiku, kā parametra ClassName vērtība ir jānorāda IBMTSSVC_StorageVolumeStatistics. Statistikas vākšanai nepieciešamās klases IBMTSSVC_StorageVolumeStatistics rekvizītus var apskatīt .
Veiktspējas analīzei varat izmantot arī klases IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics.
Lai ierakstītu datus uzraudzības sistēmā, mēs izmantosim mehānismu , kas ieviests python modulī . Glabāšanas sistēmu klašu struktūru un to rekvizītus ievietosim vārdnīcā JSON formātā.
Mēs augšupielādējam veidni Zabbix serverī, pārliecināmies, ka pārraudzības serverim ir piekļuve uzglabāšanas sistēmai, izmantojot WEB protokolu (TCP/5989), un ievietojam uzraudzības serverī konfigurācijas failus, noteikšanas un uzraudzības skriptus. Pēc tam pievienojiet plānotājam skripta palaišanu. Rezultātā: mēs atklājam uzglabāšanas objektus (masīvus, fiziskos un virtuālos diskus, korpusus un daudz ko citu), pārsūtām tos uz Zabbix atklājumiem, nolasām to parametru statusu, nolasām veiktspējas statistiku (veiktspējas skaitītājus), pārsūtām to uz atbilstošo Zabbix Mūsu veidnes vienumi.
Zabbix veidni, python skriptus, krātuves klašu struktūru un to rekvizītus, kā arī konfigurācijas failu piemērus. .
Avots: www.habr.com
