Конфигурация LogBoard+
Автор: Сергей Антропов
Сайт: https://devops.org.ru
Содержание
- Обзор конфигурации
- Переменные окружения
- Настройка Docker
- Настройка безопасности
- Настройка производительности
- Настройка логирования
- Примеры конфигураций
Обзор конфигурации
LogBoard+ использует переменные окружения для настройки всех аспектов работы приложения. Конфигурация разделена на несколько категорий для удобства управления.
Файлы конфигурации
.env
- Основной файл конфигурации (создается из env.example
)
docker-compose.yml
- Конфигурация Docker Compose
app/excluded_containers.json
- Список исключенных контейнеров
Приоритет настроек
- Переменные окружения системы
- Файл
.env
- Значения по умолчанию в коде
Переменные окружения
Основные настройки приложения
Переменная |
Описание |
По умолчанию |
Обязательная |
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"
Рекомендации по безопасности
Обязательные настройки для продакшена
- Измените пароли по умолчанию
- Используйте сильные секретные ключи
- Настройте HTTPS через reverse proxy
- Ограничьте доступ к Docker socket
- Настройте файрвол
- Регулярно обновляйте зависимости
- Мониторьте логи доступа
Мониторинг безопасности
# Проверка прав доступа к Docker socket
ls -la /var/run/docker.sock
# Проверка пользователей в группе docker
getent group docker
# Проверка открытых портов
netstat -tlnp | grep 9001
# Проверка логов аутентификации
grep "authentication" /var/log/logboard/app.log