# 🌐 Удаленные клиенты LogBoard+ Server

## Обзор

LogBoard+ Server поддерживает сбор логов с удаленных серверов через специальные клиенты. Это позволяет централизованно мониторить логи контейнеров с нескольких машин.

## Архитектура

```
┌─────────────────┐    HTTP API    ┌─────────────────┐
│   Удаленный     │ ──────────────► │   LogBoard+     │
│   сервер        │                │   Сервер        │
│                 │                │                 │
│ ┌─────────────┐ │                │ ┌─────────────┐ │
│ │   Клиент    │ │                │ │   Web UI    │ │
│ │ LogBoard+   │ │                │ │             │ │
│ └─────────────┘ │                │ └─────────────┘ │
└─────────────────┘                └─────────────────┘
```

## Компоненты

### 1. Серверная часть (LogBoard+ Server)

- **API эндпоинты**: Прием логов от удаленных клиентов
- **Хранение логов**: Сохранение в файловой системе
- **Web интерфейс**: Отображение локальных и удаленных контейнеров
- **Визуальное разделение**: Четкое различие между локальными и удаленными контейнерами

### 2. Клиентская часть (LogBoard+ Client)

- **Сбор логов**: Чтение логов Docker контейнеров
- **Отправка данных**: HTTP POST запросы на сервер
- **Автоматизация**: Docker Compose для простого развертывания

## Установка и настройка

### На сервере LogBoard+ Server

1. Убедитесь, что сервер LogBoard+ Server запущен и доступен
2. Получите API ключ для аутентификации клиентов

### На удаленном сервере

1. Клонируйте репозиторий клиента:
```bash
git clone ssh://git@git.antropoff.ru:222/PetProject/logboard-client.git
cd logboard-client
```

2. Настройте переменные окружения:
```bash
cp .env.example .env
# Отредактируйте .env файл
```

3. Запустите клиент:
```bash
docker-compose up -d
```

Подробная документация по установке и настройке клиента доступна в репозитории: [LogBoard+ Client](ssh://git@git.antropoff.ru:222/PetProject/logboard-client.git)

## Использование

### Web интерфейс

После настройки клиентов, в веб-интерфейсе LogBoard+ вы увидите:

#### 📍 Локальные контейнеры
- Контейнеры с текущего сервера
- Обычное отображение без дополнительных индикаторов

#### 🌐 Удаленные контейнеры
- Контейнеры с удаленных серверов
- Визуальное разделение по хостам
- Индикаторы удаленного доступа (глобус 🌐)
- Время последнего обновления
- Статистика по хостам

### Функции интерфейса

#### 🔽 Сворачивание секций
- **Секции контейнеров**: Можно сворачивать/разворачивать секции "Локальные контейнеры" и "Удаленные контейнеры"
- **Секции хостов**: Каждый хост в удаленных контейнерах можно сворачивать отдельно
- **Кнопки управления**: Стрелки для сворачивания/разворачивания
- **Сохранение состояния**: Состояние сворачивания сохраняется между сессиями

#### ⚡ Периодическое обновление
- **Автоматическое обновление**: Список контейнеров обновляется каждые 30 секунд
- **Фильтрация остановленных**: Остановленные контейнеры автоматически скрываются из интерфейса
- **Обновление счетчиков**: Количество контейнеров в секциях обновляется в реальном времени
- **Логирование изменений**: В консоли браузера отображается информация об изменениях

#### 📱 Адаптивный интерфейс
- **Свернутый sidebar**: Миникарточки контейнеров с иконками статуса
- **Развернутый sidebar**: Полная информация о контейнерах с возможностью сворачивания секций
- **Мобильная поддержка**: Адаптивный дизайн для мобильных устройств

### API эндпоинты

#### Получение контейнеров
```http
GET /api/containers/services
Authorization: Bearer <token>
```

**Ответ:**
```json
[
  {
    "id": "container-id",
    "name": "container-name",
    "status": "running",
    "is_remote": false,
    "hostname": "localhost",
    "project": "project-name",
    "service": "service-name"
  },
  {
    "id": "remote-hostname-container",
    "name": "remote-container",
    "status": "running",
    "is_remote": true,
    "hostname": "remote-host",
    "last_modified": "2025-08-20T16:30:00",
    "size": 1024
  }
]
```

#### Получение логов удаленного контейнера
```http
GET /api/logs/{container_id}
Authorization: Bearer <token>
```

#### Получение статистики логов
```http
GET /api/logs/stats/{container_id}
Authorization: Bearer <token>
```

## Мониторинг и отладка

### Логи клиента
```bash
docker-compose logs -f logboard-client
```

### Проверка здоровья
```bash
curl http://localhost:8080/health
```

### Тестирование API
```bash
python3 test_interface.py
```

## Безопасность

- **API ключи**: Обязательная аутентификация клиентов
- **HTTPS**: Рекомендуется использовать HTTPS для передачи данных
- **Сетевая изоляция**: Клиенты должны иметь доступ только к необходимым портам

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

### Клиент не подключается
1. Проверьте URL сервера в переменной `LOGBOARD_SERVER_URL`
2. Убедитесь, что API ключ правильный
3. Проверьте сетевое подключение

### Логи не отображаются
1. Проверьте права доступа к Docker socket
2. Убедитесь, что контейнеры запущены
3. Проверьте логи клиента

### Интерфейс не обновляется
1. Откройте консоль браузера (F12)
2. Проверьте наличие ошибок JavaScript
3. Убедитесь, что WebSocket соединения работают

## Автор

**Сергей Антропов**  
🌐 Сайт: https://devops.org.ru  
📧 Email: contact@devops.org.ru

---

*Документация обновлена: 2025-08-20*

