Zabbix + HP RAID + hpacucli + температура HDD
Как в zabbix добавить мониторинг температуры HDD в рэйд массиве на HP?
Возник вопрос, как же отследить температуру HDD в рейде на серверах HP?
Некоторые скажут, что есть iLO v4 которая через SNMP все это показывает, некоторые найдут другой вариант, а мы пошли так сказать изобретая небольшой велосипед, т.к. у нас было только iLO v3 которая не умеет по SNMP показывать температуру ну и вообще, нужно же было как то себя развлекать.
Приступим ....
Сервер у нас на Win2012 R2, но это роли не играет, играет роль как собрать температуру хардов... У HP есть своя утилитка hpacucli, которая работает с рейд контроллером и имеет как консольную версию так и UI.
В написании красивых скриптов в CMD мы не особо сильны, да и в этой задаче не особо хотелось (может кто-то посоветует более симпатичный вариант), но на быструю руку мы состряпали вот такой bat'ник:
@echo off
SetLocal EnableExtensions EnableDelayedExpansion
"C:\Program Files\Compaq\Hpacucli\Bin\hpacucli.exe" ctrl slot=0 pd 1I:1:1 show | findstr /C:"Current Temperature (C): " > tmp.txt
FOR /F "eol=; tokens=4 delims=, " %%i in (tmp.txt) do C:\zabbix\zabbix_sender.exe -z zabbix.local -s hyper-v3 -k HddTemp_1 -o %%i
Т.к. у нас дисков на сервере шесть, то и таких строк (по две) будет шесть групп для каждого диска.
Теперь, что тут у нас происходит:
ЧАСТЬ 1
ctrl slot=0 pd 1I:1:1 show - выбираем слот и "айди" диска по которому нужно получить полную информацию в т.ч. и температуру
findstr /C:"Current Temperature (C): - ищем во всем этом добре только строчку с текущей температурой
tmp.txt - пишем строчку во временный файл
FOR /F "eol=; tokens=4 delims=, " %%i in (tmp.txt) - парсим временный файл и достаем только число (т.е. текущее значение температуры)
C:\zabbix\zabbix_sender.exe -z zabbix.local - запускаем zabbix_sender (его можно скачать на офф. сайте забикса) с параметрами:
-s hyper-v3 - имя узла в который передаем значение
-k HddTemp_1 - имя (название) ключа в который передаем значение
-o %%i - и само значение температуры
ЧАСТЬ 2
В настройках заббикс агента на сервере с которого получаем температуру, добавляем следующую строчку:
UserParameter=HddTemp,C:\HDDtemper\HDD_temp.bat - тем самым сообщая, что в переменную HddTemp нужно положить результат bat скрипта который будет выболнен (зачем это сделано и весь этот смысл, вы поймете чуть позже)
ЧАСТЬ 3
Настраиваем шаблон в самом заббиксе.
1. Создаем шаблон
2. Добавляем в него элемент данных как показано ниже
Тут мы указали, что будем получать по ключу HddTemp_1 результат от zabbix_sender'a.
Тип данных разумеется десятичный, т.к. мы получаем число
3. И самое интересное... В части 2 мы указали юзер параметры которые должны запускать скрипт и передавать результат от него, но мы сделали хитрее. Чтобы не добавлять выполнение скрипта в планировщик на самом сервере с которого мы получаем температуру, запуск скрипта мы будем провоцировать из самого заббикса.
Добавляем еще один элемент данных вот так:
Тем самым, мы просто запускаем скрипт который запускает заббик сендер и передает температуру на заббикс сервер. Нам показалось, что это будет интересным решением т.к. не требует добавление задания на самом сервере с которого получаем показатели.
Удачи...
Свежие комментарии