Перейти к содержимому

Аппаратное обеспечение сервера (Redfish)

Собственное оборудование сервера, считываемое с его контроллера управления (BMC): вентиляторы, температуры относительно собственных пороговых значений, блоки питания и их резервирование, диски, память, процессоры и журнал событий.

Redfish — это HTTPS-интерфейс, стандартизированный DMTF для контроллеров управления, и на нём говорят все современные: Supermicro, Dell iDRAC, HPE iLO, Lenovo XClarity Controller, ASRock Rack, OpenBMC. Это правильный способ следить за оборудованием сервера. SNMP-агент BMC, напротив, обычно описывает сам BMC — его небольшой ARM-Linux, его память, его сетевые каналы, — а не сервер, которым он управляет (см. SNMP).

Все метрики имеют префикс dumbmonit_redfish_. Ряды состояния принимают значения 0 (OK), 1 (Warning) или 2 (Critical), прямо из Status.Health.

СемействоМетрикиМетки
Службаinfo (значение 1)vendor, product, redfish_version
Системаsystem_health (собственное состояние системы), system_health_rollup (всё, что она содержит), system_power_on, memory_health, processor_health (сводки контроллера, одно значение на все модули DIMM и на все процессоры), memory_total_bytessystem
Корпусchassis_health, chassis_health_rollupchassis
Температурыtemperature_celsius, temperature_upper_critical_celsius и temperature_upper_caution_celsius (собственные критический и предупредительный пороги датчика, если он их объявляет), temperature_healthchassis, sensor
Вентиляторыfan_speed_rpm (или fan_speed_percent, когда контроллер сообщает процент), fan_lower_critical_rpm (или _percent: объявленный самим вентилятором минимум, только старая схема), fan_health, fan_redundancy_healthchassis, fan / group
Питаниеpsu_health, psu_output_watts, psu_capacity_watts, power_redundancy_health, power_consumed_wattschassis, psu / group
Напряженияvoltage_volts, voltage_healthchassis, sensor
Хранилищеstorage_health, drive_health, drive_failure_predicted, drive_life_left_percent (SSD), drive_capacity_bytessystem, storage, drive, media
Контроллерmanager_health, manager_info (значение 1)manager, firmware, model
Журналыlog_entries, log_critical_entries, log_warning_entriesowner (система или контроллер), log
Сборscrape_errors, scrape_duration_seconds

Пустой слот — это не сбой. Компонент, у которого Status.State равно Absent (пустой отсек блока питания, свободный слот DIMM, отсутствующий второй процессор) или Disabled (не настроенная группа резервирования), не порождает никаких рядов. Сервер, поставленный с одним блоком питания из двух, исправен и читается как исправный.

Два поколения схемы, один набор рядов. Большинство контроллеров в эксплуатации по-прежнему публикуют старые ресурсы Chassis/{id}/Thermal и Chassis/{id}/Power, по одному запросу на каждый датчик; новейшие публикуют только ThermalSubsystem, PowerSubsystem, EnvironmentMetrics и Sensors, по одному ресурсу на вентилятор, блок питания и датчик. DumbMonit читает старую форму, если она есть, и новую в противном случае; обе дают абсолютно одинаковые ряды и метки, поэтому правило, написанное один раз, работает на обеих.

Журналы считаются, но никогда не читаются. Записи журнала могут содержать имена хостов, адреса и пользователей: DumbMonit сохраняет только число записей и то, сколько из первой страницы, отдаваемой контроллером, имеют уровень Critical или Warning.

Применяемые встроенные правила: Server fan failed, Server temperature above critical, Power supply redundancy lost, Power supply failed, Drive failure predicted, Server health critical, а также Monitor unreachable.

У монитора Redfish есть собственная панель на странице, над графиками, построенная по тому, что сохранил последний опрос: открытие страницы никогда не обращается к контроллеру. Она отвечает на вопросы в таком порядке:

  1. Исправен ли сервер. Одно слово — Healthy, Degraded или Critical — по собственному состоянию контроллера и его сводкам, а под ним каждый компонент, который его понижает, одним предложением: CPU1 Temp is at 47 °C, at or above its critical threshold of 45 °C, Power supply redundancy is lost, Drive 3 predicts its own failure. Когда контроллер сводит сервер к degraded, не называя ничего из того, что читает DumbMonit, панель так и говорит и отсылает к его журналу событий. Ниже: состояние питания, потребляемая мощность, установленная память и прошивка контроллера.
  2. Находятся ли вентиляторы и температуры в пределах нормы. Каждый датчик сравнивается с порогами, которые контроллер объявляет для этого датчика — его предупредительная и критическая температуры, минимальная скорость вентилятора, — а никогда не с числом от DumbMonit. Датчик, не объявляющий порога, показывает своё показание без вердикта, если только сам контроллер не сообщает о его деградации. Проблемы перечислены первыми.
  3. Резервировано ли питание. Каждая группа резервирования (Redundant, Redundancy degraded, Redundancy lost), затем каждый присутствующий блок питания с выходной мощностью относительно его ёмкости и его состоянием. Если групп резервирования нет, панель сообщает, что контроллер не объявляет ни одной: единственный блок или резервирование не настроено.
  4. Исправны ли диски. Каждый контроллер хранилища, затем каждый диск с его ёмкостью, остатком ресурса SSD и состоянием; Failure predicted идёт раньше всего остального.
  5. Память, процессоры и контроллер: односложные сводки контроллера по всем модулям DIMM и по всем процессорам, собственное состояние, модель и прошивка контроллера управления, а также напряжения.
  6. Журналы событий: записи, подсчитанные по уровню важности. Записи остаются, пока кто-то не очистит журнал, так что число критических может быть давней новостью: оно показывается, но не меняет слово состояния сервера.

Пустые отсеки и свободные слоты никогда не появляются: они не порождают рядов. Каждое состояние передаётся и словом, и цветом, а неизвестное значение читается как «—», а не как 0.

Создание учётной записи только для чтения на контроллере управления

Заголовок раздела «Создание учётной записи только для чтения на контроллере управления»
  1. Откройте веб-интерфейс контроллера управления (BMC), а не операционную систему сервера. Создайте нового локального пользователя с таким именем и длинным паролем, нигде больше не используемым.

    dumbmonit
  2. Назначьте ему самую низкую роль, позволяющую читать, и ничего больше. Supermicro: Configuration → Users → Add User, привилегия User, и отметьте Redfish в типе учётной записи. Dell iDRAC: iDRAC Settings → Users → Local Users → Add, роль Read Only. HPE iLO: Administration → User Administration → New, снимите все привилегии, кроме Login. Lenovo XClarity Controller: BMC Configuration → User/LDAP → Create, роль Read-only. ASRock Rack: Settings → User Management, привилегия User.

  3. С любой машины в сети управления проверьте, что учётная запись может читать Redfish. Команда запрашивает пароль и выводит имя и состояние сервера.

    curl -k -u dumbmonit https://bmc.lan/redfish/v1/Systems
  4. В DumbMonit введите адрес контроллера, например «bmc.lan» или «10.0.0.50», затем имя пользователя и пароль этой учётной записи.

  5. DumbMonit только читает: вентиляторы, температуры, напряжения, блоки питания, диски, сводки по памяти и процессорам и число записей журнала по уровню важности. Он никогда не включает и не выключает сервер, никогда не меняет настройки и никогда не читает текст журналов.

Названия меню выше соответствуют современным прошивкам; более старые поколения переносят их в другие места, но сохраняют те же роли. На Supermicro тип учётной записи, показываемый при создании пользователя, определяет, какими интерфейсами она может пользоваться: учётная запись без доступа к Redfish отклоняется с кодом 401, даже если пароль верный.

Учётные данныеПоля
Учётная запись контроллера управленияИмя пользователя и пароль учётной записи только для чтения.

Адрес: имя хоста или IP контроллера, например bmc.lan или 10.0.0.50. Порт по умолчанию — 443; для другого напишите host:port или полный URL (https://bmc.lan:8443).

ПараметрПо умолчаниюДействие
port443HTTPS-порт, если в адресе он не указан.
insecure_tlsfalseПринимать самоподписанный сертификат.
request_timeout_seconds8Время, отведённое на каждый вызов Redfish, от 1 до 120.
authbasicbasic отправляет имя пользователя и пароль с каждым запросом и ничего не оставляет открытым на контроллере. session входит один раз и повторно использует токен сессии (X-Auth-Token), открывая её заново только когда контроллер её отклоняет и закрывая заменяемую. Используйте только если контроллер отклоняет базовую аутентификацию: у контроллеров лишь несколько слотов сессий.
storagetrueЧитать контроллеры хранилища и все диски за ними. Один запрос на диск.
logstrueСчитать записи журнала событий системы и собственного журнала контроллера по уровню важности.

Полное чтение — это несколько десятков запросов: корень службы, затем каждая система, корпус и контроллер, их тепловые и энергетические ресурсы, контроллеры хранилища и диски, службы журналов. DumbMonit отправляет не более четырёх одновременно. Медленному контроллеру может понадобиться больший тайм-аут опроса (DUMBMONIT_PROBE_TIMEOUT_SECS, см. Конфигурация) и интервал опроса в две минуты или больше.

СимптомВероятная причина
Authentication refusedНеверный пароль, или учётной записи не разрешено использовать Redfish (тип учётной записи Supermicro, отсутствует привилегия «Login» в iLO).
Insufficient privilegesРоль слишком низкая для одного ресурса; остальное чтение проходит. Некоторые контроллеры скрывают журнал событий от своей самой низкой роли.
TLS certificate rejectedСамоподписанный сертификат контроллера: отметьте «Accept an unverifiable certificate» или установите на контроллер доверенный сертификат.
Timed outКонтроллер медленно отвечает: увеличьте DUMBMONIT_PROBE_TIMEOUT_SECS, отключите storage или logs либо удлините интервал.
Нет порогов температурыКонтроллер не публикует UpperThresholdCritical для этого датчика: температура по-прежнему записывается, но встроенное правило не с чем её сравнивать.