docs: update README and docs with strict Quick Start (docker-compose-prod), fix WebSocket paths, enforce strict tone

This commit is contained in:
2025-09-04 13:43:10 +03:00
parent afa2829872
commit 7ccdf75bab
15 changed files with 825 additions and 131 deletions

View File

@@ -16,7 +16,7 @@
LogBoard+ предоставляет REST API и WebSocket API для работы с логами Docker контейнеров. API разработан для интеграции с системами мониторинга и автоматизации, а также для создания собственных клиентов.
### 🎯 **Применение API**
### Применение API
- **Интеграция с CI/CD** - автоматический мониторинг логов в пайплайнах
- **Собственные дашборды** - создание кастомных интерфейсов мониторинга
@@ -108,7 +108,7 @@ Authorization: Bearer <token>
### Контейнеры и сервисы
#### GET /api/services
#### GET /api/containers/services
Получение списка всех контейнеров.
@@ -122,7 +122,7 @@ Authorization: Bearer <token>
**Пример запроса:**
```bash
curl -X GET "http://localhost:9001/api/services?projects=myproject&include_stopped=true" \
curl -X GET "http://localhost:9001/api/containers/services?projects=myproject&include_stopped=true" \
-H "Authorization: Bearer YOUR_TOKEN"
```
@@ -157,7 +157,7 @@ curl -X GET "http://localhost:9001/api/services?projects=myproject&include_stopp
]
```
#### GET /api/projects
#### GET /api/containers/projects
Получение списка всех проектов Docker Compose.
@@ -268,7 +268,7 @@ curl -X GET "http://localhost:9001/api/logs/abc123def456?tail=100&since=2024-01-
}
```
#### GET /api/excluded-containers
#### GET /api/containers/excluded
Получение списка исключенных контейнеров.
@@ -283,7 +283,7 @@ curl -X GET "http://localhost:9001/api/logs/abc123def456?tail=100&since=2024-01-
}
```
#### POST /api/excluded-containers
#### POST /api/containers/excluded
Обновление списка исключенных контейнеров.
@@ -306,7 +306,7 @@ curl -X GET "http://localhost:9001/api/logs/abc123def456?tail=100&since=2024-01-
}
```
#### POST /api/snapshot
#### POST /api/logs/snapshot
Создание снимка логов.
@@ -374,7 +374,7 @@ ok
Все WebSocket endpoints требуют JWT токен в параметре `token`.
### ws://host:port/ws/logs/{container_id}
### ws://host:port/api/websocket/logs/{container_id}
Получение логов отдельного контейнера.
@@ -390,7 +390,7 @@ ok
```javascript
const token = "your-jwt-token";
const containerId = "abc123def456";
const ws = new WebSocket(`ws://localhost:9001/ws/logs/${containerId}?token=${token}&tail=100`);
const ws = new WebSocket(`ws://localhost:9001/api/websocket/logs/${containerId}?token=${token}&tail=100`);
ws.onmessage = function(event) {
console.log('Получены логи:', event.data);
@@ -401,7 +401,7 @@ ws.onerror = function(error) {
};
```
### ws://host:port/ws/fan/{service_name}
### ws://host:port/api/websocket/fan/{service_name}
Получение логов сервиса (все реплики).
@@ -416,14 +416,14 @@ ws.onerror = function(error) {
```javascript
const token = "your-jwt-token";
const serviceName = "web";
const ws = new WebSocket(`ws://localhost:9001/ws/fan/${serviceName}?token=${token}&tail=100`);
const ws = new WebSocket(`ws://localhost:9001/api/websocket/fan/${serviceName}?token=${token}&tail=100`);
ws.onmessage = function(event) {
console.log('Логи сервиса:', event.data);
};
```
### ws://host:port/ws/fan_group
### ws://host:port/api/websocket/fan_group
Получение логов группы сервисов.
@@ -438,7 +438,7 @@ ws.onmessage = function(event) {
```javascript
const token = "your-jwt-token";
const services = "web,db,redis";
const ws = new WebSocket(`ws://localhost:9001/ws/fan_group?services=${services}&token=${token}&tail=100`);
const ws = new WebSocket(`ws://localhost:9001/api/websocket/fan_group?services=${services}&token=${token}&tail=100`);
ws.onmessage = function(event) {
console.log('Логи группы сервисов:', event.data);
@@ -522,7 +522,7 @@ def login(username, password):
# Получение списка контейнеров
def get_containers(token):
headers = {"Authorization": f"Bearer {token}"}
response = requests.get(f"{BASE_URL}/api/services", headers=headers)
response = requests.get(f"{BASE_URL}/api/containers/services", headers=headers)
return response.json()
# Получение логов контейнера
@@ -563,7 +563,7 @@ class LogBoardAPI {
if (projects) params.append('projects', projects);
if (includeStopped) params.append('include_stopped', 'true');
const response = await fetch(`${this.baseUrl}/api/services?${params}`, {
const response = await fetch(`${this.baseUrl}/api/containers/services?${params}`, {
headers: this.headers
});
return await response.json();
@@ -592,7 +592,7 @@ class LogBoardAPI {
// WebSocket для live-логов
createLogsWebSocket(containerId, tail = 100) {
const ws = new WebSocket(
`ws://${this.baseUrl.replace('http://', '')}/ws/logs/${containerId}?token=${this.token}&tail=${tail}`
`ws://${this.baseUrl.replace('http://', '')}/api/websocket/logs/${containerId}?token=${this.token}&tail=${tail}`
);
return ws;
}
@@ -654,12 +654,12 @@ echo "Токен получен: ${TOKEN:0:20}..."
# Получение списка контейнеров
echo "Получение списка контейнеров..."
curl -s -X GET "$BASE_URL/api/services" \
curl -s -X GET "$BASE_URL/api/containers/services" \
-H "Authorization: Bearer $TOKEN" \
| jq '.[] | {name: .name, status: .status, project: .project}'
# Получение логов первого контейнера
CONTAINER_ID=$(curl -s -X GET "$BASE_URL/api/services" \
CONTAINER_ID=$(curl -s -X GET "$BASE_URL/api/containers/services" \
-H "Authorization: Bearer $TOKEN" \
| jq -r '.[0].id')