Zabbix: мониторинг дисковых хранилищ DELL MD36XX | OTUS
Запланируйте обучение с выгодой в Otus!
-15% на все курсы до 22.11 Забрать скидку! →
Выбрать курс

Zabbix: мониторинг дисковых хранилищ DELL MD36XX

DevOps_Deep_10.07_SITE.png

Задача

Необходимо настроить мониторинг нагрузки на дисковые хранилища DELL MD36XX. Есть проблема – полки не умеют отдавать данные по snmp. Кстати, подобные проблемы также встречаются у хранилищ IBM, HP и других вендоров.

Окружение

Сами вендоры предоставляют клиентское ПО. Так называемое StorageManager's. Некоторое из них только под Windows, но в последнее время появилось и под Linux. В моем случае ПО установилось под Linux и имеет в своём составе консольную утилиту SMcli. С помощью SMcli можно снимать статистику в файл:

SMcli -n StorageName -S -quick -c "save storageArray performanceStats file=\\"/var/log/md36xx.stat\\";"

И выглядит она следующим образом

"Performance Monitor Statistics for Storage Array: StorageName - Date/Time: 1/17/18 9:37:04 PM - Polling interval in seconds: 5"

"Objects","Total IOs","Read %","Primary Read Cache Hit %","Primary Write Cache Hit %","SSD Read Cache Hit %","Current MBs/sec","Maximum MBs/sec","Current IOs/sec","Ma
ximum IOs/sec","Minimum IOs/sec","Average IOs/sec","Minimum MBs/sec","Average MBs/sec","Current IO Latency","Maximum IO Latency","Minimum IO Latency","Average IO Late
ncy"

"Capture Iteration: 1","","","","","","","","","","","","","","","","",""
"Date/Time: 1/17/18 9:37:05 PM","","","","","","","","","","","","","","","","",""
"Storage Array StorageName ","6396.0","52.0","64.6","100.0","0.0","31.2","31.2","1279.0","1279.0","1279.0","1279.0","31.2","31.2","-","-","-","-"
"RAID Controller Module 0","4043.0","47.3","55.3","100.0","0.0","27.3","27.3","808.0","808.0","808.0","808.0","27.3","27.3","-","-","-","-"
"RAID Controller Module 1","2353.0","60.0","77.3","100.0","0.0","3.9","3.9","470.0","470.0","470.0","470.0","3.9","3.9","-","-","-","-"
"Disk Pool Disk_Pool_1","5181.0","59.6","69.3","100.0","0.0","29.1","29.1","1036.0","1036.0","1036.0","1036.0","29.1","29.1","-","-","-","-"
"Disk Pool Disk_Pool_vps","1215.0","19.4","3.8","100.0","0.0","2.1","2.1","243.0","243.0","243.0","243.0","2.1","2.1","-","-","-","-"
"Virtual Disk VPS1","645.0","1.6","30.0","100.0","0.0","0.9","0.9","129.0","129.0","129.0","129.0","0.9","0.9","1.7","1.7","1.7","1.7"
...

Варианты решений

Данную информацию можно распарсить и отправить в zabbix, причем для отправки есть несколько вариантов

Zabbix agent и UserParameter, в котором можно расписать каждый из интересуемых параметров, например:

UserParameter = dell.md.discovery, /path/script_discovery
UserParameter = dell.md.totalio[*], /path/script2 $1
UserParameter = dell.md.currmb[*], /path/script3 $1

Zabbix_sender, который даёт возможность одним вызовом скрипта отправить все параметры разом. Именно этот вариант я и выбрал.

Настройки в zabbix

В zabbix необходимо сконфигурировать новый хост и создать в нем discover rule

dicovery.jpg

Прописать в нём фильтр: discovery2.jpg

И добавить item prototypes item_proto.png

Тут детальнее, как именно прописывается прототип: item_proto2.png

Отсылка в Zabbix

Отсылку данных можно производить через zabbix_sender -i <key_value_file>

Формат файла:

HOST key value

Причём в качестве value можно передавать json для discovery в формате:

{ 'data' :[
               {'{#MDDEV}': 'drive1'},
               {'{#MDDEV}': 'drive1'},
             ]
}

Где {#MDDEV} – макрос через которые мы обнаруживаем имена наших устройств/дисков, с которых собираемся снимать статистику.

Итого алгоритм действий следующий:

– снимаем статистику через SMcli, сохраняем в файл; – парсим полученный файл; – генерим файл для zabbix_sender.

Всё это можно реализовать bash-скриптом. Но мне проще всего показалось реализовать один скрипт на Python, который потом будет вызываться из крона раз в минуту. Трудности возникли только с модулем отсылки в zabbix. Он устанавливался и под 2.7 и под 3.6, но запустился только под 3.6.

Cкрипт можно взять в GitHub

Есть вопрос? Напишите в комментариях!

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
3 комментария
2

Отлично, вот и пример использования пандас в продакшн :)

У меня пара предложений по скрипту: 1. Я бы вынес все пути к файлам в аргументы к скрипту и обернул бы код в пару функций, потому что, вдруг, я захочу импортировать функционал в другое место. 2. Шебанг. Я бы не привязывался жестко к пути интерпретатора питона, на другой системе он может быть другим, а что если если там нет 3.6, но есть 3.5. Вместо этого я бы указывал в кроне чем исполнить скрипт. 3. requirements.txt. В how to run они есть, а среди файлов нет, добавить бы :)

3

принято! Выйду на работу, подправлю

0

заббикс-заббикс))

Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто
Черная пятница в Otus! ⚡️
Скидка 15% на все курсы до 22.11 →