- Добавлено описание работы с множественными проектами - Добавлена информация о селекторе проектов в веб-интерфейсе - Добавлены примеры использования переменной LOGBOARD_PROJECTS - Добавлено описание API эндпоинтов для работы с проектами - Обновлена таблица переменных окружения Автор: Сергей Антропов Сайт: https://devops.org.ru
12 KiB
LogBoard+
Автор: Сергей Антропов
Сайт: https://devops.org.ru
LogBoard+ — это веб-панель для просмотра логов микросервисов из docker-compose
в реальном времени с поддержкой:
- Вкладок по сервисам и репликам
- Темная/светлая темы
- Подсветка ANSI-цветов из логов
- Фильтрация по уровням (
debug
,info
,warn
,error
) - Снимки логов в файл (
snapshot
) - Объединение всех реплик сервиса в одну вкладку (aggregate)
- Fan-in группировка нескольких сервисов в одну панель (group)
- Цветовые теги по короткому ID контейнера
- Sticky-фильтры по репликам
- Пауза/возобновление стрима
- Basic Auth для доступа
- Автопереподключение вебсокетов
- Поддержка нескольких клиентов одновременно
Установка и запуск
Быстрый старт с Makefile (рекомендуется)
# Распаковать проект
unzip logboard_plus_fanin_groups.zip
cd logboard_plus
# Показать доступные команды
make help
# Настроить переменные окружения
make setup
# Отредактировать .env файл под свои нужды (опционально)
# nano .env
# Собрать и запустить проект
make build
make up
# Открыть в браузере
http://localhost:9001
Команды Makefile
Команда | Описание |
---|---|
make help |
Показать справку по всем командам |
make setup |
Настроить переменные окружения (копировать env.example в .env) |
make generate |
Сгенерировать docker-compose.yml из .env файла |
make build |
Собрать Docker образ |
make up |
Запустить сервисы в фоновом режиме (с правами root) |
make down |
Остановить и удалить сервисы (с правами root) |
make restart |
Перезапустить сервисы (с правами root) |
make logs |
Показать логи сервисов в реальном времени |
make logs-tail |
Показать последние 100 строк логов |
make status |
Показать статус сервисов |
make clean |
Остановить сервисы и удалить образы |
make shell |
Подключиться к контейнеру |
make dev |
Запуск в режиме разработки (с выводом логов) |
make rebuild |
Пересобрать и запустить сервисы |
Настройка переменных окружения
Проект использует файл .env
для хранения всех настроек. Для настройки:
-
Автоматическая настройка:
make setup
-
Ручная настройка:
cp env.example .env nano .env # или любой другой редактор
Основные переменные окружения:
Переменная | Описание | Значение по умолчанию |
---|---|---|
LOGBOARD_PORT |
Порт веб-интерфейса | 9001 |
LOGBOARD_USER |
Имя пользователя для Basic Auth | admin |
LOGBOARD_PASS |
Пароль для Basic Auth | s3cret-change-me |
LOGBOARD_TAIL |
Количество строк истории | 500 |
LOGBOARD_SNAPSHOT_DIR |
Директория для снимков | /app/snapshots |
LOGBOARD_INDEX_HTML |
Путь к HTML шаблону | ./templates/index.html |
TZ_TS |
Временная зона для меток времени | (пусто) |
COMPOSE_PROJECT_NAME |
Фильтр по проекту Docker Compose | (пусто) |
LOGBOARD_PROJECTS |
Множественные проекты (через запятую) | (пусто) |
DOCKER_NETWORKS |
Внешние Docker сети (через запятую) | iaas,infrastructure_iaas |
LOGBOARD_SKIP_UNHEALTHY |
Пропускать нездоровые контейнеры | true |
LOGBOARD_CONTAINER_LIST_TIMEOUT |
Таймаут получения списка контейнеров (сек) | 10 |
LOGBOARD_CONTAINER_INFO_TIMEOUT |
Таймаут получения информации о контейнере (сек) | 3 |
LOGBOARD_HEALTH_CHECK_TIMEOUT |
Таймаут проверки health status (сек) | 2 |
SECRET_KEY |
Секретный ключ для шифрования | your-secret-key-here |
ENCRYPTION_KEY |
Ключ шифрования | your-encryption-key-here |
⚠️ Важно: Измените значения LOGBOARD_PASS
, SECRET_KEY
и ENCRYPTION_KEY
в продакшене!
Работа с множественными проектами
LogBoard+ поддерживает работу с несколькими проектами Docker Compose одновременно:
Через веб-интерфейс:
- Откройте LogBoard+ в браузере
- Используйте селектор "Projects" в верхней панели
- Выберите проект из списка или "All Projects" для всех
- Просматривайте логи контейнеров выбранного проекта
Через переменные окружения:
-
Укажите проекты в .env файле:
LOGBOARD_PROJECTS=project1,project2,project3
-
Перезапустите LogBoard+:
make restart
API эндпоинты:
GET /api/projects
- получить список всех проектовGET /api/services?projects=project1,project2
- получить контейнеры конкретных проектов
Настройка Docker сетей
Для подключения к внешним Docker сетям (например, для работы с другими проектами):
-
Укажите сети в .env файле:
DOCKER_NETWORKS=iaas,infrastructure_iaas,myproject_network
-
Сгенерируйте docker-compose.yml:
make generate
-
Убедитесь, что сети существуют:
docker network ls
-
Создайте сети, если их нет:
docker network create iaas docker network create infrastructure_iaas
Настройка прав доступа к Docker
Приложение запускается с правами root для корректного доступа к Docker socket. Если вы хотите запускать без прав root, добавьте вашего пользователя в группу docker:
sudo usermod -a -G docker $USER
# Перезагрузите систему или перелогиньтесь
Фильтрация контейнеров
LogBoard+ автоматически пропускает контейнеры с проблемными health check для предотвращения зависания приложения. Это особенно полезно в средах с множеством контейнеров, где некоторые могут быть нездоровыми.
Настройки фильтрации:
LOGBOARD_SKIP_UNHEALTHY=true
- пропускать нездоровые контейнерыLOGBOARD_CONTAINER_LIST_TIMEOUT=10
- таймаут получения списка контейнеровLOGBOARD_CONTAINER_INFO_TIMEOUT=3
- таймаут получения информации о контейнереLOGBOARD_HEALTH_CHECK_TIMEOUT=2
- таймаут проверки health status
Логирование: Приложение выводит в логи информацию о пропущенных контейнерах:
⚠️ Пропускаем нездоровый контейнер frontend-iaas (ID: 17c539b2e4dd)
⚠️ Таймаут при получении health status для контейнера problem-container (ID: abc123def456)
Классический способ
# Распаковать проект
unzip logboard_plus_fanin_groups.zip
cd logboard_plus
# Настроить переменные окружения
cp env.example .env
# Отредактировать .env файл
# Запуск через docker-compose
docker compose up --build -d
# Открыть в браузере
http://localhost:9001
По умолчанию логин/пароль для Basic Auth задаются в docker-compose.yml
:
environment:
- LB_USER=admin
- LB_PASS=admin
Интерфейс
Верхняя панель
- Тема — переключатель тёмной/светлой темы
- aggregate — собирает все реплики сервиса в одну вкладку
- group — собирает несколько сервисов в один поток логов
- snapshot — сохраняет текущие логи этой панели в файл
- tail — количество строк истории при подключении
Панель вкладок
- Вкладки по сервисам и репликам
- Клик по вкладке — открыть поток логов
- Цветной чип
[id]
— уникальная реплика, цвет закреплён - Чекбоксы под вкладками — фильтр по репликам
Логи
- Цвета в логах из ANSI-кодов
- Фильтрация по уровню (
debug
,info
,warn
,error
) - Пауза/возобновление стрима
- При выделении текста появляется кнопка "Копировать"
Fan-in группировка
Позволяет объединить несколько разных сервисов в один поток:
- Нажмите кнопку group вверху
- Введите имена сервисов через запятую (например:
api, worker, scheduler
) - Откроется панель с логами всех указанных сервисов, с префиксом
[id service]
- Можно фильтровать по конкретным репликам внизу
Советы
- Если контейнер перезапустился — поток автоматически переподключается
- Можно открыть несколько вкладок браузера с разными сервисами — всё работает параллельно
- Для больших проектов удобно держать одну панель с
aggregate
, вторую — сgroup
по критическим сервисам
Лицензия
MIT
Скриншоты
Тёмная тема:
Светлая тема: