Ch5. 관측성·SLO
모델/툴/정책 실행을 추적 가능한 신호로 수집하고 SLO로 운영하는 방식
핵심 요약
- LLMOps 관측의 기준은 로그 양이 아니라 문제 발생 시 원인을 재구성하는 속도다.
- 요청·모델·에이전트·도구·정책·추적 6개 영역의 필수 필드(trace_id, prompt_version, mcp_server, approval_id 등)를 trace schema로 강제 수집한다.
- Availability·Quality SLI와 Error Budget((1−SLO)×총 요청 수)으로 SLO를 정의하고, 99.9% 가용성·95% 품질·p95 4초 등 목표를 운영한다.
- OWASP AOS(Instrumentable·Traceable·Inspectable)와 OTel GenAI 컨벤션은 상호 보완적이며, 둘 다 변동이 크므로 내부 canonical schema에 매핑하고 versioning한다.
- 평균 지연 대신 p95/p99·상위 테넌트·정책 실패 구간을 기본 뷰로 두고, debug trace를 grading·dataset 승격·online sampling으로 이어 drift를 잡아낸다.
문제가 터졌을 때 원인을 빠르게 되짚을 수 없다면 관측은 부족한 것입니다.
LLMOps 관측의 기준은 로그 양이 아니라 원인 재구성 속도입니다.
필수 신호
| 영역 | 필수 필드 |
|---|---|
| 요청 | request_id, tenant_id, user_segment, intent, session_id |
| 모델 | model_id, prompt_version, token_in/out, cached_tokens, reasoning_mode |
| 에이전트 | agent_id, run_id, handoff_from/to, state_version |
| 도구 | tool_name, tool_call_id, mcp_server, latency_ms, status, side_effect |
| 정책 | policy_pack, guardrail_name, decision, violation_type, approval_id |
| 추적 | trace_id, span_id, parent_span_id, eval_score, dataset_version |
Trace schema 최소 예시
{
"trace_id": "tr_01hx9...",
"run_id": "run_20260517_001",
"tenant_id": "acme-enterprise",
"model": {
"provider": "openai",
"model_id": "gpt-5.4-mini",
"prompt_version": "p-20260517.2",
"input_tokens": 3840,
"cached_input_tokens": 2560,
"output_tokens": 620
},
"tool_calls": [
{
"tool_call_id": "tool_01",
"mcp_server": "github-readonly-prod",
"side_effect": false,
"status": "ok"
}
],
"approval": {
"approval_id": "appr_01",
"decision": "approved"
}
}SLI/SLO 정의
| SLO 항목 | 목표 예시 |
|---|---|
| Availability SLO | 99.9% |
| Quality SLO | 95% 이상 |
| p95 Latency SLO | 4초 이하 |
| Policy Violation SLO | 0.2% 이하 |
대시보드 우선순위
- SLO 현황 및 burn rate
- 모델/프롬프트별 실패 분포
- 정책 차단/승인 비율
- 비용 상위 테넌트/기능
트레이싱 실무 기준
- 요청 단위 분산 트레이스(trace_id)를 강제합니다.
- 모델 호출/툴 호출/정책 판단 스팬(span)을 분리합니다.
- 고위험 경로는 100% 샘플링, 일반 경로는 적응형 샘플링을 사용합니다.
OWASP Agent Observability Standard (AOS)
OWASP AOS는 에이전트 시스템의 관측성을 표준화하려는 공개 프로젝트입니다. 2026년 5월 기준으로는 work in progress로 보는 편이 안전하고, 3가지 축으로 나뉩니다:
| 축 | 요구사항 | 구현 표준 |
|---|---|---|
| Instrumentable | 에이전트·도구 호출을 계측 가능하게 노출 | MCP + A2A 프로토콜 네이티브 계측 |
| Traceable | 요청-응답 전체 경로를 추적 가능 | OCSF (Open Cybersecurity Schema Framework) + OTel 통합 |
| Inspectable | 에이전트 구성 요소를 감사 가능 | CycloneDX / SWID / SPDX 기반 AI BOM |
AOS 채택 전략
OWASP AOS는 기존 OTel GenAI Semantic Conventions를 보완합니다. OTel은 런타임 트레이싱을, AOS는 에이전트 수준의 감사·보안 관측을 맡습니다. 다만 AOS 자체가 아직 빠르게 바뀌니 내부 trace schema를 versioning하고 breaking change를 흡수할 adapter를 둡니다.
2026년 관측 도구 생태계
| 도구 | 버전 | 특징 |
|---|---|---|
| Langfuse | v4.0.0 | MIT 오픈소스, LLM-as-a-Judge/실험/플레이그라운드 공개, 월 600만+ SDK 설치, OTel 네이티브 |
| LangSmith Fleet | 최신 | Agent Builder에서 리브랜딩. 서브에이전트 실시간 상태 카드, LangSmith Fetch CLI, 통합 비용 뷰, 실험 베이스라인 피닝 |
| Arize Phoenix | v13.0.3 | CLI 지원 (Claude Code/Cursor 통합), LDAP 인증, 오픈소스 |
| Braintrust Loop AI | 최신 | 자연어 스코러 자동 생성, Java/Go/Ruby/C# SDK 추가, OTel 네이티브, SOC 2 Type II |
OpenTelemetry GenAI Semantic Conventions
OTel GenAI 시맨틱 컨벤션은 2026년 5월 기준 Development 상태입니다.
| 항목 | 현재 상태 |
|---|---|
| 이벤트 (입력/출력) | GenAI input/output event 정의 |
| 메트릭 (토큰/지연) | GenAI operation metric 정의 |
| 모델 스팬 | OpenAI/Anthropic/AWS Bedrock/Azure AI Inference 등 기술별 convention 존재 |
| 에이전트 스팬 | GenAI agent/framework span 정의 포함 |
| MCP 스팬 | MCP semantic convention 포함 |
| OWASP AOS 연계 | AOS Traceable 축이 OTel GenAI 컨벤션 참조 |
| 벤더 채택 | Langfuse, Phoenix, Braintrust, NeMo Guardrails 등에서 OTel 연계 확대 |
OTel 채택 동향
표준이 안정화되기 전이라도 OTel 호환 필드를 내부 canonical schema로 매핑해 두면 벤더를 갈아탈 때나
cross-service trace를 잇기가 쉬워집니다. 최신 GenAI convention을 쓸 때는 OTEL_SEMCONV_STABILITY_OPT_IN 사용
여부와 emitted field 버전을 기록합니다.
Trace에서 Eval로 이어지는 운영 루프
| 단계 | 산출물 |
|---|---|
| Debug trace | 한 run에서 어떤 model/tool/handoff/approval이 실행됐는지 재구성 |
| Trace grading | tool 선택, handoff 타이밍, guardrail 발동 여부를 structured rubric으로 채점 |
| Dataset 승격 | 반복 실패 trace를 regression/eval dataset으로 저장 |
| Online sampling | 배포 후 샘플 trace를 같은 grader로 점검해 drift 탐지 |
운영 기준
평균 지연시간은 운영 판단에 별 도움이 안 될 때가 많습니다. p95/p99, 상위 테넌트 구간, 정책 실패 구간을 기본 뷰로 쓰세요.
기준일과 근거
| 항목 | 기준일 | 재확인 권장 | 1차 출처 |
|---|---|---|---|
| OTel GenAI semantic conventions | 2026-05-17 | 2026-06-16 | https://opentelemetry.io/docs/specs/semconv/gen-ai/ |
| OWASP AOS | 2026-05-17 | 2026-06-16 | https://aos.owasp.org/aos/ |
| Agents SDK tracing | 2026-05-17 | 2026-06-16 | https://developers.openai.com/api/docs/guides/agents/integrations-observability |