Сервер 1С завис, ОС перестала отвечать, а обычный мониторинг показывает только пропавший узел. Причина пока неизвестна: отключилось питание, остановился вентилятор или сработала защита от перегрева.

Контроллер BMC работает отдельно от ОС. Поэтому IPMI продолжает отдавать аппаратные метрики, когда сервер выключен, завис или ещё не загрузился. Связка ipmi_exporter → Prometheus → Grafana → Alertmanager помогает узнать причину до поездки в серверную.

IPMI следит за железом, а не за 1С

IPMI получает данные от BMC: температуру, обороты вентиляторов, напряжение, питание и аппаратные события. Работа Linux, PostgreSQL и процессов 1С в этот контур не входит.

Эти уровни дополняют друг друга. IPMI показывает состояние сервера как устройства. Мониторинг ОС и приложений отвечает за память, дисковую нагрузку, сеансы, блокировки и процессы rphost.

Что произошлоГде искать признакМетрика
Prometheus не получил данные от BMCДоступность сборщикаipmi_up
Сервер выключенСостояние питания шассиipmi_chassis_power_state
Вентилятор перешёл в аварийное состояниеСостояние и обороты вентилятораipmi_fan_speed_state, ipmi_fan_speed_rpm
BMC сообщил о перегревеСостояние датчика температурыipmi_temperature_state
Журнал аппаратных событий заполняетсяСвободное место в SELipmi_sel_free_space_bytes
Нужно увидеть текущее потреблениеДанные DCMIipmi_dcmi_power_consumption_current_watts

Вывод: IPMI отвечает за состояние железа. Зависание rphost ищите на уровне служб и рабочих процессов кластера.

Для Linux, PostgreSQL и серверной части 1С нужен отдельный маршрут проверки. Его можно построить по метрикам хоста, СУБД и сеансов 1С.

Один экспортёр опрашивает несколько BMC

Prometheus IPMI Exporter работает по схеме multi-target exporter. Prometheus обращается к пути /ipmi, передаёт цель, а экспортёр опрашивает её BMC по RMCP. Один экземпляр обслуживает несколько серверов.

Prometheus Community указывает порт экспортёра по умолчанию — 9290. Основная реализация опирается на FreeIPMI.

Для удалённого опроса экспортёру нужны утилиты FreeIPMI:

Состав пакетов зависит от дистрибутива. После установки проверьте, что все команды доступны пользователю, от которого запущен экспортёр.

У экспортёра есть обычный путь /metrics. Он показывает данные самого процесса. Аппаратные показатели удалённого сервера приходят через /ipmi.

Сначала подключите один BMC. Так проще проверить доступ, учётную запись, набор коллекторов и реальные названия датчиков.

Экспортёр ставят у сети управления

BMC не нужно открывать для рабочей сети. GSE в схеме мониторинга IPMI и Redfish отделяет сеть управления от производственного контура.

Если Prometheus видит сеть управления, экспортёр можно держать рядом с ним. В другой схеме используют узел мониторинга с двумя интерфейсами: один смотрит к Prometheus, второй — к BMC.

Когда прямого маршрута нет, промежуточный узел опрашивает контроллеры и отдаёт метрики с одного адреса. Рабочие станции при этом не получают доступ к BMC.

Сетевая ситуацияГде поставить экспортёрЧто проверить
Prometheus доступен из сети управленияРядом с PrometheusМаршрут к каждому BMC и фильтрацию портов
Сети мониторинга и управления разделеныНа узле с двумя интерфейсамиЗапрет транзита из рабочей сети к BMC
Прямой маршрут между зонами запрещёнНа промежуточном узле у BMCДоступ Prometheus только к адресу экспортёра
Экспортёр работает на самом сервереНа контролируемом узлеRoot-доступ и последствия компрометации
Экспортёр доступен через общую сетьВ выделенной зоне мониторингаTLS и базовую аутентификацию

Вывод: для небольшой инфраструктуры проще удалённо опрашивать BMC с выделенного узла. Локальный сбор IPMI требует root-доступа.

Prometheus IPMI Exporter поддерживает TLS и базовую аутентификацию. Prometheus Community подключает их через параметр --web.config.file. Этот слой защищает вход к экспортёру, но не отменяет разделение сетей.

Учётной записи BMC выдайте права, которых хватает для чтения датчиков. Административный доступ к настройкам питания и сети для мониторинга не нужен.

Сначала проверьте сам сбор

Начните с ipmi_up. По спецификации метрик Prometheus Community значение 1 означает, что коллектор получил данные. Значение 0 указывает на ошибку опроса.

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

Следом проверьте ipmi_scrape_duration_seconds. Метрика показывает время получения данных. Рост длительности помогает заметить медленный BMC до полной потери опроса.

Не включайте все коллекторы сразу. Начните с датчиков, состояния шасси, DCMI и SEL. Watchdog и события SEL добавляйте после проверки базового набора.

Такой порядок сокращает число ложных сигналов. Ошибку подключения видно отдельно от странного показания конкретного датчика.

В Grafana нужны состояния, а не склад датчиков

IPMI Exporter отдаёт числовое значение и состояние каждого датчика. Согласно спецификации Prometheus Community, состояния кодируются так:

Эти значения задаёт BMC. Порог температуры хранится в прошивке контроллера, а не в Grafana.

Не назначайте один предел в градусах для всех серверов. GSE приводит пример: требования к температуре на входе различаются у плотной GPU-стойки и файлового сервера.

Панель GrafanaОсновные метрикиЧто считать неисправностью
Доступность BMCipmi_upЗначение 0 после задержки
Температураipmi_temperature_celsius, ipmi_temperature_stateСостояние 1 или 2
Вентиляторыipmi_fan_speed_rpm, ipmi_fan_speed_stateСостояние 2 либо нулевые обороты
Напряжениеipmi_voltage_volts, ipmi_voltage_stateСостояние 1 или 2
Питание шассиipmi_chassis_power_stateЗначение 0
Текущее потреблениеipmi_dcmi_power_consumption_current_wattsОтклонение от обычного режима конкретного сервера
Журнал SELipmi_sel_entries_count, ipmi_sel_free_space_bytesСнижение свободного места до порога оповещения

Вывод: сначала стройте панели по состояниям BMC. Числовые графики оставляйте там, где они помогают увидеть изменение до аварии.

Для текущего потребления берите ipmi_dcmi_power_consumption_current_watts. Спецификация IPMI Exporter предупреждает: обычный датчик ipmi_power_watts может не показывать живое потребление.

В каталоге Grafana Labs есть дашборд IPMI for Prometheus, совместимый с ipmi_exporter. Используйте его как заготовку, а не как готовую панель для всех серверов.

Имена датчиков придётся сверить на каждом сервере

Производители и версии прошивок называют одинаковые датчики по-разному. GSE приводит варианты CPU Temp, CPU1_T и Processor 1 для температуры процессора.

Из-за этого общий запрос по имени датчика может пропустить часть серверов. Сначала посмотрите ряды, которые отдаёт конкретный BMC. Затем сопоставьте их с панелями и правилами.

Часть датчиков не несёт пользы. Встречаются отключённые входы, постоянные нули, показатели без единиц и точные дубли.

Удаляйте такие ряды из панелей. Иначе дашборд растёт, а диагностика замедляется: во время сбоя приходится просматривать десятки пустых графиков.

Единицы тоже стоит привести к одному виду. GSE предлагает хранить температуру в градусах Цельсия, напряжение в вольтах, мощность в ваттах, обороты в RPM.

Alertmanager должен различать три типа событий

Аппаратный мониторинг создаёт три разных класса уведомлений:

  1. Не работает сбор данных.
  2. Сервер выключен.
  3. BMC сообщает об аппаратной неисправности.

Смешивать их в одно оповещение нельзя. При ipmi_up == 0 состояние железа неизвестно. При ipmi_chassis_power_state == 0 BMC отвечает и сообщает, что питание выключено.

Набор правил Awesome Prometheus Alerts использует задержку в пять минут для потери коллектора. Она отсекает короткие сетевые разрывы:

- alert: IPMICollectorDown
 expr: ipmi_up == 0
 for: 5m
 labels:
 severity: warning

Отключение шасси проверяется отдельно:

- alert: IPMIChassisPowerOff
 expr: ipmi_chassis_power_state == 0
 labels:
 severity: critical

Критическое состояние температуры и вентиляторов соответствует значению 2:

- alert: IPMITemperatureSensorCritical
 expr: ipmi_temperature_state == 2
 labels:
 severity: critical

- alert: IPMIFanSpeedSensorCritical
 expr: ipmi_fan_speed_state == 2
 labels:
 severity: critical

Для нулевых оборотов вентилятора Awesome Prometheus Alerts тоже применяет задержку в пять минут:

- alert: IPMIFanSpeedZero
 expr: ipmi_fan_speed_rpm == 0
 for: 5m
 labels:
 severity: critical

Предупредительное состояние датчика имеет значение 1. Для температуры, вентиляторов, напряжения, тока и мощности готовые правила выдерживают его пять минут перед отправкой.

Журнал SEL требует отдельного сигнала. В наборе Awesome Prometheus Alerts предупреждение срабатывает, когда ipmi_sel_free_space_bytes остаётся ниже 512 байт пять минут.

Порог 512 байт относится к готовому набору правил, а не к любой модели BMC. Перед включением проверьте размер SEL и поведение контроллера при заполнении.

Обратная логика метрик требует отдельной проверки

Не все аппаратные метрики читаются одинаково. У ipmi_chassis_power_state ноль означает выключенное питание. У состояний датчиков ноль означает норму.

Некоторые метрики шасси используют ещё одну схему. В правилах Awesome Prometheus Alerts значение 0 у ipmi_chassis_drive_fault_state означает ошибку дисковой подсистемы. Такая же логика действует у ipmi_chassis_cooling_fault_state.

МетрикаНормальное значениеАварийное значениеКак использовать
ipmi_up10Сообщать о потере сбора после задержки
ipmi_chassis_power_state10Сообщать об отключении сервера
ipmi_temperature_state02Разделять предупреждение 1 и аварию 2
ipmi_fan_speed_state02Проверять вместе с оборотами
ipmi_chassis_drive_fault_state10Не применять логику обычных датчиков
ipmi_chassis_cooling_fault_state10Проверить наличие метрики на своей модели

Вывод: правило по шаблону metric != 0 для IPMI не работает. Каждую метрику сверяйте со спецификацией экспортёра и фактической выдачей BMC.

Одно событие не должно создавать десятки сообщений

Отказ вентилятора может изменить температуру, питание и несколько связанных состояний. Без группировки Alertmanager отправит отдельное сообщение по каждому ряду.

GSE рекомендует группировать аппаратные уведомления по площадке, стойке и имени правила. Для этого метрикам нужны постоянные метки вроде dc, rack и host.

Не добавляйте изменяющиеся значения в ключ группировки. Температура или имя отдельного датчика раздробят одно событие на несколько уведомлений.

После настройки отключите связь с тестовым BMC. Через пять минут должно прийти одно сгруппированное сообщение о потере сбора. Проверку проводите на согласованном окне работ.

Минимальная схема для первого сервера

Для запуска хватит одного ipmi_exporter рядом с Prometheus и одного BMC как отдельной цели. В Grafana выведите шесть групп данных:

В Alertmanager добавьте потерю сбора на пять минут, выключение шасси и критические состояния датчиков. Нулевые обороты вентилятора держите пять минут перед отправкой.

Перед подключением следующего сервера проверьте три вещи. Метрики должны приходить при недоступной ОС. Grafana должна различать состояния 0, 1 и 2. Потеря связи с BMC должна создавать одно уведомление.

Новый сервер сначала подключайте отдельной целью. Сверьте имена и единицы датчиков, уберите пустые ряды и дубли. Только после этого добавляйте его в общий дашборд.

alertmanager bmc grafana ipmi prometheus мониторинг серверов