В этой статье мы немного поговорим о мониторинге систем хранения данных, поддерживающих протоколы CIM/WBEM, на примере IBM Storwize. Необходимость такого мониторинга не учитывается; будем считать это аксиомой.
В качестве системы мониторинга мы будем использовать Zabbix. В последних версиях Zabbix компания стала гораздо больше внимания уделять шаблонам — стали появляться шаблоны для сервисов мониторинга, СУБД, аппаратного обеспечения Серверов (IMM/iBMC) через IPMI. Мониторинг системы хранения по-прежнему находится за пределами шаблонов из коробки, поэтому для интеграции информации о состоянии и производительности компонентов хранилища в Zabbix необходимо использовать пользовательские шаблоны.
Предлагаю вашему вниманию один из таких шаблонов.
Сначала немного теории.
Для доступа к состоянию и статистике систем хранения IBM Storwize вы можете использовать:
- протоколы CIM/WBEM;
- RESTful API (поддерживается в IBM Storwize, начиная с версии программного обеспечения 8.1.3);
- SNMP Traps (ограниченный набор ловушек, без статистики);
- Подключитесь через SSH, а затем удаленно подходит для неторопливого написания сценариев Bash .
Мы будем использовать протоколы CIM/WBEM, которые позволяют получать параметры работы СХД без существенных изменений программного обеспечения для разных СХД.
Протоколы CIM/WBEM работают в соответствии с Спецификация инициативы по управлению хранилищем (SMI-S) .
Инициатива по управлению хранилищем — спецификация основана на открытых стандартах.
CIM (Общая информационная модель) И WBEM (Управление предприятием через Интернет) , определенный Рабочая группа по распределенному управлению .
WBEM работает поверх протокола HTTP. Через WBEM можно работать не только с системами хранения, но и с HBA, коммутаторами и ленточными библиотеками.
В соответствии с СМИ Архитектура И Определить инфраструктуру , основным компонентом реализации SMI является сервер WBEM, обрабатывающий CIM-XML-запросы от клиентов WBEM (в нашем случае от скриптов мониторинга):
CIM — это объектно-ориентированная модель, основанная на унифицированном языке моделирования (UML).
Управляемые элементы определяются как классы CIM, у которых есть свойства и методы для представления управляемых данных и функций.
В соответствии с www.snia.org/pywbem , для доступа к системам хранения через CIM/WBEM можно использовать PyWBEM — библиотеку с открытым исходным кодом, написанную на Python, которая предоставляет разработчикам и системным администраторам реализацию протокола CIM для доступа к объектам CIM и выполнения различных операций с сервером WBEM, работающим в в соответствии со стандартами SMI-S или другими спецификациями CIM. Для подключения к серверу WBEM мы используем конструктор класса WBEMСоединение :
Это виртуальное соединение, поскольку CIM-XML/WBEM работает поверх HTTP, настоящее соединение возникает при вызове методов экземпляра класса WBEMConnection. В соответствии с IBM System Storage SAN Volume Controller и рекомендациями по передовому опыту и производительности Storwize V7000 (пример C-8, стр.conn = pywbem.WBEMConnection(server_uri, (self.login, self.password), namespace, no_verification=True)
412) мы будем использовать «root/ibm» в качестве пространства имен CIM для системы хранения IBM Storwize. Обратите внимание, что для сбора статистики по протоколу CIM-XML/WBEM необходимо включить пользователя в соответствующую группу безопасности.
В противном случае при выполнении запросов WBEM выходные данные атрибутов экземпляра класса будут пустыми.
.
Для доступа к статистике хранилища пользователь, под которым вызывается конструктор ВБЕМСоединение() , должен иметь как минимум права RestrictedAdmin (доступно для code_level > 7.8.0) или администратора (не рекомендуется по соображениям безопасности).
Подключаемся к СХД по 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)
Метод используется для получения значений параметров системы хранения данных.
Перечислитьэкземпляры() класс 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, полный запрос всех экземпляров может быть довольно медленным.
Он может генерировать большие объемы данных, которые должны быть подготовлены системой хранения, переданы по сети и обработаны скриптом.
Есть способ для такого случая ЭксекЗапрос() , что позволяет нам получить только те свойства экземпляра класса, которые нас интересуют. Этот метод предполагает использование языка запросов, подобного SQL, либо языка запросов CIM (DMTF:CQL), либо языка запросов WBEM (WQL), для запроса объектов хранилища CIM: request = 'SELECT Name FROM IBMTSSVC_StorageVolumeStatistics'
objects_perfs_cim = wbem_connection.ExecQuery('DMTF:CQL', request)
Чтобы определить, из каких классов нам нужно получить параметры объектов хранения, прочтите документацию, например Как системные концепции соотносятся с концепциями CIM .
Итак, для получения параметров (не счетчиков производительности) физических дисков (Disk Drives) будем опрашивать Класс IBMTSSVC_DiskDrive, для получения параметров Томов - Класс IBMTSSVC_StorageVolume, для получения параметров массива - Класс IBMTSSVC_Array, для получения параметров MDisks - Класс IBMTSSVC_BackendVolume и т.д. О производительности вы можете прочитать Функциональные схемы агента Единой информационной модели (конкретно - Подпрофиль производительности блокировки сервера ) и IBM System Storage SAN Volume Controller и Storwize V7000 Best Practices and Performance Guidelines (пример C-11, стр.
415).
Чтобы получить статистику хранения для томов, необходимо указать IBMTSSVC_StorageVolumeStatistics в качестве значения параметра ClassName. Свойства класса IBMTSSVC_StorageVolumeStatistics, необходимые для сбора статистики, можно посмотреть в Статистика узла .
Также для анализа производительности можно использовать классы IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics. Для записи данных в систему мониторинга воспользуемся механизмом ловушки забфикса , реализованный на Python в модуле py-zabbix .
Разместим структуру классов систем хранения и их свойства в словаре в формате JSON. Загружаем шаблон на Zabbix-сервер, убеждаемся, что сервер мониторинга имеет доступ к системе хранения данных по WEB-протоколу (TCP/5989), и размещаем на сервере мониторинга файлы конфигурации, скрипты обнаружения и мониторинга.
Далее добавляем в планировщик запуск скрипта.
В результате: обнаруживаем объекты хранения (массивы, физические и виртуальные диски, корпуса и многое другое), переносим их в Zabbix Discovery, читаем состояние их параметров, читаем статистику производительности (счетчики производительности), передаем все это в соответствующий Zabbix Элементы нашего шаблона.
Шаблон Zabbix, скрипты Python, структуру классов хранения и их свойства, а также примеры файлов конфигурации вы можете найди здесь .
Теги: #python #it инфраструктура #Системное администрирование #Системы хранения данных #zabbix #хранилище #SAN #storwize
-
Положение О Сертификации Фстэк России
19 Oct, 24 -
Желаю Вам Жить На Пожертвования!
19 Oct, 24 -
Что Важно При Запуске Проекта?
19 Oct, 24 -
Секрет Успеха Дизайна Apple...
19 Oct, 24 -
Создайте Кейлоггер Css
19 Oct, 24 -
Ваш Уровень Программирования И Многое Другое
19 Oct, 24