Update documentation to reflect current implementation
This commit is contained in:
146
CLAUDE.md
146
CLAUDE.md
@@ -1,8 +1,8 @@
|
||||
# BMC Analyzer - Инструкции для Claude Code
|
||||
# LOGPile - Инструкции для Claude Code
|
||||
|
||||
## Описание проекта
|
||||
|
||||
Приложение для анализа диагностической информации с BMC серверов (IPMI).
|
||||
Приложение для анализа диагностической информации с BMC серверов (IPMI).
|
||||
Представляет собой standalone Go-бинарник со встроенным веб-интерфейсом.
|
||||
|
||||
### Функциональность
|
||||
@@ -25,24 +25,24 @@
|
||||
|
||||
- **Тип:** Standalone бинарник с embedded веб-сервером
|
||||
- **Язык:** Go
|
||||
- **UI:** Embedded HTML + CSS + Vanilla JS (или Alpine.js)
|
||||
- **UI:** Embedded HTML + CSS + Vanilla JS
|
||||
- **Порт:** localhost:8080 (по умолчанию)
|
||||
|
||||
## Структура проекта
|
||||
|
||||
```
|
||||
bmc-analyzer/
|
||||
├── cmd/bmc-analyzer/main.go # Точка входа
|
||||
logpile/
|
||||
├── cmd/logpile/main.go # Точка входа
|
||||
├── internal/
|
||||
│ ├── parser/ # Парсинг архивов и IPMI данных
|
||||
│ ├── models/ # Модели данных
|
||||
│ ├── analyzer/ # Логика анализа
|
||||
│ ├── exporter/ # Экспорт данных
|
||||
│ └── server/ # HTTP сервер и handlers
|
||||
├── web/ # Embedded веб-интерфейс
|
||||
│ ├── static/ # CSS, JS, изображения
|
||||
│ └── templates/ # HTML шаблоны
|
||||
├── testdata/ # Примеры архивов для тестов
|
||||
│ ├── parser/ # Парсинг архивов и IPMI данных
|
||||
│ ├── models/ # Модели данных
|
||||
│ ├── analyzer/ # Логика анализа
|
||||
│ ├── exporter/ # Экспорт данных
|
||||
│ └── server/ # HTTP сервер и handlers
|
||||
├── web/ # Embedded веб-интерфейс
|
||||
│ ├── static/ # CSS, JS, изображения
|
||||
│ └── templates/ # HTML шаблоны
|
||||
├── testdata/ # Примеры архивов для тестов
|
||||
├── go.mod
|
||||
├── Makefile
|
||||
└── README.md
|
||||
@@ -51,80 +51,83 @@ bmc-analyzer/
|
||||
## Технический стек
|
||||
|
||||
### Backend
|
||||
- Go 1.21+
|
||||
- Go 1.22+
|
||||
- Стандартная библиотека (net/http, archive/tar, compress/gzip)
|
||||
- embed для встраивания веб-ресурсов
|
||||
- Возможно: fiber или gin для роутинга (на ваше усмотрение)
|
||||
|
||||
### Frontend
|
||||
- Vanilla JavaScript или Alpine.js (минимализм)
|
||||
- CSS (можно Tailwind CSS через CDN)
|
||||
- Vanilla JavaScript
|
||||
- CSS (встроенный в бинарник)
|
||||
- Без сборщиков - всё embedded в бинарник
|
||||
|
||||
### Парсинг IPMI
|
||||
- SEL формат: обычно текстовый вывод `ipmitool sel list` или бинарный
|
||||
- SEL формат: текстовый вывод `ipmitool sel list` или бинарный
|
||||
- FRU формат: вывод `ipmitool fru print`
|
||||
- Конфигурация: различные текстовые файлы из архива
|
||||
|
||||
## Этапы разработки
|
||||
## Реализованные функции
|
||||
|
||||
### 1. Базовая структура ✓
|
||||
### 1. Базовая структура
|
||||
- [x] Создана структура директорий
|
||||
- [ ] go.mod инициализирован
|
||||
- [ ] Makefile создан
|
||||
- [x] go.mod инициализирован
|
||||
- [x] Makefile создан
|
||||
|
||||
### 2. Парсер архивов
|
||||
- [ ] Распаковка tar.gz
|
||||
- [ ] Распаковка zip
|
||||
- [ ] Определение типов файлов внутри архива
|
||||
- [x] Распаковка tar.gz
|
||||
- [x] Распаковка zip
|
||||
- [x] Определение типов файлов внутри архива
|
||||
|
||||
### 3. Парсеры IPMI данных
|
||||
- [ ] SEL parser (System Event Log)
|
||||
- [ ] FRU parser (серийные номера)
|
||||
- [ ] Config parser (конфигурация сервера)
|
||||
- [x] SEL parser (System Event Log)
|
||||
- [x] FRU parser (серийные номера)
|
||||
- [x] Config parser (конфигурация сервера)
|
||||
- [x] Поддержка нескольких производителей (Supermicro, Inspur, Nvidia, etc.)
|
||||
|
||||
### 4. Модели данных
|
||||
- [ ] Event (события из SEL)
|
||||
- [ ] Hardware (конфигурация)
|
||||
- [ ] SerialNumber (серийники компонентов)
|
||||
- [x] Event (события из SEL)
|
||||
- [x] Hardware (конфигурация)
|
||||
- [x] SerialNumber (серийники компонентов)
|
||||
|
||||
### 5. Веб-сервер
|
||||
- [ ] HTTP сервер с embedded файлами
|
||||
- [ ] Upload handler для архивов
|
||||
- [ ] API endpoints для получения данных
|
||||
- [ ] Handlers для экспорта
|
||||
- [x] HTTP сервер с embedded файлами
|
||||
- [x] Upload handler для архивов
|
||||
- [x] API endpoints для получения данных
|
||||
- [x] Handlers для экспорта
|
||||
|
||||
### 6. Веб-интерфейс
|
||||
- [ ] Главная страница с upload формой
|
||||
- [ ] Отображение событий (timeline/таблица)
|
||||
- [ ] Отображение конфигурации
|
||||
- [ ] Таблица серийных номеров
|
||||
- [ ] Кнопки экспорта
|
||||
- [x] Главная страница с upload формой
|
||||
- [x] Отображение событий (timeline/таблица)
|
||||
- [x] Отображение конфигурации
|
||||
- [x] Таблица серийных номеров
|
||||
- [x] Кнопки экспорта
|
||||
|
||||
### 7. Экспортеры
|
||||
- [ ] CSV экспорт (серийники)
|
||||
- [ ] JSON экспорт (конфиг, события)
|
||||
- [ ] TXT отчет (логи)
|
||||
- [x] CSV экспорт (серийники)
|
||||
- [x] JSON экспорт (конфиг, события)
|
||||
- [x] TXT отчет (логи)
|
||||
|
||||
### 8. Тестирование и сборка
|
||||
- [ ] Unit тесты для парсеров
|
||||
- [ ] Интеграционные тесты
|
||||
- [ ] Cross-platform сборка (Linux, Windows, Mac)
|
||||
- [x] Unit тесты для парсеров
|
||||
- [x] Интеграционные тесты
|
||||
- [x] Cross-platform сборка (Linux, Windows, Mac)
|
||||
|
||||
## Примеры использования
|
||||
|
||||
```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
|
||||
|
||||
# Кросс-компиляция
|
||||
make build-all
|
||||
./bin/logpile serve --file /path/to/bmc-archive.tar.gz
|
||||
```
|
||||
|
||||
## Формат данных IPMI
|
||||
@@ -154,27 +157,38 @@ FRU Device Description : Builtin FRU Device (ID 0)
|
||||
Board Part Number : X11DPH-TQ
|
||||
```
|
||||
|
||||
## API Endpoints (планируемые)
|
||||
## 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. Инициализировать Go модуль
|
||||
2. Создать базовую структуру пакетов
|
||||
3. Реализовать парсер архивов (tar.gz)
|
||||
4. Создать простой HTTP сервер с upload формой
|
||||
5. Реализовать парсинг SEL логов
|
||||
6. Добавить веб-интерфейс для отображения данных
|
||||
1. Добавление поддержки других производителей BMC (Dell iDRAC, HP iLO, Lenovo XCC)
|
||||
2. Расширение функционала экспорта данных
|
||||
3. Добавление фильтрации и сортировки данных в UI
|
||||
4. Улучшение производительности парсинга больших архивов
|
||||
5. Добавление поддержки других форматов IPMI данных
|
||||
|
||||
## Примечания
|
||||
|
||||
@@ -182,12 +196,4 @@ DELETE /api/clear # Очистить загруженные данны
|
||||
- Приоритет на простоту и минимум зависимостей
|
||||
- Безопасность: валидация загружаемых архивов (размер, типы файлов)
|
||||
- UI должен быть простым и функциональным, не перегруженным
|
||||
- Поддержка русского языка в интерфейсе
|
||||
|
||||
## Вопросы для уточнения
|
||||
|
||||
1. Какие конкретно производители BMC используются? (Supermicro, Dell iDRAC, HP iLO, etc.)
|
||||
2. Есть ли примеры реальных архивов для тестирования?
|
||||
3. Нужна ли поддержка разных форматов SEL (текстовый vs бинарный)?
|
||||
4. Какие метрики/события наиболее важны для анализа?
|
||||
5. Нужна ли фильтрация событий по severity (Critical, Warning, Info)?
|
||||
- Поддержка русского языка в интерфейсе
|
||||
Reference in New Issue
Block a user