Аппаратное обеспечение сервера (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_bytes | system |
| Корпус | chassis_health, chassis_health_rollup | chassis |
| Температуры | temperature_celsius, temperature_upper_critical_celsius и temperature_upper_caution_celsius (собственные критический и предупредительный пороги датчика, если он их объявляет), temperature_health | chassis, sensor |
| Вентиляторы | fan_speed_rpm (или fan_speed_percent, когда контроллер сообщает процент), fan_lower_critical_rpm (или _percent: объявленный самим вентилятором минимум, только старая схема), fan_health, fan_redundancy_health | chassis, fan / group |
| Питание | psu_health, psu_output_watts, psu_capacity_watts, power_redundancy_health, power_consumed_watts | chassis, psu / group |
| Напряжения | voltage_volts, voltage_health | chassis, sensor |
| Хранилище | storage_health, drive_health, drive_failure_predicted, drive_life_left_percent (SSD), drive_capacity_bytes | system, storage, drive, media |
| Контроллер | manager_health, manager_info (значение 1) | manager, firmware, model |
| Журналы | log_entries, log_critical_entries, log_warning_entries | owner (система или контроллер), 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 есть собственная панель на странице, над графиками, построенная по тому, что сохранил последний опрос: открытие страницы никогда не обращается к контроллеру. Она отвечает на вопросы в таком порядке:
- Исправен ли сервер. Одно слово — 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, панель так и говорит и отсылает к его журналу событий. Ниже: состояние питания, потребляемая мощность, установленная память и прошивка контроллера.
- Находятся ли вентиляторы и температуры в пределах нормы. Каждый датчик сравнивается с порогами, которые контроллер объявляет для этого датчика — его предупредительная и критическая температуры, минимальная скорость вентилятора, — а никогда не с числом от DumbMonit. Датчик, не объявляющий порога, показывает своё показание без вердикта, если только сам контроллер не сообщает о его деградации. Проблемы перечислены первыми.
- Резервировано ли питание. Каждая группа резервирования (Redundant, Redundancy degraded, Redundancy lost), затем каждый присутствующий блок питания с выходной мощностью относительно его ёмкости и его состоянием. Если групп резервирования нет, панель сообщает, что контроллер не объявляет ни одной: единственный блок или резервирование не настроено.
- Исправны ли диски. Каждый контроллер хранилища, затем каждый диск с его ёмкостью, остатком ресурса SSD и состоянием; Failure predicted идёт раньше всего остального.
- Память, процессоры и контроллер: односложные сводки контроллера по всем модулям DIMM и по всем процессорам, собственное состояние, модель и прошивка контроллера управления, а также напряжения.
- Журналы событий: записи, подсчитанные по уровню важности. Записи остаются, пока кто-то не очистит журнал, так что число критических может быть давней новостью: оно показывается, но не меняет слово состояния сервера.
Пустые отсеки и свободные слоты никогда не появляются: они не порождают рядов. Каждое состояние передаётся и словом, и цветом, а неизвестное значение читается как «—», а не как 0.
Создание учётной записи только для чтения на контроллере управления
Заголовок раздела «Создание учётной записи только для чтения на контроллере управления»-
Откройте веб-интерфейс контроллера управления (BMC), а не операционную систему сервера. Создайте нового локального пользователя с таким именем и длинным паролем, нигде больше не используемым.
dumbmonit -
Назначьте ему самую низкую роль, позволяющую читать, и ничего больше. 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.
-
С любой машины в сети управления проверьте, что учётная запись может читать Redfish. Команда запрашивает пароль и выводит имя и состояние сервера.
curl -k -u dumbmonit https://bmc.lan/redfish/v1/Systems -
В DumbMonit введите адрес контроллера, например «bmc.lan» или «10.0.0.50», затем имя пользователя и пароль этой учётной записи.
-
DumbMonit только читает: вентиляторы, температуры, напряжения, блоки питания, диски, сводки по памяти и процессорам и число записей журнала по уровню важности. Он никогда не включает и не выключает сервер, никогда не меняет настройки и никогда не читает текст журналов.
Названия меню выше соответствуют современным прошивкам; более старые поколения переносят их в другие места, но сохраняют те же роли. На Supermicro тип учётной записи, показываемый при создании пользователя, определяет, какими интерфейсами она может пользоваться: учётная запись без доступа к Redfish отклоняется с кодом 401, даже если пароль верный.
Учётные данные
Заголовок раздела «Учётные данные»| Учётные данные | Поля |
|---|---|
| Учётная запись контроллера управления | Имя пользователя и пароль учётной записи только для чтения. |
Адрес: имя хоста или IP контроллера, например bmc.lan или 10.0.0.50. Порт по
умолчанию — 443; для другого напишите host:port или полный URL
(https://bmc.lan:8443).
Параметры
Заголовок раздела «Параметры»| Параметр | По умолчанию | Действие |
|---|---|---|
port | 443 | HTTPS-порт, если в адресе он не указан. |
insecure_tls | false | Принимать самоподписанный сертификат. |
request_timeout_seconds | 8 | Время, отведённое на каждый вызов Redfish, от 1 до 120. |
auth | basic | basic отправляет имя пользователя и пароль с каждым запросом и ничего не оставляет открытым на контроллере. session входит один раз и повторно использует токен сессии (X-Auth-Token), открывая её заново только когда контроллер её отклоняет и закрывая заменяемую. Используйте только если контроллер отклоняет базовую аутентификацию: у контроллеров лишь несколько слотов сессий. |
storage | true | Читать контроллеры хранилища и все диски за ними. Один запрос на диск. |
logs | true | Считать записи журнала событий системы и собственного журнала контроллера по уровню важности. |
Полное чтение — это несколько десятков запросов: корень службы, затем каждая
система, корпус и контроллер, их тепловые и энергетические ресурсы, контроллеры
хранилища и диски, службы журналов. 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 для этого датчика: температура по-прежнему записывается, но встроенное правило не с чем её сравнивать. |