Строим централизованную систему удаленной перезагрузки серверов (UniPing-RS232 + Zabbix)

Строим централизованную систему удаленной перезагрузки серверов (UniPing-RS232 + Zabbix)

Я работаю старшим системным администратором в одной, довольно крупной, компании. И как водится - возникают ситуации, когда сервера требуют жесткой перезагрузки. Ситуации такого рода возникают не часто, но как гласит один из законов Мерфи - "Даже если непpиятность не может случиться, она случается"... и как правило случается на выходные дни :)

Дабы лишний раз обезопасить свои нервы и время - было решено сваять систему, которая бы позволила осуществить режим "жесткой" перезагрузки любого из серверов.
Про устройство UniPing слышал краем уха на различных форумах, но сам никогда с ним не сталкивался. Почитав различные доки и пообщавшись с руководством - удалось приобрести данный девайс за счёт бюджета ИТ-отдела :)

Оплатив счет и прождав неделю, получил долгожданную посылку и начал непосредственное знакомство с прибором.
Итак что прибыло ко мне в руки:

- Прибор UniPing-RS232
- Расширительная плата NetPing Relay board
- Термодатчик TS-1


Вкратце расскажу что из себя представляют данные устройства:
- Сам прибор(UniPing), позволяет подключать к себе огромное количество различных датчиков и плат расширения. Управление возможно по WEB-интерфейсу или при помощи SNMP.
- NetPing Relay board - плата с 16-тью реле, для управления внешними устройствами. 
- Термодатчик TS-1 - термодатчик, он и в Африке термодатчик :)

Теперь по порядку, что я хотел сделать и что в итоге у меня вышло.
- Органично интегрировать оборудование в серверное помещение.
- Сделать удобную графическую систему перезапуска серверов.
- Привязать показания термодатчика к уже поднятому ранее серверу Zabbix

Начнем с того, что плата RelayBoard поставляется без какого-либо бокса, и ставить ее в таком виде в серверную просто кощунство. Значит надо сделать для нее кейс. Сказано - сделано :)
Под руку попалась коробка из под DVD-дисков от HP. Несколько минут времени и у меня получилось вот что:



Подумав еще немного, понял что не красиво будет от коммуникационной стойки кидать к каждому серверу пару проводков. Под рукой оказалась пара розеток от RJ-45 =)





Теперь, использую витую, пару можно без проблем подключить нужное количество устройств.

Следующим шагом было подключение термодатчика. Т.к. выход для подключения датчиков, был занят слотом для подключения платы расширения, то появился вопрос - куда втыкать датчик?! :) Немного подоставав службу техподдержки (netping.ru) своими глупыми вопросами, понял, что можно датчик подключить параллельно разъему, что и было аккуратно сделано.

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



А вот дальше начались небольшие мытарства по поводу SNMP запросов. Просто значения OIDов явно не указаны в инструкциях, вот и пришлось немного покопаться, чтоб их вытянуть :)
OID для управления первым реле - 1.3.6.1.4.1.25728.8900.1.1.3.1
OID для управления первым реле - 1.3.6.1.4.1.25728.8900.1.1.3.2 и т.д.

Сам SNMP запрос будет выглядеть следующим образом:
snmpset.exe -v1 1 -c switch IP_АДРЕС_Устройства 1.3.6.1.4.1.25728.8900.1.1.3.1 i 1 

Таким образом .bat файл для ребута сервера будет выглядеть так:
snmpset.exe -v1 1 -c switch IP_АДРЕС_Устройства 1.3.6.1.4.1.25728.8900.1.1.3.1 i 1 
timeout 1
snmpset.exe -v1 1 -c switch IP_АДРЕС_Устройства 1.3.6.1.4.1.25728.8900.1.1.3.1 i 0

Но писать .bat файлы для каждого сервера - это не очень удобно. А раз у нас уже есть Zabbix, то его и будем использовать :)
В Zabbix есть очень полезная вещь, такая как Карта сети. У меня она выглдит таким вот образом:



В свойствах каждого объекта есть замечательная вкладка "Карта сети URL", которая позволяет при нажатии открывать ранее заданную веб-страницу. А значит мне никто не запрещает написать для каждого сервера свой PHP код и не подсунуть его Zabbix =)
Код выглядит следующим образом:

      exec(''snmpset -v 1 -c SWITCH IP_АДРЕС_Устройства 1.3.6.1.4.1.25728.8900.1.1.3.1 i 1'');
header(''Refresh: 2; URL=http://zabbix/zabbix/maps.php'');
echo''Server is shooting down'';
exec(''snmpset -v 1 -c SWITCH IP_АДРЕС_Устройства 1.3.6.1.4.1.25728.8900.1.1.3.1 i 0'');
exit;
?>
     
В результате исполнения кода - происходит перезагрузка нужного мне сервера, а процесс его загрузки и старта всех сервисов я могу мониторить не отходя от кассы - в Zabbix =)

P.S.:
- я предлагал руководству построить WatchDog систему автоматического перезапуска - но руководство испугалось :)
- хочу выразить огромную признательность службе техподдержки компании Алентис Электроникс (www.netping.ru
- с удовольствием выслушаю все вопросы, комментарии и предложения

P.P.S.:
- Устройство UniPing и Zabbix открывают массу различных возможностей применения. 
В принципе, при желании, можно построить свой «умный дом».
Заббикс позволяет настраивать систему триггеров, а юнипинг «рулить» различными устройствами. Скажем – при входе в дом, срабатывает датчик открытия – шлется сигнал по SNMP на заббикс и он через 5 секунд замыкает 16 реле, на котором висит диммер в прихожей и постепенно зажигается свет =) Так можно настроить что угодно, и система будет отличаться гибкостью настройки.
Автор статьи - d_gorelkin, опубликовал статью 20 сентября 2011 года.