# LogBoard+ - Веб-панель для просмотра логов микросервисов **Автор:** Сергей Антропов **Сайт:** https://devops.org.ru **Версия:** 1.0.0 ## 📋 Описание LogBoard+ - это современная веб-панель для просмотра логов Docker контейнеров в реальном времени. Приложение предоставляет удобный интерфейс для мониторинга логов микросервисов с поддержкой множественного просмотра, фильтрации, поиска и экспорта логов. ## ✨ Основные возможности ### 🔍 Просмотр логов - **Single View режим** - просмотр логов одного контейнера - **Multi View режим** - одновременный просмотр логов нескольких контейнеров - **Real-time обновление** через WebSocket соединения - **Автопрокрутка** логов - **Пауза/возобновление** потока логов ### 🎨 Интерфейс - **Современный адаптивный дизайн** - **Темная и светлая темы** - **Мобильная версия** - **Интуитивно понятная навигация** ### 🔧 Управление логами - **Фильтрация по уровням логирования** (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 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 среде.