From eeed509b439367e05ca9559cb80effef9a25ccf7 Mon Sep 17 00:00:00 2001 From: Michael Chus Date: Sat, 31 Jan 2026 00:21:48 +0300 Subject: [PATCH] Update documentation to reflect current implementation --- CLAUDE.md | 146 ++++++++++++++++++++++++++++-------------------------- README.md | 6 +++ 2 files changed, 82 insertions(+), 70 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index d32f3c7..82cf5d9 100644 --- a/CLAUDE.md +++ b/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)? +- Поддержка русского языка в интерфейсе \ No newline at end of file diff --git a/README.md b/README.md index cdf8758..b487135 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,12 @@ make build # Открыть в браузере open http://localhost:8080 + +# С указанием порта +./bin/logpile serve --port 9000 + +# С предзагрузкой файла +./bin/logpile serve --file /path/to/bmc-archive.tar.gz ``` Требования: Go 1.22+ \ No newline at end of file