이 문서를 통해 아래 질문들에 답할 수 있게 됩니다.
- AI 기능에서 trace, log, metric은 각각 무엇을 남겨야 하는가?
- prompt version, source id, token usage는 왜 중요한가?
- observability 비용과 개인정보 위험은 어떻게 줄이는가?
개요
AI observability는 일반 API observability에 모델 호출, token, prompt, context, retrieval, tool call 정보를 더한 것이다. OpenTelemetry GenAI semantic conventions는 이런 정보를 표준화하려는 방향을 제공한다.
관측성의 목표는 장애 때 원인을 찾고, 비용과 품질을 설명하는 것이다.
Trace
trace는 한 요청의 흐름을 연결한다.
HTTP request
auth
context build
vector search
llm call
output validation
response각 span에는 latency와 status가 있어야 한다.
Log
로그는 이벤트를 남긴다.
- prompt version
- model profile
- error type
- validation status
- source id 목록
- tool name
- retry count
- fallback 여부
원문 prompt와 context는 기본 로그에 남기지 않는다.
Metrics
metric은 추세를 본다.
- request count
- P95 latency
- input/output token
- validation failure rate
- refusal rate
- fallback rate
- retrieval empty rate
- tool error rate
- queue depth
- cost by tenant
코드로 이해하기
{
"event": "ai.request.completed",
"trace_id": "trace-123",
"feature": "document_qa",
"prompt_version": "doc-qa-v3",
"model": "gpt-4.1-mini",
"input_tokens": 2100,
"output_tokens": 380,
"retrieval_source_count": 5,
"validation_status": "ok",
"elapsed_ms": 5200
}이 정도 정보만 있어도 많은 장애를 분석할 수 있다.
고카디널리티 주의
다음은 tag로 쓰면 위험하다.
- 사용자 질문 원문
- prompt 전문
- context 전문
- source id 수백 개
- document title
tag cardinality가 높아지면 observability 비용이 폭증한다.
인프라 협업 포인트
인프라팀과 trace sampling, log retention, metric cardinality, 민감정보 마스킹, 대시보드 owner를 합의한다.
개인 프로젝트 최소 기준
- prompt version, model, elapsed time을 로그로 남긴다.
- token usage를 저장한다.
- error type을 구분한다.
- 원문 로그는 피한다.
기업 운영 수준 기준
- OpenTelemetry 기반 trace를 연결한다.
- tenant별 비용 metric을 둔다.
- AI 특화 failure rate를 대시보드화한다.
- 로그 접근 권한과 보존 기간을 정한다.
실전 팁
- trace id를 worker와 tool call에도 전달한다.
- source 전문보다 source id와 version을 남긴다.
- validation failure rate는 prompt 회귀 신호다.
- fallback rate는 provider 장애와 품질 저하 신호다.
위험 신호!
- token usage를 모른다.
- prompt version 없이 로그를 남긴다.
- prompt/context 원문이 일반 로그에 있다.
- trace가 API 서버에서 worker로 이어지지 않는다.
확인 질문
확인 질문
- AI observability에서 prompt version이 중요한 이유는 무엇인가?
- 품질 회귀와 장애가 어떤 prompt 변경 이후 발생했는지 추적하기 위해서다.
- 고카디널리티 tag가 위험한 이유는 무엇인가?
- observability 비용과 저장량을 크게 증가시킬 수 있기 때문이다.
Spring AI 적용 연결
- Spring AI 호출 로그는 prompt 전문보다
conversationId, model profile, token usage, latency, error type 같은 운영 필드를 중심으로 남긴다. 관측성 설계는 11. Observability와 장애 대응 런북에서 이어진다. - trace가 품질 회귀 분석으로 이어지는 방식은 10. Evaluation Testing Regression을 함께 본다.