logboard/docs/configuration.md
Сергей Антропов e80f665470 feat: major improvements and fixes
- Fixed Docker permissions issue by running as root user
- Added DEBUG_MODE support with conditional Swagger docs and auto-reload
- Created start.sh script for conditional Uvicorn execution
- Removed verbose debug logs from WebSocket status endpoint
- Added comprehensive screenshots to documentation
- Enhanced help tooltip with full-screen modal design
- Added theme switcher to error page
- Updated documentation with local development and Docker benefits
- Fixed WebSocket status display issues
- Improved hotkey functionality and documentation
- Added detailed project descriptions for local dev and Docker users

Technical improvements:
- Dockerfile: removed appuser switch, simplified permissions
- docker-compose.yml: kept user: 0:0 for Docker socket access
- app.py: removed debug prints, added DEBUG_MODE support
- templates: enhanced UI/UX with better tooltips and themes
- docs: comprehensive updates with new screenshots and descriptions
2025-08-19 13:01:32 +03:00

18 KiB
Raw Blame History

Конфигурация LogBoard+

Автор: Сергей Антропов
Сайт: https://devops.org.ru

Содержание

  1. Обзор конфигурации
  2. Переменные окружения
  3. Настройка Docker
  4. Настройка безопасности
  5. Настройка производительности
  6. Настройка логирования
  7. Примеры конфигураций

Обзор конфигурации

LogBoard+ использует переменные окружения для настройки всех аспектов работы приложения. Конфигурация разделена на несколько категорий для удобства управления.

Файлы конфигурации

  • .env - Основной файл конфигурации (создается из env.example)
  • docker-compose.yml - Конфигурация Docker Compose
  • excluded_containers.json - Список исключенных контейнеров

Приоритет настроек

  1. Переменные окружения системы
  2. Файл .env
  3. Значения по умолчанию в коде

Переменные окружения

Основные настройки приложения

Переменная Описание По умолчанию Обязательная
LOGBOARD_PORT Порт веб-интерфейса 9001 Нет
LOGBOARD_TAIL Количество строк логов по умолчанию 500 Нет
LOGBOARD_USER Имя пользователя для входа admin Нет
LOGBOARD_PASS Пароль пользователя admin Да
LOGBOARD_SNAPSHOT_DIR Директория для снимков логов /app/snapshots Нет
LOGBOARD_INDEX_HTML Путь к HTML шаблону ./templates/index.html Нет
TZ_TS Временная зона Europe/Moscow Нет

Настройки Docker

Переменная Описание По умолчанию Обязательная
COMPOSE_PROJECT_NAME Фильтр по проекту Docker Compose - Нет
LOGBOARD_PROJECTS Множественные проекты (через запятую) - Нет
DOCKER_HOST Путь к Docker socket unix:///var/run/docker.sock Нет
DOCKER_TLS_VERIFY Проверка TLS для Docker - Нет
DOCKER_CERT_PATH Путь к сертификатам Docker - Нет
DOCKER_NETWORKS Внешние сети Docker iaas,infrastructure_iaas Нет

Настройки безопасности

Переменная Описание По умолчанию Обязательная
SECRET_KEY Секретный ключ для JWT your-secret-key-here Да
ENCRYPTION_KEY Ключ шифрования your-encryption-key-here Да
AUTH_ENABLED Включить аутентификацию true Нет
AUTH_METHOD Метод аутентификации jwt Нет
SESSION_TIMEOUT Время жизни сессии (секунды) 3600 Нет

Настройки производительности

Переменная Описание По умолчанию Обязательная
MAX_CONNECTIONS Максимальное количество соединений 100 Нет
CONNECTION_TIMEOUT Таймаут подключения (секунды) 30 Нет
READ_TIMEOUT Таймаут чтения (секунды) 60 Нет
LOGBOARD_AJAX_UPDATE_INTERVAL Интервал AJAX обновления (мс) 2000 Нет

Настройки фильтрации контейнеров

Переменная Описание По умолчанию Обязательная
LOGBOARD_SKIP_UNHEALTHY Пропускать нездоровые контейнеры true Нет
LOGBOARD_CONTAINER_LIST_TIMEOUT Таймаут получения списка контейнеров 10 Нет
LOGBOARD_CONTAINER_INFO_TIMEOUT Таймаут получения информации о контейнере 3 Нет
LOGBOARD_HEALTH_CHECK_TIMEOUT Таймаут health check 2 Нет

Настройки логирования

Переменная Описание По умолчанию Обязательная
LOG_LEVEL Уровень логирования INFO Нет
LOG_FORMAT Формат логов json Нет

Настройки веб-интерфейса

Переменная Описание По умолчанию Обязательная
WEB_TITLE Заголовок веб-интерфейса LogBoard+ Нет
WEB_DESCRIPTION Описание веб-интерфейса Веб-панель для просмотра логов микросервисов Нет
WEB_VERSION Версия веб-интерфейса 1.0.0 Нет

Настройки режима отладки

Переменная Описание По умолчанию Обязательная
DEBUG_MODE Режим отладки false Нет

Режим отладки включает:

  • Auto-reload - автоматическая перезагрузка при изменении кода
  • Swagger UI - документация API по адресу /docs
  • ReDoc - альтернативная документация по адресу /redoc
  • Подробное логирование - детальные логи для отладки

⚠️ Важно: В продакшене обязательно установите DEBUG_MODE=false!

Настройки уведомлений

Переменная Описание По умолчанию Обязательная
NOTIFICATIONS_ENABLED Включить уведомления false Нет
SMTP_HOST SMTP сервер - Нет
SMTP_PORT Порт SMTP 587 Нет
SMTP_USER Пользователь SMTP - Нет
SMTP_PASS Пароль SMTP - Нет
SMTP_FROM Email отправителя - Нет

Настройка Docker

Подключение к Docker daemon

Локальный Docker

# Стандартная конфигурация для локального Docker
DOCKER_HOST=unix:///var/run/docker.sock

Удаленный Docker

# Подключение к удаленному Docker daemon
DOCKER_HOST=tcp://192.168.1.100:2375

# С TLS сертификатами
DOCKER_HOST=tcp://192.168.1.100:2376
DOCKER_TLS_VERIFY=1
DOCKER_CERT_PATH=/path/to/certs

Фильтрация проектов

Один проект

# Показать только контейнеры из одного проекта
COMPOSE_PROJECT_NAME=myproject

Несколько проектов

# Показать контейнеры из нескольких проектов
LOGBOARD_PROJECTS=project1,project2,project3

Все проекты

# Показать все контейнеры (по умолчанию)
# Оставьте переменные пустыми или не указывайте их

Настройка сетей

# Подключение к внешним Docker сетям
DOCKER_NETWORKS=iaas,infrastructure_iaas,frontend,backend

Настройка безопасности

Генерация секретных ключей

# Генерация секретного ключа для JWT
openssl rand -hex 32
# 8a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6

# Генерация ключа шифрования
openssl rand -hex 32
# 1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t1u2v3w4x5y6z7

Настройка аутентификации

# Включение аутентификации
AUTH_ENABLED=true
AUTH_METHOD=jwt

# Настройка времени жизни сессии (1 час)
SESSION_TIMEOUT=3600

# Настройка пользователей
LOGBOARD_USER=admin
LOGBOARD_PASS=your-secure-password

Настройка HTTPS

Для продакшена рекомендуется использовать HTTPS через reverse proxy:

# Nginx конфигурация
server {
    listen 443 ssl http2;
    server_name your-domain.com;

    ssl_certificate /path/to/certificate.crt;
    ssl_certificate_key /path/to/private.key;

    location / {
        proxy_pass http://localhost:9001;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        
        # WebSocket поддержка
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

Настройка производительности

Ограничения соединений

# Максимальное количество одновременных подключений
MAX_CONNECTIONS=100

# Таймауты
CONNECTION_TIMEOUT=30
READ_TIMEOUT=60

Настройка AJAX обновления

# Интервал обновления логов (в миллисекундах)
LOGBOARD_AJAX_UPDATE_INTERVAL=2000

# Количество строк логов по умолчанию
LOGBOARD_TAIL=500

Оптимизация Docker

# Таймауты для операций с Docker
LOGBOARD_CONTAINER_LIST_TIMEOUT=10
LOGBOARD_CONTAINER_INFO_TIMEOUT=3
LOGBOARD_HEALTH_CHECK_TIMEOUT=2

# Пропуск нездоровых контейнеров
LOGBOARD_SKIP_UNHEALTHY=true

Настройка логирования

Уровни логирования

# Доступные уровни: DEBUG, INFO, WARNING, ERROR
LOG_LEVEL=INFO

# Форматы: json, text
LOG_FORMAT=json

Настройка логов приложения

# Создание директории для логов
sudo mkdir -p /var/log/logboard
sudo chown $USER:$USER /var/log/logboard

# Обновление docker-compose.yml
volumes:
  - /var/log/logboard:/app/logs

Исключение контейнеров

Файл excluded_containers.json

{
  "excluded_containers": [
    "noisy-container-1",
    "noisy-container-2",
    "debug-container",
    "test-container"
  ],
  "description": "Контейнеры с избыточным логированием, исключенные из отображения"
}

Управление через API

# Получение списка исключенных контейнеров
curl -X GET "http://localhost:9001/api/excluded-containers" \
  -H "Authorization: Bearer YOUR_TOKEN"

# Обновление списка
curl -X POST "http://localhost:9001/api/excluded-containers" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '["container1", "container2"]'

Примеры конфигураций

Разработка

# .env для разработки
LOGBOARD_PORT=9001
LOGBOARD_USER=admin
LOGBOARD_PASS=dev-password
SECRET_KEY=dev-secret-key-change-in-production
ENCRYPTION_KEY=dev-encryption-key-change-in-production

# Docker настройки
DOCKER_HOST=unix:///var/run/docker.sock
LOGBOARD_PROJECTS=dev-project

# Производительность
LOGBOARD_TAIL=100
LOGBOARD_AJAX_UPDATE_INTERVAL=1000
LOG_LEVEL=DEBUG

# Безопасность
AUTH_ENABLED=true
SESSION_TIMEOUT=7200

# Режим отладки
DEBUG_MODE=true

Режим отладки

# .env для режима отладки
LOGBOARD_PORT=9001
LOGBOARD_USER=admin
LOGBOARD_PASS=dev-password
SECRET_KEY=dev-secret-key
ENCRYPTION_KEY=dev-encryption-key

# Docker настройки
DOCKER_HOST=unix:///var/run/docker.sock

# Производительность
LOGBOARD_TAIL=50
LOGBOARD_AJAX_UPDATE_INTERVAL=500
LOG_LEVEL=DEBUG

# Безопасность
AUTH_ENABLED=true
SESSION_TIMEOUT=7200

# Режим отладки (ВКЛЮЧЕН)
DEBUG_MODE=true

# Команды для управления режимом отладки:
# make debug-on    # Включить режим отладки
# make debug-off   # Выключить режим отладки
# make debug-status # Проверить статус

Тестирование

# .env для тестирования
LOGBOARD_PORT=9002
LOGBOARD_USER=test
LOGBOARD_PASS=test-password
SECRET_KEY=test-secret-key
ENCRYPTION_KEY=test-encryption-key

# Docker настройки
DOCKER_HOST=unix:///var/run/docker.sock
LOGBOARD_PROJECTS=test-project

# Производительность
LOGBOARD_TAIL=50
LOGBOARD_AJAX_UPDATE_INTERVAL=500
LOG_LEVEL=INFO

# Безопасность
AUTH_ENABLED=true
SESSION_TIMEOUT=1800

Продакшен

# .env для продакшена
LOGBOARD_PORT=9001
LOGBOARD_USER=admin
LOGBOARD_PASS=very-secure-password-here
SECRET_KEY=8a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6
ENCRYPTION_KEY=1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t1u2v3w4x5y6z7

# Docker настройки
DOCKER_HOST=unix:///var/run/docker.sock
LOGBOARD_PROJECTS=prod-project,monitoring

# Производительность
LOGBOARD_TAIL=1000
LOGBOARD_AJAX_UPDATE_INTERVAL=5000
MAX_CONNECTIONS=200
CONNECTION_TIMEOUT=60
READ_TIMEOUT=120

# Безопасность
AUTH_ENABLED=true
SESSION_TIMEOUT=3600

# Логирование
LOG_LEVEL=WARNING
LOG_FORMAT=json

# Режим отладки (ОБЯЗАТЕЛЬНО ВЫКЛЮЧЕН в продакшене)
DEBUG_MODE=false

# Уведомления
NOTIFICATIONS_ENABLED=true
SMTP_HOST=smtp.company.com
SMTP_PORT=587
SMTP_USER=logboard@company.com
SMTP_PASS=email-password
SMTP_FROM=logboard@company.com

Масштабированная установка

# .env для масштабированной установки
LOGBOARD_PORT=9001
LOGBOARD_USER=admin
LOGBOARD_PASS=very-secure-password
SECRET_KEY=8a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6
ENCRYPTION_KEY=1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t1u2v3w4x5y6z7

# Docker настройки
DOCKER_HOST=tcp://docker-swarm-manager:2376
DOCKER_TLS_VERIFY=1
DOCKER_CERT_PATH=/etc/docker/certs
LOGBOARD_PROJECTS=app1,app2,app3,monitoring

# Производительность
LOGBOARD_TAIL=2000
LOGBOARD_AJAX_UPDATE_INTERVAL=3000
MAX_CONNECTIONS=500
CONNECTION_TIMEOUT=120
READ_TIMEOUT=300

# Безопасность
AUTH_ENABLED=true
SESSION_TIMEOUT=7200

# Логирование
LOG_LEVEL=INFO
LOG_FORMAT=json

# Уведомления
NOTIFICATIONS_ENABLED=true
SMTP_HOST=smtp.company.com
SMTP_PORT=587
SMTP_USER=logboard@company.com
SMTP_PASS=email-password
SMTP_FROM=logboard@company.com

Проверка конфигурации

Валидация переменных окружения

# Проверка конфигурации
make env-check

# Проверка Docker Compose
make validate

Тестирование подключения

# Проверка подключения к Docker
docker ps

# Проверка доступности API
curl http://localhost:9001/healthz

# Проверка аутентификации
curl -X POST "http://localhost:9001/api/auth/login" \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"your-password"}'

Мониторинг конфигурации

# Просмотр текущих настроек
curl -X GET "http://localhost:9001/api/settings" \
  -H "Authorization: Bearer YOUR_TOKEN"

# Проверка списка контейнеров
curl -X GET "http://localhost:9001/api/services" \
  -H "Authorization: Bearer YOUR_TOKEN"

Рекомендации по безопасности

Обязательные настройки для продакшена

  1. Измените пароли по умолчанию
  2. Используйте сильные секретные ключи
  3. Настройте HTTPS через reverse proxy
  4. Ограничьте доступ к Docker socket
  5. Настройте файрвол
  6. Регулярно обновляйте зависимости
  7. Мониторьте логи доступа

Мониторинг безопасности

# Проверка прав доступа к Docker socket
ls -la /var/run/docker.sock

# Проверка пользователей в группе docker
getent group docker

# Проверка открытых портов
netstat -tlnp | grep 9001

# Проверка логов аутентификации
grep "authentication" /var/log/logboard/app.log