Коротко. Два класса ложных тревог растут из одного места — из модели оборудования. BMC отдаёт алиасы вентиляторов, которых физически нет, а machine.json описывает порты именами eth0…eth7, которых в системе тоже нет. Чекеры сверяют модель с железом и поднимают NOT_FOUND/NIC_DOWN. Лечится штатно: фильтр вентиляторов в шаблоне железа и статус NOTMANAGED для лишних портов. Выдёргивать железо и «ремонтировать» тут нечего.
1. Два класса, одна причина
| Симптом в GUI | Что показывает | Что это на самом деле |
|---|---|---|
вентиляторы NOTFOUND / DEGRADED |
позиции, которых нет на шасси | алиасы BMC в модели |
PSU/FAN NOT_FOUND |
датчик не читается | платформа не отдаёт его штатным типом IPMI |
пачка ERROR NIC_DOWN |
порты enp…, к которым не подключён кабель |
порт без линка, а не поломка |
| «16 NIC на 8 портов» | дубли eth* и enp* |
модель описана не теми именами |
Общее: модель описывает не то железо, которое стоит. Продукт не «глючит» — он честно сравнивает документ с тем, что отдаёт платформа, и репортит расхождение.
Почему это важно для эксплуатации: такие события висят в LIVE и маскируют настоящие. Оператор
привыкает к «у нас всегда 6 красных по вентиляторам» — и пропускает реальный отказ.
2. Вентиляторы: откуда берутся несуществующие позиции
BMC отдаёт список датчиков по своей прошивке, и в нём бывают позиции-алиасы: «Fan chassis 4A»,
«Fan chassis 8A», «Fan chassis NB». На шасси этих позиций нет, но чекер видит их в модели и
ожидает значение. Значение не приходит → статус NOTFOUND.
Штатное лечение — фильтр в шаблоне железа, а не правка чекера. В профиле оборудования есть
поле ignore_fans_regex:
"ignore_fans_regex": "Fan chassis [0-9]B|Fan chassis 4A|Fan chassis 8A"
Оно исключает перечисленные позиции из сверки. Порядок применения важен:
- прописать фильтр в шаблоне типа железа;
- перезапустить mona (чекеры перечитывают профиль);
- удалить orphan-документы вентиляторов из модели;
- прогнать контрольный скан.
Чего не делать: ждать, что systemscan --update-existing уберёт мусор. Он не воскрешает
удалённые документы — но и сам не удаляет лишние. Чистка — отдельный шаг.
Отдельный случай — PSU/FAN NOT_FOUND, когда платформа не отдаёт датчик штатным IPMI-типом.
Это не отказ питания и не отказ вентилятора: датчика просто нет в том виде, в котором его ждёт
чекер. Проверять надо по IPMI напрямую и по факту работы — а не по статусу в GUI.
3. NIC: почему «16 портов» вместо восьми
В machine.json порты описаны как eth0…eth7 — это имена из шаблона, а не из системы. На железе
порты называются enp… (по PCI-пути). Скан создаёт документы по реальным именам, а старые
eth*-документы остаются — итог: модель знает вдвое больше портов, чем есть.
Правильный порядок — до установки: в machine.json писать реальные имена интерфейсов, а не
шаблонные eth*. Если имена неизвестны, список NIC лучше не описывать вовсе — скан создаст
документы сам. После установки то же самое лечится чисткой модели.
Дополнительно: nictype должен быть ether. Значение ethernet даёт ValidationError и роняет
инициализацию — типичная ошибка при сборке очереди вручную.
4. Лишние порты: статус NOTMANAGED
Порт без кабеля для продукта — «down»: чекер проверяет состояния {UP, DOWN, BONDED} и репортит
NIC_DOWN. Это не отказ железа, а несмонтированный линк.
Штатный путь — увести порт в статус NOTMANAGED в модели:
PUT /model/machine/<MGUID>/nic/<NGUID>/ -d '{"status": "NOTMANAGED"}'
Ожидаемый ответ — 200. Почему это штатно, а не обход:
NOTMANAGEDвходит в допустимые состояния NIC в модели;- скан не перезаписывает документы в состояниях
NOTMANAGED,DECOMMISSIONED,DISABLED; - чекер пропускает все статусы, кроме
{UP, DOWN, BONDED}; - когда список «проблемных» портов пуст, продукт сам снимает событие (
unset_event).
События закрываются на следующем цикле mona. В нашей конфигурации цикл — 600 секунд, наблюдали
постепенное сокращение LIVE NIC_DOWN (8 → 4 → 0).
Ловушка: действие nic down на «пустом» NIC не работает — продукт требует хотя бы одну сетевую
секцию в настройках и падает с ValueError: Insufficient settings to configure interface. Для
неподключённого порта единственный путь — смена статуса в модели, а не «выключение» интерфейса.
5. Что проверить первым (только чтение)
- События за сутки по классам
FAN,PSU,NIC— какие позиции и какие MAC/имена фигурируют. GET /model/machine/<MGUID>/nic/— сколько документов, какие статусы, есть ли дублиeth*/enp*.- Шаблон типа железа: есть ли
ignore_fans_regex, какие позиции он покрывает. - IPMI напрямую: отдаёт ли платформа датчик вентилятора/питания (
ipmitool sensor,ipmitool fru). - Реальный линк на порту:
cat /sys/class/net/<dev>/carrier(1— линк есть).
Если IPMI датчик отдаёт, а модель его не видит — расхождение в профиле; если не отдаёт — вопрос к платформе и прошивке, а не к продукту.
6. Проверка результата
| Что | Ожидаемо |
|---|---|
PUT статуса NIC |
200 |
| список NIC в модели | нет дублей, лишние — NOTMANAGED |
LIVE NIC_DOWN по этим портам |
исчезает в течение цикла mona |
| события FAN по отфильтрованным позициям | не поднимаются после перезапуска mona и скана |
systemscan |
не создаёт удалённые документы заново |
| модель машины | число NIC совпадает с числом физических портов |
«Стало тихо» — не доказательство: надо увидеть, что число документов NIC совпало с железом, иначе следующий скан вернёт мусор.
7. Профилактика
- Профиль железа — часть поставки: фильтр вентиляторов и корректные имена NIC должны быть в нём до установки, а не после первого скан-цикла.
- Не описывать в
machine.jsonпорты, которых не знаете: пусть скан создаст документы по факту. - После каждого обновления прошивки BMC проверять, не изменился ли набор датчиков — фильтр может потребовать правки.
- Раз в месяц просматривать
LIVE-события по FAN/PSU/NIC: «привычные» ложные тревоги должны быть закрыты, а не терпимы. - Не лечить ложные тревоги выдёргиванием железа: замена исправного вентилятора или диска не убирает причину — причину убирает только модель.
Источники
- ActiveScale X200 Getting Started Guide — состав шасси, порты, слоты (2026-11-07)
- Управление системой (GUI) (2026-11-07)
- Наша практика (обезличено): чистка FAN/NIC через Model API на 3-нодных стендах, наблюдение закрытия
NIC_DOWNпо циклу чекеров. - Обновлено: 2026-11-07.