로그 관리

로그를 검색하고, 트레이스를 유지합니다

로그는 리소스 속성과 트레이스 ID를 그대로 유지한 채 구조화된 상태로 도착합니다. 따라서 검색 결과는 막다른 길이 아니며, 어느 줄에서든 그것을 기록한 요청을 열 수 있습니다.

화면

심각도·서비스·속성을 하나의 필터 레일에

패싯은 실제로 범위 안에 있는 행에서 계산되므로, 각 심각도 옆의 건수는 지금 보게 될 건수 그 자체이지 오래된 요약이 아닙니다.

Structured log search with severity facets and attribute filters down the left rail
/logs severity >= WARN
signal
logs
transport
OTLP · no agent
severity
TRACE · DEBUG · INFO · WARN · ERROR · FATAL
filters
body · resource.* · log.*
joins.on
trace_id · span_id
buckets
5 min

움직임

흐르고 있는 스트림

줄은 기록되는 대로 도착하며, 각각 서비스와 심각도 태그가 붙습니다. 이것은 테일 보기이며, 검색이 반환하는 것과 같은 행입니다.

logs · stream LIVE
12:04:18 INFO edge GET /api/orders/8421 200 412ms
12:04:18 INFO orders-api load_order order_id=8421 366ms
12:04:18 DEBUG auth verify_jwt iss=auth.maple.dev 38ms
12:04:18 INFO postgres SELECT line_items rows=12 158ms
12:04:18 INFO shipping rate_quote carrier=ups 96ms
12:04:18 WARN fedex-api POST /rates retried (1/3) 72ms
12:04:18 INFO redis SET order:8421:rate ttl=3600 14ms
12:04:19 INFO edge GET /api/cart 200 94ms
12:04:19 INFO cart-svc load_cart user=u_4109 58ms
12:04:19 DEBUG feature-flag evaluate fast_checkout=false
12:04:19 ERROR payments stripe.charge declined card=v•••4242 204ms
12:04:19 WARN payments fallback to authorize_only flow
12:04:19 INFO kafka produce orders.canceled offset=98041
12:04:20 INFO edge POST /webhooks/stripe 200 26ms
12:04:20 INFO events dispatch payment.failed → ops
12:04:20 DEBUG scheduler reschedule retry_at=12:04:25
12:04:20 INFO edge GET /api/inventory 200 41ms
12:04:20 INFO inventory lookup sku=SKU-9081 region=iad 23ms
12:04:20 WARN inventory stock low sku=SKU-9081 qty=3
12:04:21 INFO search query "red shoes" hits=412 82ms
12:04:21 INFO edge GET /api/recos 200 67ms
12:04:21 DEBUG recos model=v3.2 cohort=A2
12:04:21 INFO edge POST /api/feedback 201 18ms
12:04:21 INFO analytics track event=checkout_started
12:04:18 INFO edge GET /api/orders/8421 200 412ms
12:04:18 INFO orders-api load_order order_id=8421 366ms
12:04:18 DEBUG auth verify_jwt iss=auth.maple.dev 38ms
12:04:18 INFO postgres SELECT line_items rows=12 158ms
12:04:18 INFO shipping rate_quote carrier=ups 96ms
12:04:18 WARN fedex-api POST /rates retried (1/3) 72ms
12:04:18 INFO redis SET order:8421:rate ttl=3600 14ms
12:04:19 INFO edge GET /api/cart 200 94ms
12:04:19 INFO cart-svc load_cart user=u_4109 58ms
12:04:19 DEBUG feature-flag evaluate fast_checkout=false
12:04:19 ERROR payments stripe.charge declined card=v•••4242 204ms
12:04:19 WARN payments fallback to authorize_only flow
12:04:19 INFO kafka produce orders.canceled offset=98041
12:04:20 INFO edge POST /webhooks/stripe 200 26ms
12:04:20 INFO events dispatch payment.failed → ops
12:04:20 DEBUG scheduler reschedule retry_at=12:04:25
12:04:20 INFO edge GET /api/inventory 200 41ms
12:04:20 INFO inventory lookup sku=SKU-9081 region=iad 23ms
12:04:20 WARN inventory stock low sku=SKU-9081 qty=3
12:04:21 INFO search query "red shoes" hits=412 82ms
12:04:21 INFO edge GET /api/recos 200 67ms
12:04:21 DEBUG recos model=v3.2 cohort=A2
12:04:21 INFO edge POST /api/feedback 201 18ms
12:04:21 INFO analytics track event=checkout_started
14.2k events / minute retention 30d · structured

할 수 있는 일

로그 한 줄에 물어볼 수 있는 것

/logs?q=
본문과 속성을 검색
리소스 속성과 로그 속성은 덩어리가 아니라 컬럼입니다. service.name, deployment.environment, 직접 정의한 키를 메시지 본문과 같은 방식으로 걸러낼 수 있습니다.
severity
의미로서의 심각도
OTel의 여섯 단계 심각도는 각자 고유한 색과 패싯을 가집니다. WARN과 ERROR는 클릭 한 번 거리에 있고, 어느 쪽도 텍스트 일치 속에 묻히지 않습니다.
trace_id
줄 뒤의 트레이스를 열기
트레이스 ID를 가진 줄에서는 해당 요청을 열 수 있으며, 그 줄이 기록된 시점에 실행 중이던 스팬 위치로 이동합니다.
volume histogram
상세보다 먼저 볼륨
결과 위 히스토그램은 심각도별로 쌓여 있어서, 14시 20분의 ERROR 급증은 한 줄도 읽기 전에 눈에 들어옵니다.
OTLP
OTel 정의 그대로 전송
로그는 트레이스·메트릭과 같은 OTLP로 들어옵니다. 로그 전송 에이전트도, 따로 유지할 두 번째 파이프라인도, 별도로 신경 쓸 보관 기간도 없습니다.

다음은

이 데이터를 공유하는 화면

OTLP를 Maple로 보내세요.

엔드포인트 하나, 키 하나. 트레이스·로그·메트릭·세션이 첫 요청부터 같은 트레이스 ID로 모입니다.