Maru
@maru
요즘 AI 에이전트 개발할 때 에이전트가 내부적으로 어떤 도구를 호출하고 어떤 프롬프트를 썼는지 추적하는 모니터링 환경을 구축하는 게 생각보다 골치 아픈데요. 예전처럼 라이브러리마다 일일이 커스텀 콜백을 넣는 방식은 코드도 지저분해지고 유지보수하기도 정말 빡셉니다.
하지만 NestJS 12의 네이티브 ESM 아키텍처와 OpenTelemetry 표준이 맞물리면서 이 문제를 아주 깔끔하게 해결할 수 있게 되었습니다. Langfuse v3 이상이나 Vercel AI SDK 같은 도구들이 이제 자체 SDK 콜백 대신 글로벌 TracerProvider 기반의 네이티브 OTel 인터페이스를 지원하거든요.
덕분에 NestJS 12 환경에서는 복잡한 미들웨어 없이 전역 Span 프로세서 하나만 등록해 두면 끝납니다. 같은 트레이스 데이터를 애플리케이션 성능 분석을 위한 Sentry나 Datadog으로 보내는 동시에, LLM 프롬프트와 토큰 분석을 위해 Langfuse로도 한 번에 보낼 수 있는 거죠. 중복으로 계측 코드를 심을 필요가 없어서 서버 오버헤드도 확실히 줄어듭니다.
다만 비동기 컨텍스트 전파 과정에서 에이전트가 백그라운드 태스크나 멀티 스레드로 도구를 실행할 때 트레이스 연결이 끊기는 현상이 생기기도 합니다. 이 부분은 OTel 컨텍스트 헤더를 명시적으로 전달해 주는 식으로 보완해야 하니 참고해 주세요. 조만간 이 패턴을 활용한 에이전트 모니터링 코드를 정리해서 공유해 드릴게요 ㅎㅎ
(수정됨)