WebSocket μ°κ²° κ·μΉ
Base URL
wss://your-domain.com/api/ws
Plain Text
볡μ¬
νλ‘ν μ½
β’
κ°λ° νκ²½: ws:// (λΉμνΈν)
β’
νλ‘λμ
: wss:// (TLS μνΈν, νμ)
μΈμ¦ λ°©μ
Query Parameter λ°©μ (κΆμ₯)
wss://your-domain.com/api/ws/logs?token=Bearer_xxx
Plain Text
볡μ¬
Initial Message λ°©μ (λμ)
ws.onopen = () => {
ws.send(JSON.stringify({
type: 'auth',
token: 'Bearer_xxx'
}));
};
JavaScript
볡μ¬
μ°κ²° μλͺ μ£ΌκΈ°
βββββββββββββββ
β μ°κ²° μλ β
ββββββββ¬βββββββ
β
βΌ
βββββββββββββββ μΈμ¦ μ€ν¨
β μΈμ¦ νμΈ ββββββββββββββββΊ μ°κ²° κ±°λΆ
ββββββββ¬βββββββ
β μΈμ¦ μ±κ³΅
βΌ
βββββββββββββββ
β μ°κ²° μ±κ³΅ βββββ
ββββββββ¬βββββββ β
β β
βΌ β
βββββββββββββββ β
β λ°μ΄ν° μμ β β
ββββββββ¬βββββββ β
β β
βΌ β
βββββββββββββββ β
β μ°κ²° μ μ§? βββββ Yes
ββββββββ¬βββββββ
β No
βΌ
βββββββββββββββ
β μ°κ²° μ’
λ£ β
ββββββββ¬βββββββ
β
βΌ
βββββββββββββββ
β μ¬μ°κ²° μλ β
βββββββββββββββ
Plain Text
볡μ¬
μ€μκ° λ‘κ·Έ μ€νΈλ¦¬λ°
Endpoint
wss://your-domain.com/api/ws/services/{service_name}/logs
Plain Text
볡μ¬
Path Parameters
νλΌλ―Έν° | νμ
| νμ | μ€λͺ
| μμ |
service_name | string | ![]() | μλΉμ€λͺ
| "user-service" |
Query Parameters
νλΌλ―Έν° | νμ
| νμ | μ€λͺ
| κΈ°λ³Έκ° |
token | string | ![]() | μΈμ¦ ν ν° | - |
level | string | ![]() | λ‘κ·Έ λ 벨 νν° | "error" |
search | string | ![]() | λ©μμ§ κ²μμ΄ | - |
λ‘κ·Έ λ 벨 νν°
λ 벨 | μ€λͺ
| μ¬μ© μμ |
error | μλ¬ λ‘κ·Έλ§ | μ₯μ λͺ¨λν°λ§ (κΈ°λ³Έκ°) |
warning | κ²½κ³ λ‘κ·Έλ§ | μ μ¬μ λ¬Έμ μΆμ |
info | μ 보 λ‘κ·Έλ§ | μΌλ° λμ νμΈ |
debug | λλ²κ·Έ λ‘κ·Έλ§ | κ°λ°/λλ²κΉ
μ©λ |
all | λͺ¨λ λ 벨 | μ 체 λ‘κ·Έ μ€νΈλ¦Ό |
μ°κ²° μμ
// μλ¬ λ‘κ·Έλ§ μμ
const errorWs = new WebSocket(
'wss://your-domain.com/api/ws/services/user-service/logs?token=Bearer_xxx&level=error'
);
// λͺ¨λ λ‘κ·Έ μμ
const allWs = new WebSocket(
'wss://your-domain.com/api/ws/services/user-service/logs?token=Bearer_xxx&level=all'
);
// νΉμ ν€μλ ν¬ν¨ λ‘κ·Έλ§ μμ
const searchWs = new WebSocket(
'wss://your-domain.com/api/ws/services/user-service/logs?token=Bearer_xxx&search=database'
);
JavaScript
볡μ¬
λ©μμ§ ν¬λ§·
기본 ꡬ쑰
{
"type": "log",
"service_name": "user-service",
"timestamp": "2025-11-07T10:35:22.999Z",
"data": {
"log_id": "log_123abc",
"level": "error",
"message": "Database connection failed",
"trace_id": "trace_abc123",
"span_id": "span_002",
"attributes": {
"error.type": "ConnectionError",
"database.host": "db-primary",
"retry_count": 3
}
}
}
JSON
볡μ¬
νλ μ€λͺ
νλ | νμ
| μ€λͺ
|
type | string | λ©μμ§ νμ
(νμ "log") |
service_name | string | λ‘κ·Έλ₯Ό μμ±ν μλΉμ€λͺ
|
timestamp | string | λ‘κ·Έ λ°μ μκ° (ISO 8601) |
data.log_id | string | λ‘κ·Έ κ³ μ ID |
data.level | string | λ‘κ·Έ λ 벨 |
data.message | string | λ‘κ·Έ λ©μμ§ |
data.trace_id | string | μ°κ΄λ νΈλ μ΄μ€ ID (μ΅μ
) |
data.span_id | string | μ°κ΄λ μ€ν¬ ID (μ΅μ
) |
data.attributes | object | μΆκ° λ©νλ°μ΄ν° |
μ€μκ° μλ¦Ό
Endpoint
wss://your-domain.com/api/ws/notifications
Plain Text
볡μ¬
Query Parameters
νλΌλ―Έν° | νμ
| νμ | μ€λͺ
|
token | string | ![]() | μΈμ¦ ν ν° |
service | string | ![]() | νΉμ μλΉμ€λ§ ꡬλ
|
μ°κ²° μμ
// λͺ¨λ μλΉμ€μ μλ¦Ό μμ
const notificationWs = new WebSocket(
'wss://your-domain.com/api/ws/notifications?token=Bearer_xxx'
);
// νΉμ μλΉμ€μ μλ¦Όλ§ μμ
const serviceNotificationWs = new WebSocket(
'wss://your-domain.com/api/ws/notifications?token=Bearer_xxx&service=user-service'
);
JavaScript
볡μ¬
μλ¦Ό μ ν
μ ν | μ€λͺ
| μ¬κ°λ |
error_spike | μλ¬μ¨ κΈμ¦ | critical |
latency_spike | λ μ΄ν΄μ κΈμ¦ | warning |
service_down | μλΉμ€ λ€μ΄ | critical |
deployment | μ λ°°ν¬ μλ£ | info |
error_new | μλ‘μ΄ μλ¬ λ°μ | warning |
threshold_exceeded | μκ³κ° μ΄κ³Ό | warning |
λ©μμ§ ν¬λ§·
기본 ꡬ쑰
{
"type": "notification",
"notification_id": "notif_abc123",
"timestamp": "2025-11-07T10:35:22.123Z",
"data": {
"notification_type": "error_spike",
"severity": "critical",
"title": "μλ¬μ¨ κΈμ¦ κ°μ§",
"message": "user-serviceμ μλ¬μ¨μ΄ 5%λ₯Ό μ΄κ³Όνμ΅λλ€ (νμ¬: 12.3%)",
"service_name": "user-service",
"metadata": {
"current_error_rate": 12.3,
"threshold": 5.0,
"affected_endpoints": [
"GET /api/users/:id",
"POST /api/orders"
]
},
"action_url": "/services/user-service/errors"
}
}
JSON
볡μ¬
μ°Έκ³
μ°κ²° κ΄λ¦¬UI μ
λ°μ΄νΈ μ λ΅(λ‘κ·Έ μ€νΈλ¦¬λ°μ λν΄)
μλ¦Όμ²λ¦¬ μ°Έκ³ λ΄μ©
μλ¬ μ²λ¦¬
ꡬν μμ






