logboard/README.md
Сергей Антропов c196c4e65f Полностью переписан README.md с подробным описанием всего функционала
- Добавлено полное описание всех возможностей LogBoard+
- Подробная документация по установке и настройке
- Описание API endpoints и WebSocket соединений
- Инструкции по развертыванию в продакшне
- Примеры конфигурации для Docker Swarm и Kubernetes
- Документация по безопасности и мониторингу
- Описание режимов Single View и Multi View
- Руководство по разработке и отладке
2025-08-17 19:02:20 +03:00

16 KiB
Raw Blame History

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. Клонирование репозитория
git clone <repository-url>
cd logboard
  1. Настройка переменных окружения
make setup
# Отредактируйте .env файл под свои нужды
  1. Генерация docker-compose.yml
make generate
  1. Запуск приложения
make up
  1. Открытие в браузере
http://localhost:9001

Команды управления

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)

# Основные настройки приложения
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 сетям:

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 - перенос длинных строк
  • Автопрокрутка - автоматическая прокрутка к новым логам

📱 Мобильная версия

Приложение полностью адаптивно и поддерживает:

  • Адаптивный дизайн для мобильных устройств
  • Сенсорное управление
  • Оптимизированный интерфейс для маленьких экранов
  • Боковое меню для мобильных устройств

🔧 Расширенные возможности

Управление проектами

  • Множественные проекты 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: Управление контейнерами

Разработка и отладка

# Запуск в режиме разработки
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. Настройка безопасности
# Измените секретные ключи
SECRET_KEY=your-production-secret-key
ENCRYPTION_KEY=your-production-encryption-key

# Настройте пользователей
LOGBOARD_USER=your-admin-user
LOGBOARD_PASS=your-secure-password
  1. Настройка сети
# Настройте внешние сети
DOCKER_NETWORKS=your-network1,your-network2
  1. Настройка производительности
# Увеличьте лимиты для продакшна
MAX_CONNECTIONS=500
CONNECTION_TIMEOUT=60
READ_TIMEOUT=120

Docker Swarm

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

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

🤝 Поддержка и обратная связь

Автор

Сообщество

  • Issues: Сообщайте о багах и предлагайте улучшения
  • Pull Requests: Приветствуются вклады в развитие проекта
  • Документация: Помогите улучшить документацию

Лицензия

Проект распространяется под лицензией MIT.

📝 Changelog

v1.0.0 (2024-12-17)

  • Первый релиз LogBoard+
  • 🔍 Поддержка Single View и Multi View режимов
  • 🔐 JWT аутентификация
  • 📱 Адаптивный дизайн
  • 🔧 Полная интеграция с Docker API
  • 📊 Статистика и мониторинг логов
  • 💾 Экспорт логов в файлы
  • 🎨 Темная и светлая темы

LogBoard+ - современное решение для мониторинга логов микросервисов в Docker среде.