- Создан LogBoard клиент для отправки логов с удаленных серверов - Добавлен API эндпоинт /api/logs/remote с аутентификацией - Реализована структурированная система сохранения логов - Исправлена совместимость Docker client библиотеки - Добавлена полная документация и тестирование
LogBoard Клиент
Клиент для отправки логов Docker контейнеров на удаленный сервер LogBoard.
Автор: Сергей Антропов
Сайт: https://devops.org.ru
Описание
LogBoard клиент - это легковесное приложение, которое:
- Мониторит Docker контейнеры на удаленном сервере
- Собирает логи контейнеров
- Отправляет их на центральный сервер LogBoard
- Работает в Docker контейнере
Возможности
- ✅ Автоматический мониторинг всех Docker контейнеров
- ✅ Сбор логов stdout и stderr
- ✅ Асинхронная отправка на сервер
- ✅ Аутентификация по API ключу
- ✅ Настраиваемый интервал отправки
- ✅ Подробное логирование
- ✅ Graceful shutdown
Установка и запуск
1. Клонирование репозитория
git clone <repository-url>
cd logboard/client
2. Настройка переменных окружения
cp env.example .env
# Отредактируйте .env файл
3. Запуск с Docker Compose
docker-compose up -d
4. Проверка работы
# Просмотр логов клиента
docker-compose logs -f logboard-client
# Проверка статуса
docker-compose ps
Конфигурация
Переменные окружения
Переменная | Описание | Обязательно | По умолчанию |
---|---|---|---|
LOGBOARD_SERVER_URL |
URL сервера LogBoard | Да | http://localhost:8000 |
LOGBOARD_API_KEY |
API ключ для аутентификации | Да | - |
HOSTNAME |
Имя хоста | Нет | Автоопределение |
LOGBOARD_INTERVAL |
Интервал отправки (сек) | Нет | 60 |
Пример .env файла
LOGBOARD_SERVER_URL=http://logboard.example.com:8000
LOGBOARD_API_KEY=your_secret_api_key_here
HOSTNAME=production-server-01
LOGBOARD_INTERVAL=30
Архитектура
┌─────────────────┐ HTTP/JSON ┌─────────────────┐
│ Docker Host │ ──────────────► │ LogBoard Server│
│ │ │ │
│ ┌─────────────┐ │ │ │
│ │LogBoard │ │ │ │
│ │Client │ │ │ │
│ │Container │ │ │ │
│ └─────────────┘ │ │ │
│ ▲ │ │ │
│ │ │ │ │
│ ┌─────────────┐ │ │ │
│ │Docker │ │ │ │
│ │Socket │ │ │ │
│ └─────────────┘ │ │ │
└─────────────────┘ └─────────────────┘
API Endpoints
Клиент отправляет данные на следующие эндпоинты сервера:
POST /api/v1/logs/remote
Отправка логов контейнера.
Заголовки:
Authorization: Bearer <api_key>
Content-Type: application/json
Тело запроса:
{
"hostname": "server-01",
"container_name": "nginx",
"logs": [
"2024-01-01T12:00:00.000Z nginx: [info] Server started",
"2024-01-01T12:00:01.000Z nginx: [info] Listening on port 80"
],
"timestamp": "2024-01-01T12:00:01.000Z"
}
Мониторинг
Логи клиента
# Просмотр логов в реальном времени
docker-compose logs -f logboard-client
# Просмотр последних 100 строк
docker-compose logs --tail=100 logboard-client
Проверка здоровья
# Статус контейнера
docker-compose ps logboard-client
# Проверка здоровья
docker inspect logboard-client | grep Health -A 10
Устранение неполадок
Проблемы подключения
-
Ошибка аутентификации:
- Проверьте правильность API ключа
- Убедитесь, что ключ активен на сервере
-
Ошибка подключения к серверу:
- Проверьте URL сервера
- Убедитесь, что сервер доступен
- Проверьте сетевые настройки
-
Ошибка доступа к Docker:
- Убедитесь, что Docker socket доступен
- Проверьте права доступа
Отладка
# Запуск в режиме отладки
docker-compose run --rm logboard-client python -u app/main.py
# Просмотр переменных окружения
docker-compose exec logboard-client env
Разработка
Локальная разработка
# Установка зависимостей
pip install -r requirements.txt
# Запуск клиента
python app/main.py
Тестирование
# Запуск тестового контейнера
docker-compose up test-container
# Проверка отправки логов
docker-compose logs logboard-client
Безопасность
- API ключи хранятся в переменных окружения
- Docker socket монтируется в режиме read-only
- Клиент работает под непривилегированным пользователем
- Все HTTP соединения используют HTTPS (рекомендуется)
Лицензия
MIT License
Поддержка
- Автор: Сергей Антропов
- Сайт: https://devops.org.ru
- Issues: Создавайте issues в репозитории проекта