Files
logpile/internal/parser/vendors/nvidia
..

NVIDIA Field Diagnostics Parser

Парсер для диагностических архивов NVIDIA HGX Field Diagnostics. Универсальный парсер, не привязанный к конкретному производителю серверов.

Поддерживаемые архивы

  • NVIDIA HGX Field Diag (работает с любыми серверами: Supermicro, Dell, HPE, и т.д.)
  • Архивы с результатами GPU диагностики NVIDIA

Формат архива

Парсер работает с архивами в формате:

  • .tar (несжатый tar)
  • .tar.gz (сжатый gzip)

Распознаваемые файлы

Основные файлы

  1. output.log - вывод dmidecode с информацией о системе

    • Производитель сервера (Manufacturer)
    • Модель сервера (Product Name) - например, SYS-821GE-TNHR
    • Серийный номер сервера (Serial Number) - например, A514359X5A07900
    • UUID, SKU Number, Family
  2. unified_summary.json - детальная информация о системе и компонентах

    • Информация о GPU (модель, производитель, VBIOS, PCI адреса)
    • Информация о NVSwitch (VendorID, DeviceID, Link speed/width)
    • Информация о производителе и модели сервера
  3. summary.json - результаты тестов диагностики

    • Результаты тестов GPU (inforom, checkinforom, gpumem, gpustress, pcie, nvlink, nvswitch, power)
    • Коды ошибок и статусы тестов
  4. summary.csv - альтернативный формат результатов тестов

Дополнительные файлы

  • gpu_fieldiag/*.log - детальные логи диагностики каждого GPU
  • inventory/*.json - дополнительная информация о конфигурации

Извлекаемые данные

Hardware Configuration

GPUs

{
  "slot": "GPUSXM1",
  "model": "NVIDIA Device 2335",
  "manufacturer": "NVIDIA Corporation",
  "firmware": "96.00.D0.00.03",
  "bdf": "0000:3a:00.0"
}

NVSwitch (как PCIe устройства)

{
  "slot": "NVSWITCHNVSWITCH0",
  "device_class": "NVSwitch",
  "manufacturer": "NVIDIA Corporation",
  "vendor_id": 4318,
  "device_id": 8867,
  "bdf": "0000:05:00.0",
  "link_speed": "16GT/s",
  "link_width": 2
}

Events

События создаются для:

  • Предупреждений и ошибок тестов диагностики
  • Примеры событий:
    • Row remapping failed - ошибка памяти GPU (Warning)
    • Различные тесты: connectivity, gpumem, gpustress, pcie, nvlink, nvswitch, power

Уровни severity:

  • info - информационные события (тесты прошли успешно)
  • warning - предупреждения (например, Row remapping failed)
  • critical - критические ошибки (коды ошибок 300+)

Пример использования

# Запуск веб-интерфейса
./logpile --file /path/to/A514359X5A07900_logs-20260122-074208.tar

# Веб-интерфейс будет доступен на http://localhost:8082

Автоопределение

Парсер автоматически определяет архивы NVIDIA Field Diag по наличию:

  • unified_summary.json с маркером "HGX Field Diag"
  • summary.json и summary.csv с результатами тестов
  • Директории gpu_fieldiag/

Confidence score:

  • unified_summary.json с маркером "HGX Field Diag": +40
  • summary.json: +20
  • summary.csv: +15
  • gpu_fieldiag/ directory: +15

Версионирование

Текущая версия парсера: 1.1.0

При модификации логики парсера необходимо увеличивать версию в константе parserVersion в файле parser.go.

История версий

  • 1.1.0 - Добавлен парсинг output.log (dmidecode) для извлечения модели и серийного номера сервера
  • 1.0.0 - Первоначальная версия с парсингом unified_summary.json и summary.json/csv

Примеры данных

Пример unified_summary.json

{
  "runInfo": {
    "diagVersion": "24287-XXXX-FLD-42658",
    "diagName": "HGX Field Diag",
    "finalResult": "FAIL",
    "errorCode": 363
  },
  "tests": [{
    "virtualId": "inventory",
    "components": [{
      "componentId": "GPUSXM1",
      "properties": [
        {"id": "Manufacturer", "value": "Any Server Vendor"},
        {"id": "VendorID", "value": "10de"},
        {"id": "DeviceID", "value": "2335"}
      ]
    }]
  }]
}

Пример summary.json

[
  {
    "Error Code": "005-000-1-000000000363",
    "Test": "gpumem",
    "Component ID": "SXM5_SN_1653925025497",
    "Notes": "Row remapping failed",
    "Virtual ID": "gpumem"
  }
]

Известные ограничения

  1. Парсер фокусируется на данных из unified_summary.json и summary.json
  2. Детальные логи из gpu_fieldiag/*.log пока не парсятся
  3. Информация о CPU, памяти и дисках не извлекается (в архиве отсутствует)

Разработка

Добавление новых полей

  1. Изучите структуру JSON в архиве
  2. Добавьте поля в структуры Component или Property
  3. Обновите функции parseGPUComponent или parseNVSwitchComponent
  4. Увеличьте версию парсера

Добавление новых типов файлов

  1. Создайте новый файл с парсером (например, gpu_logs.go)
  2. Добавьте парсинг в функцию Parse() в parser.go
  3. Обновите документацию