Files
logpile/README.md
2026-02-04 19:49:05 +03:00

3.8 KiB
Raw Blame History

LOGPile

LOGPile — standalone Go-приложение для анализа диагностических данных BMC.

Поддерживает два сценария:

  1. Загрузка архивов/снапшотов и оффлайн-анализ в веб-интерфейсе.
  2. 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-amd64
  • bin/logpile-linux-arm64
  • bin/logpile-darwin-amd64
  • bin/logpile-darwin-arm64
  • bin/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 | api
  • protocol: redfish | ipmi (для архивов может быть пустым)
  • target_host
  • collected_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.