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

212 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# LogBoard Клиент
Клиент для отправки логов Docker контейнеров на удаленный сервер LogBoard.
**Автор:** Сергей Антропов
**Сайт:** https://devops.org.ru
## Описание
LogBoard клиент - это легковесное приложение, которое:
- Мониторит Docker контейнеры на удаленном сервере
- Собирает логи контейнеров
- Отправляет их на центральный сервер LogBoard
- Работает в Docker контейнере
## Возможности
- ✅ Автоматический мониторинг всех Docker контейнеров
-Сбор логов stdout и stderr
- ✅ Асинхронная отправка на сервер
- ✅ Аутентификация по API ключу
- ✅ Настраиваемый интервал отправки
- ✅ Подробное логирование
- ✅ Graceful shutdown
## Установка и запуск
### 1. Клонирование репозитория
```bash
git clone <repository-url>
cd logboard/client
```
### 2. Настройка переменных окружения
```bash
cp env.example .env
# Отредактируйте .env файл
```
### 3. Запуск с Docker Compose
```bash
docker-compose up -d
```
### 4. Проверка работы
```bash
# Просмотр логов клиента
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 файла
```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
```
**Тело запроса:**
```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"
}
```
## Мониторинг
### Логи клиента
```bash
# Просмотр логов в реальном времени
docker-compose logs -f logboard-client
# Просмотр последних 100 строк
docker-compose logs --tail=100 logboard-client
```
### Проверка здоровья
```bash
# Статус контейнера
docker-compose ps logboard-client
# Проверка здоровья
docker inspect logboard-client | grep Health -A 10
```
## Устранение неполадок
### Проблемы подключения
1. **Ошибка аутентификации:**
- Проверьте правильность API ключа
- Убедитесь, что ключ активен на сервере
2. **Ошибка подключения к серверу:**
- Проверьте URL сервера
- Убедитесь, что сервер доступен
- Проверьте сетевые настройки
3. **Ошибка доступа к Docker:**
- Убедитесь, что Docker socket доступен
- Проверьте права доступа
### Отладка
```bash
# Запуск в режиме отладки
docker-compose run --rm logboard-client python -u app/main.py
# Просмотр переменных окружения
docker-compose exec logboard-client env
```
## Разработка
### Локальная разработка
```bash
# Установка зависимостей
pip install -r requirements.txt
# Запуск клиента
python app/main.py
```
### Тестирование
```bash
# Запуск тестового контейнера
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 в репозитории проекта