Добавлена полная документация проекта LogBoard+

- Создан основной README.md с описанием проекта
- Добавлена подробная документация в папке docs/
- Создан файл LICENSE (MIT)
- Обновлен .gitignore
- Добавлена документация по безопасности с генерацией ключей
- Включены примеры конфигураций и устранение неполадок

Автор: Сергей Антропов
Сайт: https://devops.org.ru
This commit is contained in:
Сергей Антропов
2025-08-19 01:06:23 +03:00
parent 86a2c44333
commit 5c8efe2644
11 changed files with 4932 additions and 90 deletions

385
README.md Normal file
View File

@@ -0,0 +1,385 @@
# LogBoard+
**Веб-панель для просмотра логов микросервисов**
[![Python](https://img.shields.io/badge/Python-3.11-blue.svg)](https://www.python.org/)
[![FastAPI](https://img.shields.io/badge/FastAPI-0.104.1-green.svg)](https://fastapi.tiangolo.com/)
[![Docker](https://img.shields.io/badge/Docker-6.1.3-blue.svg)](https://www.docker.com/)
[![License](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
**Автор:** Сергей Антропов
**Сайт:** https://devops.org.ru
**Версия:** 1.0.0
## Описание
LogBoard+ - это современная веб-панель для мониторинга и просмотра логов Docker контейнеров в реальном времени. Приложение предоставляет удобный веб-интерфейс для работы с логами микросервисов, поддерживает множественные проекты Docker Compose и включает в себя функции безопасности.
### Основные возможности
- **Просмотр логов в реальном времени** - WebSocket соединения для live-логов
- **Поддержка множественных проектов** - Фильтрация по проектам Docker Compose
- **Безопасность** - JWT аутентификация и авторизация
- **Фильтрация контейнеров** - Исключение проблемных контейнеров
- **Снимки логов** - Сохранение логов в файлы для анализа
- **Статистика** - Анализ уровней логирования
- **Адаптивный интерфейс** - Поддержка светлой и темной темы
- **WebSocket API** - Для интеграции с внешними системами
## Скриншоты
### Светлая тема
![Светлая тема](screenshots/light.png)
### Темная тема
![Темная тема](screenshots/dark.png)
## Быстрый старт
### Предварительные требования
- Docker Engine 20.10+
- Docker Compose 2.0+
- 1 GB RAM
- 1 CPU core
### Установка и запуск
1. **Клонирование репозитория**
```bash
git clone <repository-url>
cd logboard
```
2. **Настройка переменных окружения**
```bash
make setup
# Отредактируйте файл .env под свои нужды
```
3. **Запуск приложения**
```bash
make up
```
4. **Доступ к веб-интерфейсу**
```
http://localhost:9001
```
### Учетные данные по умолчанию
- **Пользователь:** `admin`
- **Пароль:** `admin`
**Важно:** Обязательно измените пароль в продакшене!
## Архитектура
### Технологический стек
- **Backend:** Python 3.11, FastAPI 0.104.1
- **Web Server:** Uvicorn с uvloop
- **Docker Integration:** Docker SDK for Python 6.1.3
- **Authentication:** JWT с PyJWT
- **Frontend:** HTML5, CSS3, JavaScript (Vanilla)
- **Templates:** Jinja2
- **Containerization:** Docker, Docker Compose
### Структура проекта
```
logboard/
├── app.py # Основное приложение FastAPI
├── docker-compose.yml # Конфигурация Docker Compose
├── Dockerfile # Образ Docker
├── requirements.txt # Зависимости Python
├── Makefile # Команды управления
├── env.example # Пример переменных окружения
├── excluded_containers.json # Исключенные контейнеры
├── templates/ # HTML шаблоны
│ ├── index.html # Главная страница
│ ├── login.html # Страница входа
│ └── error.html # Страницы ошибок
├── snapshots/ # Снимки логов
└── screenshots/ # Скриншоты интерфейса
```
## API Документация
### REST API
#### Аутентификация
- `POST /api/auth/login` - Вход в систему
- `POST /api/auth/logout` - Выход из системы
- `GET /api/auth/me` - Информация о текущем пользователе
#### Контейнеры и сервисы
- `GET /api/services` - Список контейнеров
- `GET /api/projects` - Список проектов Docker Compose
- `GET /api/logs/{container_id}` - Логи контейнера
- `GET /api/logs/stats/{container_id}` - Статистика логов
#### Управление
- `GET /api/settings` - Настройки приложения
- `GET /api/excluded-containers` - Список исключенных контейнеров
- `POST /api/excluded-containers` - Обновление исключенных контейнеров
- `POST /api/snapshot` - Создание снимка логов
### WebSocket API
- `ws://host:port/ws/logs/{container_id}` - Логи отдельного контейнера
- `ws://host:port/ws/fan/{service_name}` - Логи сервиса (все реплики)
- `ws://host:port/ws/fan_group` - Логи группы сервисов
## Конфигурация
### Переменные окружения
Основные настройки приложения:
| Переменная | Описание | По умолчанию |
|------------|----------|--------------|
| `LOGBOARD_PORT` | Порт веб-интерфейса | `9001` |
| `LOGBOARD_USER` | Имя пользователя | `admin` |
| `LOGBOARD_PASS` | Пароль пользователя | `admin` |
| `LOGBOARD_TAIL` | Количество строк логов | `500` |
| `SECRET_KEY` | Секретный ключ JWT | `your-secret-key-here` |
### Настройка проектов
Для фильтрации контейнеров по проектам Docker Compose:
```bash
# Один проект
COMPOSE_PROJECT_NAME=myproject
# Несколько проектов
LOGBOARD_PROJECTS=project1,project2,project3
```
### Исключение контейнеров
Создайте файл `excluded_containers.json`:
```json
{
"excluded_containers": [
"noisy-container-1",
"noisy-container-2"
],
"description": "Контейнеры с избыточным логированием"
}
```
## Управление
### Команды Makefile
```bash
make help # Справка по командам
make setup # Настройка переменных окружения
make build # Сборка Docker образа
make up # Запуск сервисов
make down # Остановка сервисов
make restart # Перезапуск сервисов
make logs # Просмотр логов
make clean # Очистка проекта
make status # Статус сервисов
make shell # Подключение к контейнеру
```
### Docker Compose команды
```bash
# Запуск
docker compose up -d
# Остановка
docker compose down
# Просмотр логов
docker compose logs -f
# Пересборка
docker compose build --no-cache
```
## Безопасность
### Рекомендации для продакшена
1. **Измените пароли по умолчанию**
```bash
LOGBOARD_PASS=your-secure-password
```
2. **Настройте секретные ключи**
```bash
SECRET_KEY=your-very-secure-secret-key
ENCRYPTION_KEY=your-encryption-key
```
3. **Используйте HTTPS**
- Настройте reverse proxy (nginx, traefik)
- Включите SSL/TLS сертификаты
4. **Ограничьте доступ к Docker socket**
```bash
# Создайте группу docker и добавьте пользователя
sudo usermod -aG docker $USER
```
5. **Настройте файрвол**
```bash
# Ограничьте доступ к порту 9001
sudo ufw allow from 192.168.1.0/24 to any port 9001
```
### Аутентификация
Приложение использует JWT токены для аутентификации:
- Токены хранятся в HTTP-only cookies
- Время жизни токена настраивается через `SESSION_TIMEOUT`
- Поддерживается автоматическое обновление токенов
## Мониторинг и логирование
### Health Check
```bash
curl http://localhost:9001/healthz
# Ответ: ok
```
### Логирование
Приложение логирует:
- Ошибки подключения к Docker
- Проблемы с контейнерами
- Ошибки аутентификации
- WebSocket соединения
### Метрики
Доступные метрики:
- Количество активных WebSocket соединений
- Статистика по уровням логирования
- Количество исключенных контейнеров
- Время ответа API
## Разработка
### Локальная разработка
1. **Клонирование и настройка**
```bash
git clone <repository-url>
cd logboard
make setup
```
2. **Запуск в режиме разработки**
```bash
make up
```
3. **Просмотр логов**
```bash
make logs
```
### Тестирование
```bash
# Проверка конфигурации
make validate
# Проверка переменных окружения
make env-check
# Тестирование API
curl -X GET "http://localhost:9001/api/services" \
-H "Authorization: Bearer YOUR_TOKEN"
```
## Устранение неполадок
### Частые проблемы
1. **Ошибка подключения к Docker**
```bash
# Проверьте права доступа к Docker socket
ls -la /var/run/docker.sock
sudo usermod -aG docker $USER
```
2. **Контейнеры не отображаются**
```bash
# Проверьте фильтры проектов
docker ps --format "table {{.Names}}\t{{.Labels}}"
```
3. **Ошибки аутентификации**
```bash
# Проверьте переменные окружения
make env-check
```
4. **WebSocket соединения не работают**
```bash
# Проверьте настройки прокси
# Убедитесь, что WebSocket поддерживается
```
### Логи и отладка
```bash
# Просмотр логов приложения
make logs
# Подключение к контейнеру
make shell
# Проверка статуса
make status
```
## Лицензия
MIT License - см. файл [LICENSE](LICENSE) для подробностей.
## Поддержка
- **Автор:** Сергей Антропов
- **Сайт:** https://devops.org.ru
- **Issues:** Создавайте issues в репозитории проекта
- **Документация:** [./docs/](./docs/)
## Вклад в проект
1. Fork репозитория
2. Создайте feature branch (`git checkout -b feature/amazing-feature`)
3. Commit изменения (`git commit -m 'Add amazing feature'`)
4. Push в branch (`git push origin feature/amazing-feature`)
5. Откройте Pull Request
## Changelog
### v1.0.0 (2024-01-XX)
- Первый релиз LogBoard+
- Поддержка множественных проектов Docker Compose
- JWT аутентификация
- WebSocket API для live-логов
- Адаптивный веб-интерфейс
- Система исключения контейнеров
- Снимки логов
- Статистика логирования
---
**LogBoard+** - Удобный просмотр логов микросервисов в реальном времени.