9.2 KiB
Backlog
Сбор SFP-модулей
Статус: не реализовано.
Источник данных
ethtool -m <iface> / ethtool --module-info <iface> — читает EEPROM SFP/SFP+/QSFP28/QSFP-DD по стандарту MSA (SFF-8472 / SFF-8636).
Доступные поля из EEPROM:
- Идентификатор модуля:
Identifier(SFP, SFP+, QSFP28, …) - Тип коннектора:
Connector - Вендор:
Vendor name,Vendor OUI,Vendor PN,Vendor SN,Vendor rev - Оптика:
Wavelength,Transceiver type(10GBase-SR, LR, DAC, …) - Телеметрия DOM (если модуль поддерживает):
Laser tx bias current,Transmit avg optical power,Receive avg optical power,Module temperature,Module voltage - Статус:
Rx power high alarm,Tx power low warning, …
Для QSFP28 данные повторяются на 4 канала (lane 0–3).
Инструмент требует root. На bee ISO — доступен (ethtool входит в образ).
Scope для bee
- Собирать список сетевых интерфейсов через
ip -j link show(толькоether, безlo/VLAN/bond). - Для каждого интерфейса пробовать
ethtool -m <iface>. Если модуль отсутствует или не поддерживает EEPROM read — тихо пропускать. - Связывать интерфейс с PCIe-устройством через
ethtool -i <iface>→ полеbus-info(BDF) → сопоставление сpcie_devices[].slot.
Gap в контракте
Текущий контракт v2.10 имеет в pcie_devices[] скалярные поля:
sfp_temperature_c,sfp_tx_power_dbm,sfp_rx_power_dbm,sfp_voltage_v,sfp_bias_ma
Этого недостаточно:
- Одна NIC-карта может иметь несколько портов — нужен массив, а не скаляр.
- Нет полей идентификации модуля (vendor, part_number, serial_number, wavelength, connector).
- Нет разбивки по каналам для QSFP28.
Предлагаемое расширение контракта
Добавить в pcie_devices[] массив sfp_modules[]:
"pcie_devices": [
{
"slot": "0000:3b:00.0",
"device_class": "EthernetController",
"model": "ConnectX-6 Dx",
"sfp_modules": [
{
"port": 0,
"identifier": "QSFP28",
"connector": "LC",
"vendor": "Mellanox",
"part_number": "MFA1A00-C003",
"serial_number": "MT2124VS09999",
"revision": "A",
"wavelength_nm": 850,
"transceiver_type": "100GBase-SR4",
"temperature_c": 36.4,
"voltage_v": 3.29,
"tx_power_dbm": -1.8,
"rx_power_dbm": -2.1,
"bias_ma": 7.2
}
]
}
]
Поля sfp_modules[]:
| Поле | Тип | Описание |
|---|---|---|
port |
int | Номер порта на NIC (0-based) |
identifier |
string | SFP, SFP+, QSFP28, QSFP-DD, … |
connector |
string | LC, MPO, DAC, … |
vendor |
string | Производитель модуля |
part_number |
string | Партномер |
serial_number |
string | Серийный номер |
revision |
string | Ревизия |
wavelength_nm |
int | Длина волны, нм |
transceiver_type |
string | 10GBase-SR, 100GBase-SR4, DAC, … |
temperature_c |
float | Температура модуля, °C |
voltage_v |
float | Напряжение, В |
tx_power_dbm |
float | TX оптическая мощность, dBm |
rx_power_dbm |
float | RX оптическая мощность, dBm |
bias_ma |
float | Bias current, мА |
Старые скалярные поля sfp_temperature_c / sfp_tx_power_dbm / sfp_rx_power_dbm / sfp_voltage_v / sfp_bias_ma на уровне pcie_devices[] — вывести из контракта (deprecated), заменить на sfp_modules[].
Порядок реализации
- Согласовать расширение контракта с Reanimator Core (bump до v2.11).
- Добавить
ethtoolparser вaudit/internal/collector/— новый файлsfp.go. - Дополнить schema в
audit/internal/schema/типомSFPModule. - Добавить
sfp_modulesвPCIeDeviceв schema. - Заполнять в NIC-коллекторе: связь интерфейс → BDF →
pcie_devices[].sfp_modules. - Показывать в TUI и web UI в разделе PCIe/NIC.
BMC версия через IPMI
Статус: реализовано.
Добавить сбор версии BMC firmware в board collector:
- Команда:
ipmitool mc info→ полеFirmware Revision - Записывать в
hardware.firmware[]как{device_name: "BMC", version: "..."} - Показывать в TUI правой колонке рядом с BIOS версией
- Graceful skip если
/dev/ipmi0отсутствует (silent: same pattern as PSU collector)
CPU acceptance test через stress-ng
Статус: реализовано. CPU в Health Check получает PASS/FAIL из summary.txt.
Добавить CPU SAT на базе stress-ng:
- Bake
stress-ngв ISO (добавить вbee.list.chroot) - Новый
bee sat cpu— запускаетstress-ng --cpu 0 --cpu-method all --timeout <N>где N = duration из режима (Quick=60s, Standard=300s, Express=900s) - Параллельно снимает температуры через
sensorsи throttle-флаги из аудит JSON - Результат: SAT архив с summary.txt в формате других SAT (overall_status=OK/FAILED)
- После реализации: CPU в Health Check получает реальный PASS/FAIL статус
Real hardware validation
Статус: ожидает доступа к железу.
Что осталось подтвердить на практике:
bee sat nvidiaна реальном NVIDIA GPU hostbee sat storageна NVMe/SATA/RAID hostipmitool sdrparsing на сервере с реальным BMC/IPMI- vendor RAID tooling (
storcli64,sas2ircu,sas3ircu,arcconf,ssacli) в живом ISO
SAT result polish
Статус: частично закрыто.
Что ещё можно улучшить после полевой проверки:
- точнее классифицировать vendor-specific self-test outputs в
storage SAT - подобрать дефолты
memtesterпо объёму RAM на целевых машинах - при необходимости расширить
bee-gpu-stressпо длительности/нагрузке
Hardware Contract backlog
Статус: уточнён, сокращён до bee-only snapshot scope.
Не backlog для bee
Эти задачи не должны реализовываться в bee, потому что относятся к централизованному ingest/lifecycle слою:
status_historystatus_changed_at- определение замены компонента между snapshot'ами
- timeline/lifecycle/history по diff между экспортами
bee отвечает только за текущий snapshot железа и status_checked_at.
Реализуемо инкрементально
Эти поля можно развивать дальше по мере появления реальных sample outputs и vendor-specific parser'ов:
cpus.correctable_error_countcpus.uncorrectable_error_countpower_supplies.life_remaining_pctpower_supplies.life_used_pctpcie_devices.battery_charge_pctpcie_devices.battery_health_pctpcie_devices.battery_temperature_cpcie_devices.battery_voltage_vpcie_devices.battery_replace_required
Vendor/platform-specific, часто пустые
Эти поля допустимо оставлять пустыми на части платформ даже после реализации parser'ов:
power_supplies.life_remaining_pctpower_supplies.life_used_pct- часть
pcie_devices.battery_*для неподдержанных RAID/NIC/GPU вендоров
Unsupported в bee
Эти поля считаются нереалистичными для общего OS-level hardware snapshotter без synthetic/fake data:
cpus.life_remaining_pctcpus.life_used_pctmemory.life_remaining_pctmemory.life_used_pctmemory.spare_blocks_remaining_pctmemory.performance_degraded
Причина: у обычного Linux-host audit обычно нет честного vendor-neutral runtime source для этих метрик.
Эти поля считаются дропнутыми из backlog bee и не должны возвращаться в план работ без появления нового доказуемого локального источника данных на целевых машинах.