logboard/README.md
Sergey Antropoff 749b40a494 feat: улучшения UI/UX LogBoard+
- Добавлена кнопка Update для управления AJAX auto-update
- AJAX auto-update включен по умолчанию
- Улучшено управление видимостью кнопки Refresh
- Переупорядочены кнопки в header (Update, Refresh)
- Унифицированы стили кнопок (высота, шрифт, границы)
- Добавлен hover эффект для кнопки options с цветом warning
- Позиционирование help-btn в свернутом sidebar
- Уменьшена ширина свернутого sidebar на 30%
- Добавлена логика разворачивания sidebar при клике на options
- Отображение внешнего порта в статусе контейнера
- Показ 'standalone' для контейнеров без проекта
- Обновлена документация

Автор: Сергей Антропов
Сайт: https://devops.org.ru
2025-08-18 20:32:46 +03:00

460 lines
17 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# LogBoard+ - Веб-панель для просмотра логов микросервисов
**Автор:** Сергей Антропов
**Сайт:** https://devops.org.ru
**Версия:** 1.0.0
## 📋 Описание
LogBoard+ - это современная веб-панель для просмотра логов Docker контейнеров в реальном времени. Приложение предоставляет удобный интерфейс для мониторинга логов микросервисов с поддержкой множественного просмотра, фильтрации, поиска и экспорта логов.
## ✨ Основные возможности
### 🔍 Просмотр логов
- **Single View режим** - просмотр логов одного контейнера
- **Multi View режим** - одновременный просмотр логов нескольких контейнеров
- **Real-time обновление** через WebSocket соединения
- **AJAX обновление** - периодическое получение новых логов без WebSocket
- **Умное управление кнопками** - кнопка refresh скрывается при включенном AJAX autoupdate, кнопка update показывает состояние
- **Автопрокрутка** логов
- **Пауза/возобновление** потока логов
### 🎨 Интерфейс
- **Современный адаптивный дизайн**
- **Темная и светлая темы**
- **Мобильная версия**
- **Интуитивно понятная навигация**
### 🔧 Управление логами
- **Фильтрация по уровням логирования** (DEBUG, INFO, WARN, ERROR, OTHER)
- **Поиск по регулярным выражениям**
- **Настройка количества строк** (Tail Lines)
- **Перенос строк** (Word Wrap)
- **Счетчики логов** по уровням
### 📊 Статистика и мониторинг
- **Счетчики логов** в реальном времени
- **Статистика по уровням логирования**
- **Мониторинг состояния контейнеров**
- **Health check статусы**
### 💾 Экспорт и сохранение
- **Скачивание логов** в формате .log
- **Отдельные файлы** для каждого контейнера в Multi View режиме
- **Автоматическое именование файлов** с временными метками
- **Сохранение снимков** логов
### 🔐 Безопасность
- **JWT аутентификация**
- **Настраиваемые пользователи**
- **Защищенные API endpoints**
- **Шифрование чувствительных данных**
## 🚀 Быстрый старт
### Предварительные требования
- Docker и Docker Compose
- Python 3.8+
- Доступ к Docker socket
### Установка и запуск
1. **Клонирование репозитория**
```bash
git clone <repository-url>
cd logboard
```
2. **Настройка переменных окружения**
```bash
make setup
# Отредактируйте .env файл под свои нужды
```
3. **Генерация docker-compose.yml**
```bash
make generate
```
4. **Запуск приложения**
```bash
make up
```
5. **Открытие в браузере**
```
http://localhost:9001
```
### Команды управления
```bash
make help # Показать справку по командам
make setup # Настроить переменные окружения
make generate # Сгенерировать docker-compose.yml
make build # Собрать Docker образ
make up # Запустить сервисы
make down # Остановить сервисы
make restart # Перезапустить сервисы
make logs # Показать логи
make status # Показать статус сервисов
make shell # Подключиться к контейнеру
make clean # Очистить проект
```
## ⚙️ Конфигурация
### Основные настройки (.env)
```bash
# Основные настройки приложения
LOGBOARD_PORT=9001 # Порт приложения
LOGBOARD_TAIL=500 # Количество строк логов по умолчанию
LOGBOARD_USER=admin # Имя пользователя
LOGBOARD_PASS=s3cret-change-me # Пароль
# Директория для снимков логов
LOGBOARD_SNAPSHOT_DIR=/app/snapshots
# Фильтр по проекту Docker Compose
COMPOSE_PROJECT_NAME=myproj
# Настройки множественных проектов
LOGBOARD_PROJECTS=project1,project2,project3
# Настройки безопасности
SECRET_KEY=your-secret-key-here
ENCRYPTION_KEY=your-encryption-key-here
# Настройки производительности
MAX_CONNECTIONS=100
CONNECTION_TIMEOUT=30
READ_TIMEOUT=60
# Настройки аутентификации
AUTH_ENABLED=true
AUTH_METHOD=jwt
SESSION_TIMEOUT=3600
```
### Docker сети
Приложение поддерживает подключение к внешним Docker сетям:
```yaml
networks:
- default: {}
- iaas:
external: true
- infrastructure_iaas:
external: true
```
## 🔌 API Endpoints
### Аутентификация
- `POST /api/auth/login` - Вход в систему
- `POST /api/auth/logout` - Выход из системы
- `GET /api/auth/me` - Информация о текущем пользователе
### Сервисы и контейнеры
- `GET /api/services` - Список всех сервисов/контейнеров
- `GET /api/projects` - Список проектов Docker Compose
- `GET /api/logs/stats/{container_id}` - Статистика логов контейнера
### Управление исключениями
- `GET /api/excluded-containers` - Список исключенных контейнеров
- `POST /api/excluded-containers` - Добавить контейнер в исключения
### Снимки логов
- `POST /api/snapshot` - Создать снимок логов
### WebSocket endpoints
- `WS /ws/logs/{container_id}` - Поток логов контейнера
- `WS /ws/fan/{service_name}` - Агрегированный поток логов сервиса
- `WS /ws/fan_group` - Групповой поток логов
### Системные
- `GET /healthz` - Проверка здоровья приложения
- `GET /` - Главная страница
- `GET /login` - Страница входа
## 🎯 Режимы просмотра
### Single View режим
- Просмотр логов одного выбранного контейнера
- Полноэкранный режим отображения
- Детальная статистика по уровням логирования
- Возможность паузы и возобновления потока
### Multi View режим
- Одновременный просмотр логов нескольких контейнеров
- Адаптивная сетка (1-4 колонки в зависимости от количества контейнеров)
- Отдельные счетчики для каждого контейнера
- Возможность скачивания отдельных файлов логов для каждого контейнера
## 🔍 Фильтрация и поиск
### Уровни логирования
- **DEBUG** - Отладочная информация
- **INFO** - Информационные сообщения
- **WARN** - Предупреждения
- **ERROR** - Ошибки
- **OTHER** - Прочие сообщения
### Поиск
- **Регулярные выражения** для поиска в логах
- **Фильтрация в реальном времени**
- **Подсветка найденных совпадений**
### Настройки отображения
- **Tail Lines** - количество отображаемых строк
- **Word Wrap** - перенос длинных строк
- **Автопрокрутка** - автоматическая прокрутка к новым логам
## ⌨️ Горячие клавиши
### Навигация по контейнерам
- **`[`** или **`Ctrl + ←`** - Переключение к предыдущему контейнеру
- **`]`** или **`Ctrl + →`** - Переключение к следующему контейнеру
### Тема оформления
- **`Ctrl + T`** - Переключение между темной и светлой темой
### Формы и ввод
- **`Enter`** - В форме входа: отправка формы авторизации
- **`Enter`** - В поле добавления исключений: добавление контейнера в исключения
### Условия работы горячих клавиш
- Горячие клавиши работают только когда фокус не находится в полях ввода
- Навигация по контейнерам работает только в Single View режиме
- Переключение темы работает на всех страницах приложения
## 📱 Мобильная версия
Приложение полностью адаптивно и поддерживает:
- **Адаптивный дизайн** для мобильных устройств
- **Сенсорное управление**
- **Оптимизированный интерфейс** для маленьких экранов
- **Боковое меню** для мобильных устройств
## 🔧 Расширенные возможности
### Управление проектами
- **Множественные проекты** Docker Compose
- **Фильтрация по проектам**
- **Переключение между проектами**
### Исключения контейнеров
- **Добавление контейнеров в исключения**
- **Постоянное хранение исключений**
- **Управление через веб-интерфейс**
### Мониторинг состояния
- **Health check статусы** контейнеров
- **Фильтрация нездоровых контейнеров**
- **Автоматическое обновление статусов**
### Производительность
- **Ограничение количества соединений**
- **Таймауты для операций**
- **Оптимизированная обработка логов**
- **Кэширование данных**
## 🛠️ Разработка
### Структура проекта
```
logboard/
├── app.py # Основное приложение FastAPI
├── docker-compose.yml # Конфигурация Docker Compose
├── Dockerfile # Docker образ
├── requirements.txt # Зависимости Python
├── templates/ # HTML шаблоны
│ ├── index.html # Главная страница
│ ├── login.html # Страница входа
│ └── error.html # Страницы ошибок
├── scripts/ # Вспомогательные скрипты
│ └── generate-compose.py
├── snapshots/ # Директория для снимков логов
├── Makefile # Команды управления
├── env.example # Пример переменных окружения
└── README.md # Документация
```
### Технологии
- **Backend**: FastAPI, Python 3.8+
- **Frontend**: HTML5, CSS3, JavaScript (ES6+)
- **WebSocket**: Асинхронные соединения для real-time логов
- **Docker**: Интеграция с Docker API
- **JWT**: Аутентификация и авторизация
- **Docker Compose**: Управление контейнерами
### Разработка и отладка
```bash
# Запуск в режиме разработки
make dev
# Подключение к контейнеру
make shell
# Просмотр логов
make logs
# Пересборка
make rebuild
```
## 🔒 Безопасность
### Аутентификация
- **JWT токены** для сессий
- **Настраиваемые пользователи** через переменные окружения
- **Автоматический выход** по истечении сессии
- **Защищенные API endpoints**
### Шифрование
- **Шифрование чувствительных данных** с помощью Fernet
- **Безопасное хранение** токенов и паролей
- **Защищенные переменные окружения**
### Сетевая безопасность
- **HTTPS поддержка** (при настройке)
- **Валидация входных данных**
- **Защита от XSS и CSRF атак**
## 📊 Мониторинг и логирование
### Логирование приложения
- **Настраиваемые уровни логирования** (DEBUG, INFO, WARN, ERROR)
- **JSON формат** логов
- **Структурированное логирование**
### Метрики
- **Количество активных соединений**
- **Статистика WebSocket соединений**
- **Время отклика API**
- **Использование ресурсов**
### Health checks
- **Проверка состояния** приложения
- **Мониторинг Docker соединения**
- **Проверка доступности** зависимостей
## 🚀 Развертывание
### Продакшн настройки
1. **Настройка безопасности**
```bash
# Измените секретные ключи
SECRET_KEY=your-production-secret-key
ENCRYPTION_KEY=your-production-encryption-key
# Настройте пользователей
LOGBOARD_USER=your-admin-user
LOGBOARD_PASS=your-secure-password
```
2. **Настройка сети**
```bash
# Настройте внешние сети
DOCKER_NETWORKS=your-network1,your-network2
```
3. **Настройка производительности**
```bash
# Увеличьте лимиты для продакшна
MAX_CONNECTIONS=500
CONNECTION_TIMEOUT=60
READ_TIMEOUT=120
```
### Docker Swarm
```yaml
version: '3.8'
services:
logboard:
image: logboard:latest
deploy:
replicas: 2
resources:
limits:
memory: 512M
reservations:
memory: 256M
networks:
- logboard-network
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- logboard-snapshots:/app/snapshots
```
### Kubernetes
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: logboard
spec:
replicas: 2
selector:
matchLabels:
app: logboard
template:
metadata:
labels:
app: logboard
spec:
containers:
- name: logboard
image: logboard:latest
ports:
- containerPort: 9001
volumeMounts:
- name: docker-sock
mountPath: /var/run/docker.sock
- name: snapshots
mountPath: /app/snapshots
volumes:
- name: docker-sock
hostPath:
path: /var/run/docker.sock
- name: snapshots
persistentVolumeClaim:
claimName: logboard-snapshots
```
## 🤝 Поддержка и обратная связь
### Автор
- **Сергей Антропов**
- **Сайт**: https://devops.org.ru
- **Email**: [contact@devops.org.ru]
### Сообщество
- **Issues**: Сообщайте о багах и предлагайте улучшения
- **Pull Requests**: Приветствуются вклады в развитие проекта
- **Документация**: Помогите улучшить документацию
### Лицензия
Проект распространяется под лицензией MIT.
## 📝 Changelog
### v1.0.0 (2024-12-17)
- ✨ Первый релиз LogBoard+
- 🔍 Поддержка Single View и Multi View режимов
- 🔐 JWT аутентификация
- 📱 Адаптивный дизайн
- 🔧 Полная интеграция с Docker API
- 📊 Статистика и мониторинг логов
- 💾 Экспорт логов в файлы
- 🎨 Темная и светлая темы
---
**LogBoard+** - современное решение для мониторинга логов микросервисов в Docker среде.