Маніторынг СГД IBM Storwize пры дапамозе Zabbix

У дадзеным артыкуле мы крыху пагаворым аб маніторынгу СХД IBM Storwize і іншых СХД, якія падтрымліваюць пратаколы CIM / WBEM. Неабходнасць такога маніторынгу пакінута за дужкамі, будзем лічыць гэта аксіёмай. У якасці сістэмы маніторынгу будзем выкарыстоўваць Zabbix.

У апошніх версіях Zabbix кампанія стала надаваць шаблонам значна больш увагі – сталі з'яўляцца шаблоны для маніторынгу сэрвісаў, СКБД, Servers hardware (IMM/iBMC) праз IPMI. Маніторынг СХД пакуль застаецца па-за шаблонамі са скрынкі, таму для інтэграцыі ў Zabbix інфармацыі аб статусе і прадукцыйнасці кампанентаў СХД трэба выкарыстоўваць кастомныя шаблоны. Адзін з такіх шаблонаў я прапаную вашай увазе.

Спачатку крыху тэорыі.

Для доступу да статуту і статыстыцы СХД IBM Storwize можна выкарыстоўваць:

  1. Пратаколы CIM/WBEM;
  2. RESTful API (у IBM Storwize падтрымліваецца, пачынальна з ПА версіі 8.1.3);
  3. SNMP Traps (абмежаваны набор trap'аў, няма статыстыкі);
  4. Падключэнне па SSH з наступным выдаленым падыходзіць для марудлівага bash-скрыптынгу.

Якія цікавяцца могуць падрабязней азнаёміцца ​​з рознымі метадамі маніторынгу ў адпаведных раздзелах вендорскай дакументацыі, а таксама ў дакуменце IBM Spectrum Virtualize scripting.

Мы будзем выкарыстоўваць пратаколы CIM/WBEM, якія дазваляюць атрымліваць параметры працы СХД без значных змен ПЗ для розных СХД. Пратаколы CIM/WBEM працуюць у адпаведнасці са Спецыфікацыя Ініцыятывы па кіраванні сховішчам (SMI-S). Storage Management Initiative - Specification заснавана на адкрытых стандартах CIM (Агульная інфармацыйная мадэль) и WBEM (Web-Based Enterprise Management), вызначаных Аператыўная група размеркаванага кіравання.

WBEM працуе па-над пратаколам HTTP. Праз WBEM можна працаваць не толькі з СГД, але і з HBA, камутатарамі і істужачнымі бібліятэкамі.

Згодна з SMI Architecture и Determine Infrastructure, Асноўным кампанентам рэалізацыі SMI з'яўляецца WBEM-сервер, які апрацоўвае CIM-XML запыты ад WBEM-кліентаў (у нашым выпадку – ад скрыптоў маніторынгу):

Маніторынг СГД IBM Storwize пры дапамозе Zabbix

CIM – аб'ектна-арыентаваная мадэль, заснаваная на Unified Modeling Language (UML).
Кіраваныя элементы вызначаюцца ў выглядзе CIM-класаў, у якіх ёсць уласцівасці і метады для падання кіраваных дадзеных і функцый.

Згодна з www.snia.org/pywbem, для доступу да СХД праз CIM/WBEM можна выкарыстоўваць PyWBEM — open source бібліятэку, напісаную на Python, і якая забяспечвае распрацоўнікам і сістэмным адміністратарам рэалізацыю пратаколу CIM для доступу да CIM-аб'ектаў і правядзенні розных аперацый з WBEM-серверам, якія працуюць паводле SMI-S ці іншым CIM-спецыфікацыям.

Для злучэння з WBEM-серверам выкарыстоўваем канструктар класа WBEMConnection:

conn = pywbem.WBEMConnection(server_uri, (self.login, self.password),
            namespace, no_verification=True)

Гэта віртуальнае злучэнне, паколькі CIM-XML/WBEM працуе па-над HTTP, рэальнае злучэнне адбываецца ў момант выкліку метадаў для асобніка класа WBEMConnection. У адпаведнасці з IBM System Storage SAN Volume Controller і Storwize V7000 Best Practices and Performance Guidelines (Example C-8, стар. 412), у якасці CIM namespace для СХД IBM Storwize будзем выкарыстоўваць "root/ibm".

Звярніце ўвагу, што для збору статыстыкі па пратаколе CIM-XML/WBEM неабходна ўключыць карыстальніка ў адпаведную групу бяспекі. У адваротным выпадку пры выкананні WBEM-запытаў, вывад атрыбутаў экзэмпляра класа будзе пустым..

Для доступу да статыстыкі СГД карыстальнік, пад якім ажыццяўляецца выклік канструктара WBEMConnection(), павінен валодаць правамі па меншай меры RestrictedAdmin (ёсць для code_level > 7.8.0) або Administrator (не рэкамендую па меркаваннях бяспекі).

Падлучаемся да СХД праз SSH і глядзім нумары груп:

> 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    

Дадаем карыстальніка zabbix у патрэбную групу:

> chuser -usergrp 5 zabbix

Акрамя таго, у адпаведнасці з IBM System Storage SAN Volume Controller і Storwize V7000 Best Practices and Performance Guidelines (стар. 415) трэба ўключыць збор статыстыкі на СГД. Так, для збору статыстыкі кожную хвіліну:

> startstats -interval 1 

правяраем:

> lssystem | grep statistics
statistics_status on
statistics_frequency 1

Каб атрымаць усе існуючыя класы СГД, неабходна выкарыстоўваць метад EnumerateClassNames().

Прыклад:

classnames = conn.EnumerateClassNames(namespace='root/ibm', DeepInheritance=True)
for classname in classnames:
     print (classname)

Для атрымання значэнняў параметраў СГД прызначаны метад EnumerateInstances() класа WBEMConnection, які вяртае спіс асобнікаў CIMInstance().

Прыклад:

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))

Для некаторых класаў, утрымоўвальных мноства асобнікаў, такіх як IBMTSSVC_StorageVolume, поўны запыт усіх асобнікаў можа быць даволі павольным. Ён можа генераваць вялікія аб'ёмы дадзеных, якія павінны быць падрыхтаваны СГД, перададзены па сетцы і апрацаваны скрыптам. На такі выпадак ёсць метад ExecQuery(), які дазваляе атрымаць толькі якія цікавяць нас уласцівасці асобніка класа. Гэты метад мяркуе выкарыстанне мовы запытаў, падобнага SQL - альбо CIM Query Language (DMTF: CQL), альбо WBEM Query Language (WQL), для апытання CIM-аб'ектаў СХД:

request = 'SELECT Name FROM IBMTSSVC_StorageVolumeStatistics'
objects_perfs_cim = wbem_connection.ExecQuery('DMTF:CQL', request)

Каб вызначыць, якія класы нам патрэбны для атрымання параметраў аб'ектаў СХД, чытаем дакументацыю, напрыклад How system concepts map to CIM concepts.

Так, для атрымання параметраў (не лічыльнікаў прадукцыйнасці) фізічных дыскаў (Disk Drives) будзем апытваць Class IBMTSSVC_DiskDrive, для атрымання параметраў Volumes – Class IBMTSSVC_StorageVolume, для атрымання параметраў масіваў – Class IBMTSSVC_Array, для атрымання параметраў MDisks – BackVTS.

Па прадукцыйнасці можна пачытаць Functional diagrams of Common Information Model agent (канкрэтна Block server performance subprofile) і IBM System Storage SAN Volume Controller і Storwize V7000 Best Practices and Performance Guidelines (Example C-11, стар. 415).

Для атрымання статыстыкі СХД па Volumes, неабходна ў якасці значэння параметра ClassName паказаць IBMTSSVC_StorageVolumeStatistics. Неабходныя для збору статыстыкі ўласцівасці класа IBMTSSVC_StorageVolumeStatistics можна паглядзець у Node Statistics.

Таксама для аналізу прадукцыйнасці можна выкарыстоўваць класы IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics.

Для запісу дадзеных у сістэму маніторынгу будзем выкарыстоўваць механізм zabbix traps, рэалізаваны на python у модулі py-zabbix. Структуру класаў СХД і іх уласцівасцяў размесцім у слоўніку ў фармаце JSON.

Загружаем шаблон на сервер Zabbix, пераконваемся, што з сервера маніторынгу ёсць доступ да СХД па пратаколе WEB (TCP/5989), размяшчаем канфігурацыйныя файлы, скрыпты выяўлення і маніторынгу на серверы маніторынгу. Далей дадаем у планавальнік запуск скрыптоў. У выніку: мы выяўляем аб'екты СХД (масівы, фізічныя і віртуальныя дыскі, enclosures і шматлікае іншае), перадаем іх у Zabbix discoveries, счытваем статут іх параметраў, счытваем статыстыку прадукцыйнасці (perfomance counters), перадаем усё гэта ў якія адпавядаюць Zabbix Items.

Шаблон Zabbix, python-скрыпты, структуру класаў СХД і іх уласцівасцяў, а таксама прыклады канфігурацыйных файлаў, можна знайсці тут.

Крыніца: habr.com

Дадаць каментар