Сергей Антропов 04dfe30d58 feat: Добавлена поддержка удаленных клиентов для LogBoard+
- Создан LogBoard клиент для отправки логов с удаленных серверов
- Добавлен API эндпоинт /api/logs/remote с аутентификацией
- Реализована структурированная система сохранения логов
- Исправлена совместимость Docker client библиотеки
- Добавлена полная документация и тестирование
2025-08-20 19:25:29 +03:00
..

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

Устранение неполадок

Проблемы подключения

  1. Ошибка аутентификации:

    • Проверьте правильность API ключа
    • Убедитесь, что ключ активен на сервере
  2. Ошибка подключения к серверу:

    • Проверьте URL сервера
    • Убедитесь, что сервер доступен
    • Проверьте сетевые настройки
  3. Ошибка доступа к 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 в репозитории проекта