• v1.31 8278c77d98

    logpile v1.31 Stable

    mchus released this 2026-09-01 12:11:42 +03:00 | 23 commits to main since this release

    Парсеры

    nvidia_bug_report: извлечение ошибок GPU Xid/SXid (ADL-055)

    Парсер теперь сканирует nvidia-bug-report-*.log.gz на строки NVRM: Xid /
    NVRM: SXid и выдаёт события с эвристической классификацией «железо против
    нагрузки» по каталогу Xid-кодов. Лавинообразный поток одного NVLink-сообщения
    (наблюдалось 114 440 строк за раз) сворачивается в одно суммарное событие.

    Одиночные .gz больше не обрезаются фиксированным лимитом (ADL-054)

    Распаковка одиночного gzip-файла ограничивается не жёстким потолком в 50 МБ, а
    защитой по коэффициенту сжатия (300:1) и абсолютным потолком 1 ГБ. Большие
    bug-report-логи (пример: 53 МБ в распакованном виде) проходят целиком.

    Inspur: часовые пояса, PPIN, активные отказы NVMe

    • Уровень события берётся из RFC 5424 PRI; SEL-записи без смещения времени
      разрешаются по временной шкале из IDL-записей с явным смещением; убраны
      фиктивные записи 1970 года (ADL-056).
    • PPIN процессора экспортируется как серийный номер CPU; активные отказы
      NVMe-накопителей (dev_status.log, IDL Assert/Deassert) проецируются на статус
      hardware.storage (ADL-057).

    Inspur: комбинированный component.log без devicefrusdr.log / asset.json (ADL-064)

    • Блок RESTful FRU info: теперь разбирается — из него берутся производитель,
      модель, партномер и системный UUID платы (раньше board содержал только
      серийный номер, stats.fru был 0).
    • Поле fans_power приходит как float (12.000000) — из-за типа int
      json.Unmarshal всего блока падал и терял все датчики вентиляторов.
    • Из версий прошивок (RESTful version info) срезается суффикс со временем
      сборки (08.05.01 (02/21/2024 16:51:27)), иначе он вызывает событие
      FIRMWARE_CHANGED при каждом импорте.
    • Разбор строк SOL smartd в формате SCSI/SAS.

    xFusion: согласование выгрузок BMC и live-CD одного сервера (ADL-061, ADL-062)

    • Общая нормализация в экспортёре: метки слотов памяти, модели дата-центровых
      GPU, тип и интерфейс накопителей, фильтрация onboard-контроллеров и служебных
      USB-флешек.
    • OCP NIC выдаётся по одной записи на PCI-функцию без серийного номера, чтобы обе
      выгрузки ключевали порты по MAC и не порождали ложные install/remove.
    • Строки mem_info восстанавливаются при попадании байта 0x0A в SPD-поле BOM
      (исчез фантомный DIMM «slot s»).

    xFusion: размер накопителей из disk_info (ADL-063)

    Capacity : 6.986 TB теперь разбирается (единицы TB/бинарные) в size_gb.
    Раньше Sscanf("%f GB") не совпадал и size_gb оставался 0 для всех NVMe.

    HPE iLO AHS: дедуп DIMM по слоту (ADL-060)

    Инвентарь памяти сворачивается по одной записи на слот, выигрывает самый свежий
    POST-снимок. Замена модуля в слоте больше не даёт лишний модуль (было 26 на
    24-слотовой плате).

    easy_bee: поддержка bee-support v12+

    bee-audit.json и runtime-health.json ищутся не только в export/
    (в v12+ они лежат в tasks/_state/ и status/).

    models: PPIN как общий фолбэк серийного номера CPU (ADL-058)

    models.ResolveCPUSerialNumber централизует правило: явный серийник в приоритете,
    иначе валидный PPIN. Применяется в Dell, H3C, Inspur, Redfish и на границе
    API/экспорта. Идентификатор никогда не выводится из сокета, модели или чужого
    компонента.

    Redfish-коллектор

    • Восстановление GPU и NIC, терявшихся на Redfish-выгрузках xFusion G5500.
    • Дедуп GPU и разрешение модели по тексту на платах xFusion без PCI-идентити.
    • RAID/HBA-контроллеры поднимаются из Storage.StorageControllers[].
    • Адрес preflight-ping собирается через net.JoinHostPort для IPv6-хостов.

    Экспорт в Reanimator

    • Сбор и экспорт storage.vendor_id / device_id (контракт ingest v2.13, ADL-053).
    • Дедуп NIC по нормализованному MAC; убран мусорный фолбэк серийника из redis.
    • Устройства PCIe/GPU/NIC с шириной линии ниже согласованной помечаются Warning.
    • Удалено мёртвое поле bmc_event_summary; исправлена потеря статуса для CPU/GPU Inspur.
    • Канонический дедуп PCIe ключуется по BDF раньше серийника.
    • Дизамбигуация коллизий слотов PSU и памяти; слоты PSU назначаются по порядку
      серийников; исправлен дедуп памяти, схлопывавший разные DIMM.
    • Исправлены обрезание больших tar.gz и подстановка пустого device_class.

    Инструменты

    • Новый офлайн-CLI logpile-cpu-audit для аудита идентити процессоров, с режимом
      -reanimator для готовых ingest-пейлоадов (ADL-059).
    • Пакетная конвертация выполняется на пуле воркеров.

    Документация

    • bible-local: ADL-054 … ADL-064.

    Запуск на macOS

    Снимите карантинный атрибут через терминал: xattr -d com.apple.quarantine /path/to/logpile-darwin-arm64
    После этого бинарник запустится без предупреждения Gatekeeper.

    Downloads
  • v1.26 063587958e

    logpile v1.26 Stable

    mchus released this 2026-08-11 12:12:51 +03:00 | 50 commits to main since this release

    Что нового

    Исправление: Dell TSR с iDRAC10 показывал только логи, без аппаратного инвентаря

    Новое поколение прошивки iDRAC10 больше не кладёт в TSR-архив
    sysinfo_dcim_view.xml / sysinfo_dcim_softwareidentity.xml /
    sysinfo_cim_sensor.xml, на которых был основан весь разбор hardware у
    парсера dell. Вместо них архив содержит redfishidracwalk.tar.gz — снятый
    дамп собственного Redfish-дерева iDRAC (по одному JSON-документу на ресурс).
    Из-за этого CPU/память/диски/PCIe/GPU/NIC/БП оставались пустыми, хотя
    события Lifecycle Controller (curr_lclog.xml) парсились нормально — отсюда
    и впечатление «видны только логи».

    Добавлен общий пакет redfishtree, который распознаёт такой дамп
    (по имени файла + структурной проверке содержимого — сервисный корень
    /redfish/v1 и коллекция Systems/Chassis) и прогоняет его через уже
    существующий Redfish-replay движок. Парсер dell теперь дополняет данные
    из DCIM-XML этим источником, когда DCIM-файлов нет. Заодно зарегистрирован
    низкоприоритетный резервный парсер redfish_walk — на случай, если такой
    же формат дампа начнут отдавать и другие вендоры.

    Исправление: повторная загрузка выгруженного reanimator.json теряла память и блоки питания

    При экспорте в формат Reanimator поля present для памяти и БП никогда не
    проставлялись в выгружаемый JSON (в отличие от накопителей, где это работало
    верно). При повторной загрузке ранее экспортированного reanimator.json
    обратно в LOGPile (например, через вкладку Reanimator) это приводило к тому,
    что вся память и блоки питания пропадали из отчёта — при том, что после
    первичного разбора архива они отображались верно.

    Новое: сбор и выгрузка лицензий (hardware.licenses[], контракт Reanimator v2.12)

    LOGPile теперь собирает лицензии/активации функционала по подписке
    (feature-on-demand, advanced-лицензии BMC и т.п.) из стандартной
    Redfish-коллекции LicenseService/Licenses и выгружает их по новой секции
    контракта hardware.licenses[]. Пока источник данных — только
    Redfish-дамп iDRAC10 (см. выше); для других вендоров такого источника ещё
    нет. Лицензии видны и в веб-отчёте (/chart/current).

    Запуск на macOS

    Снимите карантинный атрибут через терминал: xattr -d com.apple.quarantine /path/to/logpile-darwin-arm64
    После этого бинарник запустится без предупреждения Gatekeeper.

    Downloads
  • v1.25 586ac782b2

    logpile v1.25 Stable

    mchus released this 2026-07-29 10:32:52 +03:00 | 55 commits to main since this release

    Что нового

    Новое: раздельная идентичность NVIDIA HGX tray/baseboard (Inspur/Kaytus)

    Для onekeylog-дампов Inspur/Kaytus (HGX B200, KR9288-X3) парсер раньше отдавал
    в качестве идентичности «GPU-платы» только механический FRU-серийник вендора
    (component/fru.txt, Board Product : CA) — это серийник карриера/трея,
    привязанный к шасси, который не меняется при замене самой NVIDIA
    HGX-платы (SXM+NVSwitch, «delta board»). Из-за этого анализ замены платы по
    серийнику давал ложный вывод «плату не меняли».

    Теперь парсер читает настоящую аппаратную идентичность (Model/PartNumber/
    SerialNumber для HGX tray и HGX baseboard) из
    log/bmc/oem-commer-log/HGX_HWInfo_FWVersion.log и отдаёт её отдельной
    сущностью инвентаря (HardwareConfig.HGX), не смешивая с общим FRU. Заодно
    значения-заглушки Redfish (NA/N/A) для отключённых GPU больше не
    просачиваются в серийник/модель/партномер.

    Исправление: HGX-парсер больше не терял повторяющиеся алармы

    ParseIDLLog дедуплицировал события по eventID|eventType|description
    для повторяющегося аларма (например, флапающая проверка присутствия PCIe
    на HGX-платах Inspur) это одинаково для каждого повторения, и все повторные
    occurrences схлопывались в первое. В результате applyGPUStatusFromEvents
    считал состояние GPU по устаревшему, урезанному списку событий и мог
    пометить сбойный GPU как исправный. Дедупликация теперь учитывает и
    временную метку, так что повторяющиеся алармы больше не теряются.

    Новое: поддержка ещё одного варианта onekeylog-раскладки Inspur HGX

    Дампы вида dump_<serial>_<timestamp>/ (проверено на HGX B200, KR9288-X3)
    используют раскладку без devicefrusdr.log:

    • FRU и sensors парсятся из сырого текстового вывода ipmitool
      (component/fru.txt, component/sensor.txt/sdr.txt).
    • PCIe/GPU presence и link state читаются из структурного снапшота
      log/bmc/diagnose/OtrdDiagnoseComponent.json, независимо от истории
      алармов SEL/IDL; устройства ниже согласованной max link speed/width
      помечаются как degraded.
    • SEL при отсутствии selelist.csv берётся из log/sel.csv.
    • Сбои BMC-компонентов (log/bmc/commer-comp/*, включая ротированные
      *.tar.gz.N) парсятся в события отдельно от SEL/IDL.
    • Дубликаты SEL-событий из разных источников схлопываются по
      (timestamp, event_type, description).
    • Если после всех fallback'ов FRU/sensors всё ещё пусты, это теперь видно
      как CollectionError, а не тихо пустой инвентарь.

    На проверочном дампе: fru 0→21, sensors 0→303, 8 GPU видны на Gen5 x16 в
    слотах 100-107.

    Запуск на macOS

    Снимите карантинный атрибут через терминал: xattr -d com.apple.quarantine /path/to/logpile-darwin-arm64
    После этого бинарник запустится без предупреждения Gatekeeper.

    Downloads
  • v1.24 3e7f02e497

    logpile v1.24 Stable

    mchus released this 2026-07-23 12:26:11 +03:00 | 59 commits to main since this release

    Что нового

    Исправление: не разбирались блоки питания и вентиляторы в некоторых onekeylog-дампах Inspur/Kaytus

    Часть прошивок BMC Inspur/Kaytus выгружает onekeylog-дамп без единого
    component/component.log: вместо этого каждый компонент лежит в отдельном
    файле component/*.txt в виде сырого D-Bus GetAll-транскрипта
    (GETALL <object> OBJect с табличными триплетами "field" "type":"x" "data":value, не валидный JSON). Парсер inspur читал только
    component.log, поэтому на таких дампах блоки питания и вентиляторы
    всегда оказывались пустыми, хотя исходные данные присутствовали.

    Добавлен построчный разбор этого формата: PSU — из PowerSupplyInfo.txt,
    телеметрия вентиляторов (RPM и PWM %) — из FanInfo.txt. Заодно исправлена
    дедупликация повторяющихся D-Bus объектов внутри одного файла (например,
    Pwm_N встречается в двух разных секциях команд с разным набором полей) —
    раньше более поздняя секция без показаний могла затирать уже прочитанное
    значение.

    Запуск на macOS

    Снимите карантинный атрибут через терминал: xattr -d com.apple.quarantine /path/to/logpile-darwin-arm64
    После этого бинарник запустится без предупреждения Gatekeeper.

    Downloads
  • v1.23 e2c81758b5

    mchus released this 2026-06-19 15:20:57 +03:00 | 64 commits to main since this release

    logpile v1.23

    Дата релиза: 2026-06-19
    Тег: v1.23

    Что нового

    Исправление: HPE iLO AHS файлы больше 10 МБ не обрезаются

    AHS-файлы могут весить сотни мегабайт (типичный пример — 104 МБ). Универсальный
    лимит в 10 МБ молча обрезал их, из-за чего парсер видел лишь начало файла и
    извлекал неполный список событий.

    Теперь лимит зависит от расширения: .ahs — до 1 ГБ, прочие
    одиночные файлы (.txt, .log) — прежние 10 МБ.

    Для AHS-файла размером 104 МБ количество распознанных событий увеличивается
    с ~529 до ~12 600.

    Запуск на macOS

    Снимите карантинный атрибут через терминал: xattr -d com.apple.quarantine /path/to/logpile-darwin-arm64
    После этого бинарник запустится без предупреждения Gatekeeper.

    Downloads
  • v1.22 3e3c48bc08

    mchus released this 2026-06-19 15:11:46 +03:00 | 66 commits to main since this release

    logpile v1.22

    Дата релиза: 2026-06-19
    Тег: v1.22

    Что нового

    HPE iLO AHS — новый парсер

    Добавлена поддержка файлов *.ahs (Active Health System), экспортируемых
    из веб-интерфейса iLO. Парсер извлекает:

    • Инвентарь оборудования: плата, процессоры, память, диски, сетевые
      адаптеры, блоки питания, backplane, RAID-контроллеры.
    • Прошивки: iLO, System ROM, SPS, TPM, SPLD, контроллеры, NIC, backplane —
      из основного бинарного контейнера и XML-сертификата bcert.pkg.
    • События: разбор .zbb-файлов с журналом iLO; определение типа и
      серьёзности по тексту сообщения; очистка однобайтовых frame-сепараторов
      из концов строк.
    • Устойчивость к битым файлам: если последняя запись в AHS-контейнере
      обрезана (объявленный размер выходит за границу файла), парсер обрабатывает
      данные частично вместо возврата ошибки.
    • Добавлено распознавание модельного ряда Alletra Storage Server (ранее
      ProductName оставался пустым).

    Экспорт логов в CSV («Logs Export»)

    Новая кнопка «Logs Export» в шапке интерфейса выгружает все
    распознанные события (без какой-либо фильтрации) в CSV-файл:

    • Разделитель — точка с запятой (;), кодировка — UTF-8 с BOM.
    • Файл открывается в Excel без дополнительных настроек импорта.
    • Колонки: timestamp, source, severity, sensor_type, sensor_name,
      event_type, id, description, raw_data.

    Кнопка «PDF» удалена.

    Исправления в Reanimator-экспорте

    • event_logs в JSON-экспорте Reanimator больше не оказывается пустым для
      HPE iLO AHS: источник "HPE iLO" теперь корректно нормализуется в "bmc".

    Исправления chart viewer

    • JavaScript view.js не загружался в LOGPile из-за отсутствия перезаписи
      пути /static/view.js/chart/static/view.js. Исправлено; фильтры
      по колонкам в таблицах теперь работают.
    • Субмодуль chart обновлён до v2.7: фильтры вынесены в отдельную строку
      под заголовком, исправлена минимальная ширина колонок.

    Обновления зависимостей

    • pci.ids (база PCI-устройств) обновлена. Коллектор скорректирован под
      переименование 0x8086:0x28c0: "Volume Management Device NVMe RAID Controller""Volume Management Device (VMD)".

    Запуск на macOS

    Снимите карантинный атрибут через терминал: xattr -d com.apple.quarantine /path/to/logpile-darwin-arm64
    После этого бинарник запустится без предупреждения Gatekeeper.

    Downloads
  • v1.21 cd864c3d6c

    mchus released this 2026-06-15 17:56:17 +03:00 | 67 commits to main since this release

    Что нового

    Inspur/Kaytus (onekeylog) — серийные номера дисков из SOLHostCapture.log

    Когда RAID-контроллер (например, Microchip PM8204-2GB) подключён напрямую через PCIe,
    BMC возвращает пустой массив в секции RESTful HDD info. Серийники дисков теперь
    восстанавливаются из вывода smartd в SOLHostCapture.log:

    • Обрабатываются оба экземпляра файла (log/sollog/ и runningdata/var/sollog/),
      серийники дедуплицируются по обоим источникам.
    • Три прохода обогащения: совпадение по модели → позиционное заполнение пустых
      backplane-слотов → добавление новых записей.
    • Определяется тип (SSD/HDD), производитель, прошивка и ёмкость.

    Inspur/Kaytus — корректное определение live-сбора на NF-серверах

    NF-серверы хранения (например, NF5280M6) не имеют GPU-топологии, из-за чего
    Redfish-коллектор раньше не мог идентифицировать их как Inspur и переходил в
    режим fallback с AMI-профилем, пробуя несуществующие пути /Oem/Ami.

    Добавлено определение по SystemManufacturer / ChassisManufacturer: значение
    "Inspur" теперь даёт 60 очков — достаточно для входа в matched-режим без
    GPU-сигналов.

    Inspur/Kaytus — исправление IDL-событий GPU (Assert/Deassert)

    • Deassert-события больше не отбрасываются как дубликаты Assert — в ключ дедупликации
      добавлен EventType.
    • Deassert корректно снимает критический статус GPU: раньше GPUы оставались в Critical
      даже после сброса аварии.
    • В экспорт Reanimator добавлена секция bmc_event_summary — дедуплицированная таблица
      критических и предупреждающих событий со статусом Active/Resolved на основе пар
      Assert/Deassert.

    UI — кнопка PDF

    Добавлена кнопка «PDF» в шапку отчёта. При нажатии отчёт открывается в новой
    вкладке, откуда можно сохранить в PDF через системный диалог печати браузера.

    Внутренние изменения (bible-контракты)

    • Идентификаторы нормализованы через strings.EqualFold (H3C-парсер).
    • CSV-экспорт: UTF-8 BOM + разделитель ;.
    • Все русскоязычные строки в исходниках переведены на английский (ADL-007).
    • Job расширен полями Type, Message, Result.
    • List-эндпоинты обёрнуты в конверт {items, total_count, page, per_page, total_pages}.
    • Страницы ошибок рендерят footer с версией.
    • Логирование переведено на log/slog со структурированными атрибутами.

    pci.ids обновлён

    База идентификаторов PCI-устройств обновлена до актуальной версии от 2026-06-15.

    Запуск на macOS

    Снимите карантинный атрибут через терминал: xattr -d com.apple.quarantine /path/to/logpile-darwin-arm64
    После этого бинарник запустится без предупреждения Gatekeeper.

    Downloads
  • v1.19 47ff1c3796

    mchus released this 2026-06-12 03:58:55 +03:00 | 73 commits to main since this release

    NF-series storage servers (e.g. NF5280M6) have no GPU/outboard-PCIe
    topology, so the previous score gate (topologyScore==0 || boardScore==0
    → return 0) always produced score=0 despite SystemManufacturer="Inspur"
    being available. These servers fell into mode=fallback, activating the
    AMI profile and probing /Oem/Ami paths that don't exist on the BMC.

    Add manufacturer-based detection: SystemManufacturer or
    ChassisManufacturer containing "inspur" contributes 60 points —
    enough to enter matched mode on its own. GPU servers with full
    topology+board signals still score higher as before.

    Downloads
  • v1.18 440959483e

    mchus released this 2026-05-28 03:38:04 +03:00 | 76 commits to main since this release

    Three related fixes for IDL event processing:

    1. idl.go: include EventType in dedup key so Deassert events are no
      longer silently dropped as duplicates of their Assert counterparts.

    2. gpu_status.go: treat Deassert events as clearing all GPU faults —
      previously the code re-applied the same faulty GPU set from the
      description, leaving GPUs stuck in Critical even after alarm cleared.

    3. reanimator_models/converter: add bmc_event_summary section to the
      Reanimator export — a deduplicated Critical/Warning event table with
      Active/Resolved status derived from Assert/Deassert pairs.

    Downloads
  • v1.17 f3836a34cc

    logpile v1.17 Stable

    mchus released this 2026-05-21 14:37:26 +03:00 | 77 commits to main since this release

    Что нового

    Inspur/Kaytus (onekeylog) — исправления парсера

    • CPU не парсились из component.log — в архивах без asset.json количество процессоров всегда было 0. Добавлен парсинг секции RESTful CPU info в component.log как fallback. Заодно устранена коллизия при десериализации JSON: поле "PROC_ID" (строка с CPUID) и "proc_id" (int) совпадали по имени в case-insensitive режиме Go и вызывали ошибку при разборе.

    • DIMM показывался как отсутствующий при size=0 — часть прошивок BMC не возвращает ёмкость для установленного модуля, оставляя mem_mod_size=0. Раньше такой модуль помечался как Present=false и не отображался. Теперь DIMM считается установленным, если status=1 и заполнен хотя бы один из атрибутов: размер, серийный номер, парт-номер.

    • Ёмкость DIMM восстанавливается по парт-номеру — если несколько модулей одного парт-номера в одном архиве, и у части из них size=0, — пустые значения заполняются по аналогии с остальными модулями той же партии.

    • Версия микрокода не показывалась у второго процессора — дедупликация по значению версии удаляла запись CPU1 Microcode, когда оба сокета работают на одной версии. Теперь каждый CPU получает собственную запись в таблице прошивок.

    • Потеря данных по PSU при наличии ошибки PCIE-секции — регулярное выражение для парсинга блока питания использовало RESTful Network как правый якорь. В стандартном layouts component.log между секцией PSU и Network Adapters располагается секция PCIE Devices, которая в этом архиве возвращала JSON с ошибкой. Ленивый [\s\S]*? захватывал содержимое через ошибочный блок, формируя невалидный JSON и теряя все данные PSU. Якорь изменён на RESTful (?:PCIE|Network).

    Новая возможность: отображение ошибок сбора BMC

    Когда секции component.log (HDD, PCIe Devices, Network Adapters, Disk Backplane) возвращают {"error":"...","code":N} вместо данных, парсер теперь:

    • сохраняет ошибки в AnalysisResult.CollectionErrors (новое поле модели);
    • зеркалирует каждую в поток Events с Source=BMC/<section>, чтобы они были видны в таблице событий;
    • передаёт их в /api/parse-errors.

    В UI под iframe добавлена сворачиваемая панель «Collection diagnostics», которая появляется при наличии предупреждений от /api/parse-errors.

    Chart viewer — фильтры по столбцам

    Обновлён субмодуль chart до v2.0: в таблицах событий заменён общий dropdown на фильтры в заголовке каждого столбца.

    pci.ids обновлён

    База идентификаторов PCI-устройств обновлена с 2026-02-17 до 2026-05-21.

    Запуск на macOS

    Снимите карантинный атрибут через терминал: xattr -d com.apple.quarantine /path/to/logpile-darwin-arm64
    После этого бинарник запустится без предупреждения Gatekeeper.

    Downloads