Files
logpile/CLAUDE.md
Michael Chus 512957545a Add LOGPile BMC diagnostic log analyzer
Features:
- Modular parser architecture for vendor-specific formats
- Inspur/Kaytus parser supporting asset.json, devicefrusdr.log,
  component.log, idl.log, and syslog files
- PCI Vendor/Device ID lookup for hardware identification
- Web interface with tabs: Events, Sensors, Config, Serials, Firmware
- Server specification summary with component grouping
- Export to CSV, JSON, TXT formats
- BMC alarm parsing from IDL logs (memory errors, PSU events, etc.)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 04:11:23 +03:00

7.7 KiB
Raw Blame History

BMC Analyzer - Инструкции для Claude Code

Описание проекта

Приложение для анализа диагностической информации с BMC серверов (IPMI). Представляет собой standalone Go-бинарник со встроенным веб-интерфейсом.

Функциональность

Входные данные:

  • Архив (tar.gz/zip) с диагностическими данными IPMI сервера

Обработка:

  • Парсинг System Event Log (SEL) - журнал событий IPMI
  • Парсинг FRU (Field Replaceable Unit) - серийные номера компонентов
  • Парсинг конфигурации сервера (CPU, RAM, диски, и т.д.)

Выходные данные:

  • Веб-интерфейс с человекочитаемой информацией
  • Экспорт логов в TXT/JSON
  • Экспорт конфигурации в JSON
  • Экспорт серийных номеров в CSV

Архитектура

  • Тип: Standalone бинарник с embedded веб-сервером
  • Язык: Go
  • UI: Embedded HTML + CSS + Vanilla JS (или Alpine.js)
  • Порт: localhost:8080 (по умолчанию)

Структура проекта

bmc-analyzer/
├── cmd/bmc-analyzer/main.go        # Точка входа
├── internal/
│   ├── parser/                      # Парсинг архивов и IPMI данных
│   ├── models/                      # Модели данных
│   ├── analyzer/                    # Логика анализа
│   ├── exporter/                    # Экспорт данных
│   └── server/                      # HTTP сервер и handlers
├── web/                             # Embedded веб-интерфейс
│   ├── static/                      # CSS, JS, изображения
│   └── templates/                   # HTML шаблоны
├── testdata/                        # Примеры архивов для тестов
├── go.mod
├── Makefile
└── README.md

Технический стек

Backend

  • Go 1.21+
  • Стандартная библиотека (net/http, archive/tar, compress/gzip)
  • embed для встраивания веб-ресурсов
  • Возможно: fiber или gin для роутинга (на ваше усмотрение)

Frontend

  • Vanilla JavaScript или Alpine.js (минимализм)
  • CSS (можно Tailwind CSS через CDN)
  • Без сборщиков - всё embedded в бинарник

Парсинг IPMI

  • SEL формат: обычно текстовый вывод ipmitool sel list или бинарный
  • FRU формат: вывод ipmitool fru print
  • Конфигурация: различные текстовые файлы из архива

Этапы разработки

1. Базовая структура ✓

  • Создана структура директорий
  • go.mod инициализирован
  • Makefile создан

2. Парсер архивов

  • Распаковка tar.gz
  • Распаковка zip
  • Определение типов файлов внутри архива

3. Парсеры IPMI данных

  • SEL parser (System Event Log)
  • FRU parser (серийные номера)
  • Config parser (конфигурация сервера)

4. Модели данных

  • Event (события из SEL)
  • Hardware (конфигурация)
  • SerialNumber (серийники компонентов)

5. Веб-сервер

  • HTTP сервер с embedded файлами
  • Upload handler для архивов
  • API endpoints для получения данных
  • Handlers для экспорта

6. Веб-интерфейс

  • Главная страница с upload формой
  • Отображение событий (timeline/таблица)
  • Отображение конфигурации
  • Таблица серийных номеров
  • Кнопки экспорта

7. Экспортеры

  • CSV экспорт (серийники)
  • JSON экспорт (конфиг, события)
  • TXT отчет (логи)

8. Тестирование и сборка

  • Unit тесты для парсеров
  • Интеграционные тесты
  • Cross-platform сборка (Linux, Windows, Mac)

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

# Простой запуск
./bmc-analyzer

# С указанием порта
./bmc-analyzer --port 9000

# С предзагрузкой файла
./bmc-analyzer --file /path/to/bmc-archive.tar.gz

# Кросс-компиляция
make build-all

Формат данных IPMI

SEL (System Event Log)

SEL Record ID          : 0001
 Record Type           : 02
 Timestamp             : 01/15/2025 14:23:45
 Generator ID          : 0020
 EvM Revision          : 04
 Sensor Type           : Temperature
 Sensor Number         : 01
 Event Type            : Threshold
 Event Direction       : Assertion Event
 Event Data            : 010000
 Description           : Upper Critical - going high

FRU (Field Replaceable Unit)

FRU Device Description : Builtin FRU Device (ID 0)
 Board Mfg Date        : Mon Jan  1 00:00:00 1996
 Board Mfg             : Supermicro
 Board Product         : X11DPH-T
 Board Serial          : WM194S001234
 Board Part Number     : X11DPH-TQ

API Endpoints (планируемые)

POST   /api/upload          # Загрузить архив
GET    /api/events          # Получить список событий
GET    /api/config          # Получить конфигурацию
GET    /api/serials         # Получить серийные номера
GET    /api/export/csv      # Экспорт в CSV
GET    /api/export/json     # Экспорт в JSON
GET    /api/export/txt      # Экспорт текстового отчета
DELETE /api/clear           # Очистить загруженные данные

Следующие шаги

  1. Инициализировать Go модуль
  2. Создать базовую структуру пакетов
  3. Реализовать парсер архивов (tar.gz)
  4. Создать простой HTTP сервер с upload формой
  5. Реализовать парсинг SEL логов
  6. Добавить веб-интерфейс для отображения данных

Примечания

  • Все файлы веб-интерфейса должны быть embedded в бинарник через //go:embed
  • Приоритет на простоту и минимум зависимостей
  • Безопасность: валидация загружаемых архивов (размер, типы файлов)
  • UI должен быть простым и функциональным, не перегруженным
  • Поддержка русского языка в интерфейсе

Вопросы для уточнения

  1. Какие конкретно производители BMC используются? (Supermicro, Dell iDRAC, HP iLO, etc.)
  2. Есть ли примеры реальных архивов для тестирования?
  3. Нужна ли поддержка разных форматов SEL (текстовый vs бинарный)?
  4. Какие метрики/события наиболее важны для анализа?
  5. Нужна ли фильтрация событий по severity (Critical, Warning, Info)?