НОВОСТИ Мониторинг СХД IBM Storwize при помощи Zabbix

NewsBot
Оффлайн

NewsBot

.
.
Регистрация
21.07.20
Сообщения
40.408
Реакции
1
Репутация
0
В данной статье мы немного поговорим о мониторинге СХД IBM Storwize и других СХД, поддерживающих протоколы CIM/WBEM. Необходимость такого мониторинга оставлена за скобками, будем считать это аксиомой. В качестве системы мониторинга будем использовать Zabbix.

В последних версиях Zabbix компания стала уделять шаблонам гораздо больше внимания — стали появляться шаблоны для мониторинга сервисов, СУБД, Servers hardware (IMM/iBMC) через IPMI. Мониторинг СХД пока остаётся вне шаблонов из коробки, поэтому для интеграции в Zabbix информации о статусе и производительности компонентов СХД нужно использовать кастомные шаблоны. Один из таких шаблонов я предлагаю вашему вниманию.


Сначала немного теории.
Для доступа к статусу и статистике СХД IBM Storwize можно использовать:
1) Протоколы CIM/WBEM;
2) (в IBM Storwize поддерживается, начиная с ПО версии 8.1.3);
3) SNMP Traps (ограниченный набор trap'ов, нет статистики);
4) Подключение по SSH с последующим удаленным .

Интересующиеся могут подробнее ознакомиться с различными методами мониторинга в соответствующих разделах вендорской документации, а также в документе .

Мы будем использовать протоколы CIM/WBEM, позволяющие получать параметры работы СХД без значительных изменений ПО для различных СХД. Протоколы CIM/WBEM работают в соответствии со . Storage Management Initiative – Specification основана на открытых стандартах и , определяемых .

WBEM работает поверх протокола HTTP. Через WBEM можно работать не только с СХД, но и с HBA, коммутаторами и ленточными библиотеками.

Согласно и , основным компонентом реализации SMI является WBEM-сервер, обрабатывающий CIM-XML запросы от WBEM-клиентов (в нашем случае — от скриптов мониторинга)
0106a6b7483c83a578b165a1a3aad9c2.jpg

CIM — объектно-ориентированная модель, основанная на Unified Modeling Language (UML). Управляемые элементы определяются в виде CIM-классов, у которых есть свойства и методы для представления управляемых данных и функций.

Согласно , для доступа к СХД через CIM/WBEM можно использовать PyWBEM — open source библиотеку, написанную на Python, и обеспечивающую разработчикам и системным администраторам реализацию протокола CIM для доступа к CIM-объектам и проведения различных операций с WBEM-сервером, работающим согласно SMI-S или другим CIM-спецификациям.
Для соединения с WBEM-сервером используем конструктор класса :

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


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

Обратите внимание, что для сбора статистики по протоколу CIM-XML/WBEM, необходимо включить пользователя в соответствующую группу безопасности. В противном случае при выполнении WBEM-запросов, вывод атрибутов экземпляра класса будет пустым.

Для доступа к статистике СХД пользователь, под которым осуществляется вызов конструктора , должен обладать правами по крайней мере 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 and 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)



Для получения значений параметров СХД предназначен метод класса WBEMConnection, возвращающий список экземпляров .
Пример:

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, полный запрос всех экземпляров может быть довольно медленным. Он может генерировать большие объемы данных, которые должны быть подготовлены СХД, переданы по сети и обработаны скриптом. На такой случай есть метод , позволяющий получить только интересующие нас свойства экземпляра класса. Этот метод предполагает использование языка запросов, подобного 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)



Чтобы определить, какие классы нам нужны для получения параметров объектов СХД, читаем документацию, например .
Так, для получения параметров (не счётчиков производительности) физических дисков (Disk Drives) будем опрашивать Class IBMTSSVC_DiskDrive, для получения параметров Volumes — Class IBMTSSVC_StorageVolume, для получения параметров массивов — Class IBMTSSVC_Array, для получения параметров MDisks — Class IBMTSSVC_BackendVolume и т.д.

По производительности можно почитать (конкретно — ) и IBM System Storage SAN Volume Controller and Storwize V7000 Best Practices and Performance Guidelines (Example C-11, стр. 415).
Для получения статистики СХД по Volumes, необходимо в качестве значения параметра ClassName указать IBMTSSVC_StorageVolumeStatistics. Необходимые для сбора статистики свойства класса IBMTSSVC_StorageVolumeStatistics можно посмотреть в .
Также, для анализа производительности можно использовать классы IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics.

Для записи данных в систему мониторинга будем использовать механизм , реализованный на python в модуле . Структуру классов СХД и их свойств расположим в словаре в формате JSON.

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

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