GenAI Observability 구현 모범 사례
개요
이 가이드는 프로덕션 준비된 GenAI Observability 솔루션을 구축하기 위한 전술적이고 구현별 모범 사례를 제공합니다. 이 모범 사례는 실제 배포 경험과 얻은 교훈을 기반으로 합니다.
OpenTelemetry 계측
메트릭 명명 규칙
일관되고 설명적인 이름을 사용하세요:
# ✅ Good - Clear, hierarchical naming
"genai.token.input.count"
"genai.token.output.count"
"genai.request.duration"
"genai.request.error.count"
# ❌ Bad - Ambiguous, inconsistent
"tokens"
"input_tok"
"req_time"
"errors"
필수 차원
항상 다음 차원을 포함하세요:
dimensions = {
"model": "anthropic.claude-3-haiku-20240307-v1:0",
"cloud_provider": "aws", # aws, gcp, azure, on-prem
"application": "chatbot",
"environment": "production",
"region": "us-east-1"
}
선택적이지만 권장되는 차원
optional_dimensions = {
"user_id": "hashed_user_id", # Hash for privacy
"session_id": "session_123",
"prompt_template": "customer_support_v2",
"model_version": "2024-03-07",
"feature_flag": "new_prompt_enabled"
}
계측 코드 예시
from opentelemetry import metrics
from opentelemetry.sdk.metrics import MeterProvider
from opentelemetry.exporter.otlp.proto.grpc.metric_exporter import OTLPMetricExporter
# Initialize meter
meter = metrics.get_meter(__name__)
# Create instruments
token_input_counter = meter.create_counter(
name="genai.token.input.count",
description="Number of input tokens consumed",
unit="tokens"
)
token_output_counter = meter.create_counter(
name="genai.token.output.count",
description="Number of output tokens generated",
unit="tokens"
)
latency_histogram = meter.create_histogram(
name="genai.request.duration",
description="Request duration in milliseconds",
unit="ms"
)
# Record metrics
def record_llm_metrics(model, provider, input_tokens, output_tokens, latency_ms):
dimensions = {
"model": model,
"cloud_provider": provider
}
token_input_counter.add(input_tokens, dimensions)
token_output_counter.add(output_tokens, dimensions)
latency_histogram.record(latency_ms, dimensions)
CloudWatch 구성
메트릭 네임스페이스 전략
계층적 네임스페이스를 사용하세요:
AIObservability # 루트 네임스페이스
├── Production # 환경별
│ ├── Chatbot # 애플리케이션별
│ └── SearchAssistant
└── Development
메트릭 기간 선택
적절한 기간을 선택하세요:
- 고빈도 메트릭 (요청 수, 오류): 60초
- 중빈도 메트릭 (지연시간, 토큰): 300초 (5분)
- 저빈도 메트릭 (일일 비용): 3600초 (1시간)
CloudWatch Logs 구조
구조화된 로깅을 사용하세요:
{
"timestamp": "2026-03-04T10:30:00Z",
"level": "INFO",
"model": "gpt-4o",
"cloud_provider": "azure",
"input_tokens": 45,
"output_tokens": 234,
"latency_ms": 1523,
"cost_usd": 0.0234,
"user_id": "hashed_abc123",
"prompt_template": "summarization_v3",
"success": true
}
로그 그룹 구성
/genai-observability/
├── application-logs # 애플리케이션 수준 로그
├── model-invocations # LLM 요청/응답 로그
├── errors # 오류 로그만
└── audit # 컴플라이언스 감사 추적