3.8 KiB
3.8 KiB
LOGPile
LOGPile — standalone Go-приложение для анализа диагностических данных BMC.
Поддерживает два сценария:
- Загрузка архивов/снапшотов и оффлайн-анализ в веб-интерфейсе.
- Live-сбор через Redfish API с последующим экспортом и повторной загрузкой оффлайн.
Что умеет
- Standalone бинарник с embedded UI (без внешних статических файлов).
- Парсинг vendor-архивов (Supermicro, Inspur/Kaytus, NVIDIA, fallback generic).
- Live-сбор по Redfish (
/api/collect) с прогрессом и журналом шагов. - Расширенный Redfish snapshot:
- нормализованные данные (CPU/RAM/Storage/GPU/PSU/NIC/PCIe/Firmware),
- сырой
redfish_treeдля будущего анализа.
- Загрузка JSON snapshot обратно через
/api/uploadдля оффлайн-работы. - Экспорт в CSV / JSON / TXT.
Требования
- Go 1.22+
Сборка
make build
Бинарник будет в bin/logpile.
Для кросс-сборки:
make build-all
Артефакты:
bin/logpile-linux-amd64bin/logpile-linux-arm64bin/logpile-darwin-amd64bin/logpile-darwin-arm64bin/logpile-windows-amd64.exe
Запуск
./bin/logpile
./bin/logpile --port 8082
./bin/logpile --no-browser
./bin/logpile --version
Отладка падений (чтобы консоль не закрывалась):
./bin/logpile --hold-on-crash
На Windows
--hold-on-crashвключён по умолчанию.
Форматы загрузки
POST /api/upload принимает:
- архивы:
.tar,.tar.gz,.tgz - JSON snapshot (
AnalysisResult)
Live Redfish
Запуск live-сбора:
POST /api/collect
Пример body:
{
"host": "bmc01.example.local",
"protocol": "redfish",
"port": 443,
"username": "admin",
"auth_type": "password",
"password": "secret",
"tls_mode": "insecure"
}
Жизненный цикл задачи:
queued -> running -> success|failed|canceled
Статус и прогресс:
GET /api/collect/{id}POST /api/collect/{id}/cancel
Экспорт
GET /api/export/csv— серийные номераGET /api/export/json— полныйAnalysisResult(включаяraw_payloads)GET /api/export/txt— табличный отчёт по разделам UI
Имена экспортируемых файлов:
YYYY-MM-DD (SERVER MODEL) - SERVER SN.<ext>
Пример:
2026-02-04 (SYS-421GE-TNHR2) - C8X123456789.json
API
POST /api/upload
POST /api/collect
GET /api/collect/{id}
POST /api/collect/{id}/cancel
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
GET /api/export/json
GET /api/export/txt
DELETE /api/clear
POST /api/shutdown
/api/status и /api/config содержат метаданные источника:
source_type:archive|apiprotocol:redfish|ipmi(для архивов может быть пустым)target_hostcollected_at
Структура
cmd/logpile/main.go # entrypoint
internal/collector/ # live collectors (redfish, ipmi mock)
internal/parser/ # archive parsers
internal/server/ # HTTP handlers
internal/exporter/ # CSV/JSON/TXT export
internal/models/ # data contracts
web/ # embedded templates/static
Лицензия
MIT — см. LICENSE.