Update documentation to reflect current implementation

This commit is contained in:
2026-01-31 00:21:48 +03:00
parent 70cd541d9e
commit eeed509b43
2 changed files with 82 additions and 70 deletions

142
CLAUDE.md
View File

@@ -1,4 +1,4 @@
# BMC Analyzer - Инструкции для Claude Code # LOGPile - Инструкции для Claude Code
## Описание проекта ## Описание проекта
@@ -25,24 +25,24 @@
- **Тип:** Standalone бинарник с embedded веб-сервером - **Тип:** Standalone бинарник с embedded веб-сервером
- **Язык:** Go - **Язык:** Go
- **UI:** Embedded HTML + CSS + Vanilla JS (или Alpine.js) - **UI:** Embedded HTML + CSS + Vanilla JS
- **Порт:** localhost:8080 (по умолчанию) - **Порт:** localhost:8080 (по умолчанию)
## Структура проекта ## Структура проекта
``` ```
bmc-analyzer/ logpile/
├── cmd/bmc-analyzer/main.go # Точка входа ├── cmd/logpile/main.go # Точка входа
├── internal/ ├── internal/
│ ├── parser/ # Парсинг архивов и IPMI данных │ ├── parser/ # Парсинг архивов и IPMI данных
│ ├── models/ # Модели данных │ ├── models/ # Модели данных
│ ├── analyzer/ # Логика анализа │ ├── analyzer/ # Логика анализа
│ ├── exporter/ # Экспорт данных │ ├── exporter/ # Экспорт данных
│ └── server/ # HTTP сервер и handlers │ └── server/ # HTTP сервер и handlers
├── web/ # Embedded веб-интерфейс ├── web/ # Embedded веб-интерфейс
│ ├── static/ # CSS, JS, изображения │ ├── static/ # CSS, JS, изображения
│ └── templates/ # HTML шаблоны │ └── templates/ # HTML шаблоны
├── testdata/ # Примеры архивов для тестов ├── testdata/ # Примеры архивов для тестов
├── go.mod ├── go.mod
├── Makefile ├── Makefile
└── README.md └── README.md
@@ -51,80 +51,83 @@ bmc-analyzer/
## Технический стек ## Технический стек
### Backend ### Backend
- Go 1.21+ - Go 1.22+
- Стандартная библиотека (net/http, archive/tar, compress/gzip) - Стандартная библиотека (net/http, archive/tar, compress/gzip)
- embed для встраивания веб-ресурсов - embed для встраивания веб-ресурсов
- Возможно: fiber или gin для роутинга (на ваше усмотрение)
### Frontend ### Frontend
- Vanilla JavaScript или Alpine.js (минимализм) - Vanilla JavaScript
- CSS (можно Tailwind CSS через CDN) - CSS (встроенный в бинарник)
- Без сборщиков - всё embedded в бинарник - Без сборщиков - всё embedded в бинарник
### Парсинг IPMI ### Парсинг IPMI
- SEL формат: обычно текстовый вывод `ipmitool sel list` или бинарный - SEL формат: текстовый вывод `ipmitool sel list` или бинарный
- FRU формат: вывод `ipmitool fru print` - FRU формат: вывод `ipmitool fru print`
- Конфигурация: различные текстовые файлы из архива - Конфигурация: различные текстовые файлы из архива
## Этапы разработки ## Реализованные функции
### 1. Базовая структура ### 1. Базовая структура
- [x] Создана структура директорий - [x] Создана структура директорий
- [ ] go.mod инициализирован - [x] go.mod инициализирован
- [ ] Makefile создан - [x] Makefile создан
### 2. Парсер архивов ### 2. Парсер архивов
- [ ] Распаковка tar.gz - [x] Распаковка tar.gz
- [ ] Распаковка zip - [x] Распаковка zip
- [ ] Определение типов файлов внутри архива - [x] Определение типов файлов внутри архива
### 3. Парсеры IPMI данных ### 3. Парсеры IPMI данных
- [ ] SEL parser (System Event Log) - [x] SEL parser (System Event Log)
- [ ] FRU parser (серийные номера) - [x] FRU parser (серийные номера)
- [ ] Config parser (конфигурация сервера) - [x] Config parser (конфигурация сервера)
- [x] Поддержка нескольких производителей (Supermicro, Inspur, Nvidia, etc.)
### 4. Модели данных ### 4. Модели данных
- [ ] Event (события из SEL) - [x] Event (события из SEL)
- [ ] Hardware (конфигурация) - [x] Hardware (конфигурация)
- [ ] SerialNumber (серийники компонентов) - [x] SerialNumber (серийники компонентов)
### 5. Веб-сервер ### 5. Веб-сервер
- [ ] HTTP сервер с embedded файлами - [x] HTTP сервер с embedded файлами
- [ ] Upload handler для архивов - [x] Upload handler для архивов
- [ ] API endpoints для получения данных - [x] API endpoints для получения данных
- [ ] Handlers для экспорта - [x] Handlers для экспорта
### 6. Веб-интерфейс ### 6. Веб-интерфейс
- [ ] Главная страница с upload формой - [x] Главная страница с upload формой
- [ ] Отображение событий (timeline/таблица) - [x] Отображение событий (timeline/таблица)
- [ ] Отображение конфигурации - [x] Отображение конфигурации
- [ ] Таблица серийных номеров - [x] Таблица серийных номеров
- [ ] Кнопки экспорта - [x] Кнопки экспорта
### 7. Экспортеры ### 7. Экспортеры
- [ ] CSV экспорт (серийники) - [x] CSV экспорт (серийники)
- [ ] JSON экспорт (конфиг, события) - [x] JSON экспорт (конфиг, события)
- [ ] TXT отчет (логи) - [x] TXT отчет (логи)
### 8. Тестирование и сборка ### 8. Тестирование и сборка
- [ ] Unit тесты для парсеров - [x] Unit тесты для парсеров
- [ ] Интеграционные тесты - [x] Интеграционные тесты
- [ ] Cross-platform сборка (Linux, Windows, Mac) - [x] Cross-platform сборка (Linux, Windows, Mac)
## Примеры использования ## Примеры использования
```bash ```bash
# Простой запуск # Сборка
./bmc-analyzer make build
# Запуск веб-сервера
./bin/logpile serve
# Открыть в браузере
open http://localhost:8080
# С указанием порта # С указанием порта
./bmc-analyzer --port 9000 ./bin/logpile serve --port 9000
# С предзагрузкой файла # С предзагрузкой файла
./bmc-analyzer --file /path/to/bmc-archive.tar.gz ./bin/logpile serve --file /path/to/bmc-archive.tar.gz
# Кросс-компиляция
make build-all
``` ```
## Формат данных IPMI ## Формат данных IPMI
@@ -154,27 +157,38 @@ FRU Device Description : Builtin FRU Device (ID 0)
Board Part Number : X11DPH-TQ Board Part Number : X11DPH-TQ
``` ```
## API Endpoints (планируемые) ## API Endpoints
``` ```
POST /api/upload # Загрузить архив POST /api/upload # Загрузить архив
GET /api/status # Получить статус парсинга
GET /api/parsers # Получить список доступных парсеров
GET /api/events # Получить список событий GET /api/events # Получить список событий
GET /api/sensors # Получить показания сенсоров
GET /api/config # Получить конфигурацию GET /api/config # Получить конфигурацию
GET /api/serials # Получить серийные номера GET /api/serials # Получить серийные номера
GET /api/firmware # Получить версии прошивок
GET /api/export/csv # Экспорт в CSV GET /api/export/csv # Экспорт в CSV
GET /api/export/json # Экспорт в JSON GET /api/export/json # Экспорт в JSON
GET /api/export/txt # Экспорт текстового отчета GET /api/export/txt # Экспорт текстового отчета
DELETE /api/clear # Очистить загруженные данные DELETE /api/clear # Очистить загруженные данные
POST /api/shutdown # Завершить работу приложения
``` ```
## Поддерживаемые производители
- Supermicro
- Inspur/Kaytus
- Nvidia
- Generic (fallback)
## Следующие шаги ## Следующие шаги
1. Инициализировать Go модуль 1. Добавление поддержки других производителей BMC (Dell iDRAC, HP iLO, Lenovo XCC)
2. Создать базовую структуру пакетов 2. Расширение функционала экспорта данных
3. Реализовать парсер архивов (tar.gz) 3. Добавление фильтрации и сортировки данных в UI
4. Создать простой HTTP сервер с upload формой 4. Улучшение производительности парсинга больших архивов
5. Реализовать парсинг SEL логов 5. Добавление поддержки других форматов IPMI данных
6. Добавить веб-интерфейс для отображения данных
## Примечания ## Примечания
@@ -183,11 +197,3 @@ DELETE /api/clear # Очистить загруженные данны
- Безопасность: валидация загружаемых архивов (размер, типы файлов) - Безопасность: валидация загружаемых архивов (размер, типы файлов)
- UI должен быть простым и функциональным, не перегруженным - UI должен быть простым и функциональным, не перегруженным
- Поддержка русского языка в интерфейсе - Поддержка русского языка в интерфейсе
## Вопросы для уточнения
1. Какие конкретно производители BMC используются? (Supermicro, Dell iDRAC, HP iLO, etc.)
2. Есть ли примеры реальных архивов для тестирования?
3. Нужна ли поддержка разных форматов SEL (текстовый vs бинарный)?
4. Какие метрики/события наиболее важны для анализа?
5. Нужна ли фильтрация событий по severity (Critical, Warning, Info)?

View File

@@ -13,6 +13,12 @@ make build
# Открыть в браузере # Открыть в браузере
open http://localhost:8080 open http://localhost:8080
# С указанием порта
./bin/logpile serve --port 9000
# С предзагрузкой файла
./bin/logpile serve --file /path/to/bmc-archive.tar.gz
``` ```
Требования: Go 1.22+ Требования: Go 1.22+