Мониторинг Хранилища С Использованием Протоколов Zabbix, Python И Cim/Wbem.

В этой статье мы немного поговорим о мониторинге систем хранения данных, поддерживающих протоколы CIM/WBEM, на примере IBM Storwize. Необходимость такого мониторинга не учитывается; будем считать это аксиомой.

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

Предлагаю вашему вниманию один из таких шаблонов.

Сначала немного теории.

Для доступа к состоянию и статистике систем хранения IBM Storwize вы можете использовать:

  1. протоколы CIM/WBEM;
  2. RESTful API (поддерживается в IBM Storwize, начиная с версии программного обеспечения 8.1.3);
  3. SNMP Traps (ограниченный набор ловушек, без статистики);
  4. Подключитесь через SSH, а затем удаленно подходит для неторопливого написания сценариев Bash .

Подробнее о различных методах мониторинга желающие могут узнать в соответствующих разделах документации вендора, а также в документе Сценарии IBM Spectrum Virtualize .

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

Протоколы CIM/WBEM работают в соответствии с Спецификация инициативы по управлению хранилищем (SMI-S) .

Инициатива по управлению хранилищем — спецификация основана на открытых стандартах.

CIM (Общая информационная модель) И WBEM (Управление предприятием через Интернет) , определенный Рабочая группа по распределенному управлению .

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

В соответствии с СМИ Архитектура И Определить инфраструктуру , основным компонентом реализации SMI является сервер WBEM, обрабатывающий CIM-XML-запросы от клиентов WBEM (в нашем случае от скриптов мониторинга):

Мониторинг хранилища с использованием протоколов Zabbix, Python и CIM/WBEM.

CIM — это объектно-ориентированная модель, основанная на унифицированном языке моделирования (UML).

Управляемые элементы определяются как классы CIM, у которых есть свойства и методы для представления управляемых данных и функций.

В соответствии с www.snia.org/pywbem , для доступа к системам хранения через CIM/WBEM можно использовать PyWBEM — библиотеку с открытым исходным кодом, написанную на Python, которая предоставляет разработчикам и системным администраторам реализацию протокола CIM для доступа к объектам CIM и выполнения различных операций с сервером WBEM, работающим в в соответствии со стандартами SMI-S или другими спецификациями CIM. Для подключения к серверу WBEM мы используем конструктор класса 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 и рекомендациями по передовому опыту и производительности Storwize V7000 (пример C-8, стр.

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

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.