Files
logpile/CLAUDE.md

7.6 KiB
Raw Blame History

LOGPile - Инструкции для 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
  • Порт: localhost:8080 (по умолчанию)

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

logpile/
├── cmd/logpile/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.22+
  • Стандартная библиотека (net/http, archive/tar, compress/gzip)
  • embed для встраивания веб-ресурсов

Frontend

  • Vanilla JavaScript
  • CSS (встроенный в бинарник)
  • Без сборщиков - всё 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 (конфигурация сервера)
  • Поддержка нескольких производителей (Supermicro, Inspur, Nvidia, etc.)

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)

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

# Сборка
make build

# Запуск веб-сервера
./bin/logpile serve

# Открыть в браузере
open http://localhost:8080

# С указанием порта
./bin/logpile serve --port 9000

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

Формат данных 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/status          # Получить статус парсинга
GET    /api/parsers         # Получить список доступных парсеров
GET    /api/events          # Получить список событий
GET    /api/sensors         # Получить показания сенсоров
GET    /api/config          # Получить конфигурацию
GET    /api/serials         # Получить серийные номера
GET    /api/firmware        # Получить версии прошивок
GET    /api/export/csv      # Экспорт в CSV
GET    /api/export/json     # Экспорт в JSON
GET    /api/export/txt      # Экспорт текстового отчета
DELETE /api/clear           # Очистить загруженные данные
POST   /api/shutdown        # Завершить работу приложения

Поддерживаемые производители

  • Supermicro
  • Inspur/Kaytus
  • Nvidia
  • Generic (fallback)

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

  1. Добавление поддержки других производителей BMC (Dell iDRAC, HP iLO, Lenovo XCC)
  2. Расширение функционала экспорта данных
  3. Добавление фильтрации и сортировки данных в UI
  4. Улучшение производительности парсинга больших архивов
  5. Добавление поддержки других форматов IPMI данных

Примечания

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