Update documentation to reflect current implementation
This commit is contained in:
124
CLAUDE.md
124
CLAUDE.md
@@ -1,4 +1,4 @@
|
|||||||
# BMC Analyzer - Инструкции для Claude Code
|
# LOGPile - Инструкции для Claude Code
|
||||||
|
|
||||||
## Описание проекта
|
## Описание проекта
|
||||||
|
|
||||||
@@ -25,14 +25,14 @@
|
|||||||
|
|
||||||
- **Тип:** 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/ # Модели данных
|
||||||
@@ -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)?
|
|
||||||
|
|||||||
@@ -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+
|
||||||
Reference in New Issue
Block a user