Files
logpile/CLAUDE.md

199 lines
7.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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. Базовая структура
- [x] Создана структура директорий
- [x] go.mod инициализирован
- [x] Makefile создан
### 2. Парсер архивов
- [x] Распаковка tar.gz
- [x] Распаковка zip
- [x] Определение типов файлов внутри архива
### 3. Парсеры IPMI данных
- [x] SEL parser (System Event Log)
- [x] FRU parser (серийные номера)
- [x] Config parser (конфигурация сервера)
- [x] Поддержка нескольких производителей (Supermicro, Inspur, Nvidia, etc.)
### 4. Модели данных
- [x] Event (события из SEL)
- [x] Hardware (конфигурация)
- [x] SerialNumber (серийники компонентов)
### 5. Веб-сервер
- [x] HTTP сервер с embedded файлами
- [x] Upload handler для архивов
- [x] API endpoints для получения данных
- [x] Handlers для экспорта
### 6. Веб-интерфейс
- [x] Главная страница с upload формой
- [x] Отображение событий (timeline/таблица)
- [x] Отображение конфигурации
- [x] Таблица серийных номеров
- [x] Кнопки экспорта
### 7. Экспортеры
- [x] CSV экспорт (серийники)
- [x] JSON экспорт (конфиг, события)
- [x] TXT отчет (логи)
### 8. Тестирование и сборка
- [x] Unit тесты для парсеров
- [x] Интеграционные тесты
- [x] Cross-platform сборка (Linux, Windows, Mac)
## Примеры использования
```bash
# Сборка
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 должен быть простым и функциональным, не перегруженным
- Поддержка русского языка в интерфейсе