ИБП с сетевым управлением: алерт приходит до того, как сервер упал
Подключили ИБП по SNMP к мониторингу - теперь остаток автономной работы виден на дашборде, а корректное гашение серверов настроено заранее.
ИБП с сетевым управлением и SNMP приходят в серверные
Долгое время схема работы с ИБП в серверных выглядела так: устройство стоит, мигает лампочкой, и о нём вспоминают только когда свет уже пропал и сервер упал. Иногда вспоминали раньше - когда ИБП начинал пищать. Но если серверная не рядом, или пищит ночью, или просто никто не обратил внимания - узнавали по факту падения.
Мы давно знали, что ИБП нужен не только для красивой картинки, а конкретно для того, чтобы не терять данные при провалах питания. Но знать и видеть - разные вещи. Несколько месяцев назад один клиент потерял базу: ИБП держал нагрузку дольше, чем мы думали, батарея разрядилась без предупреждения, сервер упал грязно. Батарее было три с половиной года, и никто не проверял её реальную ёмкость.
После этого случая разговор об ИБП с сетевым управлением стал конкретным.
Что даёт сетевое управление
Современные ИБП корпоративного класса - APC Smart-UPS, Eaton Powerware - умеют торчать в сети как нормальное сетевое устройство. Карта управления вставляется в слот, получает IP-адрес, и дальше с ней можно работать по SNMP, HTTP, а иногда и Telnet.
Из этого получается несколько вещей:
Метрики в реальном времени. Входное напряжение, выходная нагрузка в процентах и ваттах, температура, состояние батареи, расчётное время автономной работы при текущей нагрузке. Всё это читается по SNMP и попадает в мониторинг.
Алерты до события. Как только питание пропадает - SNMP-ловушка уходит в мониторинг немедленно. Не через пять минут, не когда кто-то войдёт в комнату - сразу. Дальше идёт отсчёт оставшегося времени, и если через N минут питание не восстановилось - запускается корректное гашение серверов.
История. Сколько раз пропадало питание, как долго, насколько просела батарея. Без этого ты не знаешь, насколько реально нагружен ИБП и в каком состоянии батарея. С этим - видишь тренд деградации.
Как интегрировали с Nagios
У нас к тому моменту уже работал Nagios с нормальными алертами, так что вопрос был не "строить ли мониторинг", а "добавить ли туда ИБП". Добавили через стандартные SNMP-проверки - check_snmp из пакета nagios-plugins читает нужные OID с карты управления.
Настроили несколько проверок:
Статус питания - нормальное или от батареи. При переходе на батарею - алерт Critical немедленно.
Заряд батареи - ниже 50% Warning, ниже 25% Critical. Не самый частый алерт, но важный: показывает, что батарея деградирует и не набирает полный заряд.
Расчётное время автономии - ниже 10 минут Warning. Если нагрузка выросла или батарея просела, это заметно заранее, а не в момент отключения.
Температура - у некоторых моделей карта отдаёт температуру в серверной. Бесплатный термодатчик.
На дашборде - один виджет с текущим состоянием всех ИБП: зелёный, жёлтый или красный. Остаток автономной работы виден числом. Когда заходишь утром - секунда на проверку, что всё в порядке.
Корректное гашение - отдельная задача
Алерт это хорошо, но если питание не восстановилось и батарея садится - нужно успеть остановить серверы правильно. APC для этого использует агент PowerChute Network Shutdown, который ставится на каждый сервер и слушает команды от карты управления. Eaton у некоторых клиентов решается схожим образом.
Схема работает так: питание пропало, ИБП переключился на батарею, карта управления ждёт настроенный таймаут, потом рассылает всем агентам команду на shutdown. Серверы закрывают файловые системы, гасят службы, завершают работу нормально. ИБП ждёт завершения и только потом снимает напряжение.
Настройка таймаутов - отдельная история. Нужно понимать, сколько реально держит батарея при текущей нагрузке, и закладывать запас на само гашение. Не пять минут для десятка серверов - это мало. Считали под каждого клиента отдельно.
Важный момент: агент должен работать на каждой машине, которую надо корректно погасить. Виртуальные машины это тоже касается - гипервизор получает команду и гасит гостей последовательно. На VMware ESX это настраивается отдельно.
Что показала первая неделя
На одном из объектов карта сразу показала расчётное время автономии в 8 минут при полной нагрузке. Паспортное значение для той же батареи - 20 минут. Батарея деградировала, мы этого не знали, клиент не знал. Если бы питание пропало на ночь - 8 минут не хватило бы ни на что. Батарею заменили до того, как она подвела.
На другом объекте выяснилось, что ИБП нагружен на 85% - почти в упор. При такой нагрузке расчётное время автономии стремительно падает. Разговор с клиентом про расширение питания состоялся не после аварии, а до.
Вот за это и ценится управляемая инфраструктура - не за то, что быстро чинят, а за то, что некоторые проблемы не доходят до стадии "чинить".
- ИБП и грязное питание: почему сервер живёт на честном слове · 12 сентября 2000
- Nagios: алерты, а не графики · 21 февраля 2005