Add LOGPile BMC diagnostic log analyzer
Features: - Modular parser architecture for vendor-specific formats - Inspur/Kaytus parser supporting asset.json, devicefrusdr.log, component.log, idl.log, and syslog files - PCI Vendor/Device ID lookup for hardware identification - Web interface with tabs: Events, Sensors, Config, Serials, Firmware - Server specification summary with component grouping - Export to CSV, JSON, TXT formats - BMC alarm parsing from IDL logs (memory errors, PSU events, etc.) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
131
web/templates/index.html
Normal file
131
web/templates/index.html
Normal file
@@ -0,0 +1,131 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>LOGPile - BMC Log Analyzer</title>
|
||||
<link rel="stylesheet" href="/static/css/style.css">
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1>LOGPile</h1>
|
||||
<p>Анализатор диагностических данных BMC/IPMI</p>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<section id="upload-section">
|
||||
<div class="upload-area" id="drop-zone">
|
||||
<p>Перетащите архив сюда или</p>
|
||||
<input type="file" id="file-input" accept="application/gzip,application/x-gzip,application/x-tar,application/zip" hidden>
|
||||
<button type="button" onclick="document.getElementById('file-input').click()">Выберите файл</button>
|
||||
<p class="hint">Поддерживаемые форматы: tar.gz, zip</p>
|
||||
</div>
|
||||
<div id="upload-status"></div>
|
||||
</section>
|
||||
|
||||
<section id="data-section" class="hidden">
|
||||
<nav class="tabs">
|
||||
<button class="tab active" data-tab="config">Конфигурация</button>
|
||||
<button class="tab" data-tab="firmware">Прошивки</button>
|
||||
<button class="tab" data-tab="sensors">Сенсоры</button>
|
||||
<button class="tab" data-tab="serials">Серийные номера</button>
|
||||
<button class="tab" data-tab="events">События</button>
|
||||
</nav>
|
||||
|
||||
<div class="tab-content active" id="config">
|
||||
<div class="toolbar">
|
||||
<button onclick="exportData('json')">Экспорт JSON</button>
|
||||
<button onclick="exportData('txt')">Экспорт TXT</button>
|
||||
</div>
|
||||
<div id="config-content"></div>
|
||||
</div>
|
||||
|
||||
<div class="tab-content" id="firmware">
|
||||
<div class="toolbar">
|
||||
<span class="toolbar-label">Версии прошивок компонентов</span>
|
||||
</div>
|
||||
<table id="firmware-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Компонент</th>
|
||||
<th>Версия</th>
|
||||
<th>Дата сборки</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="tab-content" id="sensors">
|
||||
<div class="toolbar">
|
||||
<select id="sensor-filter">
|
||||
<option value="">Все сенсоры</option>
|
||||
<option value="temperature">Температура</option>
|
||||
<option value="voltage">Напряжение</option>
|
||||
<option value="power">Мощность</option>
|
||||
<option value="fan_speed">Вентиляторы</option>
|
||||
</select>
|
||||
</div>
|
||||
<div id="sensors-content"></div>
|
||||
</div>
|
||||
|
||||
<div class="tab-content" id="serials">
|
||||
<div class="toolbar">
|
||||
<select id="serial-filter">
|
||||
<option value="">Все компоненты</option>
|
||||
<option value="Board">Материнская плата</option>
|
||||
<option value="CPU">Процессоры</option>
|
||||
<option value="Memory">Память</option>
|
||||
<option value="Storage">Накопители</option>
|
||||
<option value="PCIe">PCIe устройства</option>
|
||||
<option value="Network">Сетевые адаптеры</option>
|
||||
<option value="PSU">Блоки питания</option>
|
||||
<option value="FRU">FRU</option>
|
||||
</select>
|
||||
<button onclick="exportData('csv')">Экспорт CSV</button>
|
||||
</div>
|
||||
<table id="serials-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Категория</th>
|
||||
<th>Компонент</th>
|
||||
<th>Серийный номер</th>
|
||||
<th>Производитель</th>
|
||||
<th>Part Number</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="tab-content" id="events">
|
||||
<div class="toolbar">
|
||||
<select id="severity-filter">
|
||||
<option value="">Все события</option>
|
||||
<option value="critical">Критические</option>
|
||||
<option value="warning">Предупреждения</option>
|
||||
<option value="info">Информационные</option>
|
||||
</select>
|
||||
</div>
|
||||
<table id="events-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Время</th>
|
||||
<th>Источник</th>
|
||||
<th>Описание</th>
|
||||
<th>Важность</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<button id="clear-btn" class="hidden" onclick="clearData()">Очистить данные</button>
|
||||
</footer>
|
||||
|
||||
<script src="/static/js/app.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user