LangSmith 배포를 위한 관측성 스택 배포하기
LangSmith 배포를 위한 관측성 스택 배포하기
⚠️ 지원 중단됨: LangSmith Observability Helm 차트는 더 이상 지원되지 않아요. 더 이상 유지보수하거나 지원하지 않으며, 아래 문서는 참고용으로만 보존된 내용이에요.
⚠️ 이 섹션은 Kubernetes 배포에만 적용돼요.
LangSmith 애플리케이션은 선택한 백엔드로 보낼 수 있는 텔레메트리 데이터를 노출해요. 관측성 스택이 아직 없거나, LangSmith 텔레메트리를 메인 애플리케이션과 분리하고 싶다면 LangSmith Observability Helm 차트를 사용해 기본 관측성 스택을 배포할 수 있어요.
출처: 문서
본문
섹션 1: Prometheus 익스포터
셀프 호스팅 배포의 구성 요소에 대해 메트릭 익스포터만 배포하고 싶다면 이 섹션을 사용하세요. 배포한 익스포터의 메트릭은 여러분의 텔레메트리로 스크래핑할 수 있어요. 전체 관측성 스택을 대신 배포하고 싶다면 End-to-End 배포 섹션으로 이동하세요.
헬름 차트는 Redis, Postgres, Nginx, Kube state metrics에서 메트릭을 노출하는 Prometheus 익스포터 세트를 제공해요.
langsmith_obs_config.yaml이라는 로컬 파일을 만드세요.- 이 파일의 값을
langsmith_obs_config.yaml로 복사하고, LangSmith 배포에 맞게 값을 수정하세요. helm search repo langchain/langsmith-observability --versions를 실행해 차트의 최신 버전을 찾으세요.- 최신 버전 번호를 확인한 뒤
helm install langsmith-observability langchain/langsmith-observability --values langsmith_obs_config.yaml --version <version> -n <namespace> --wait --debug를 실행하세요.
이렇게 하면 다음 서비스 엔드포인트에서 메트릭을 스크래핑할 수 있어요:
- Postgres:
langsmith-observability-postgres-exporter:9187/metrics - Redis:
langsmith-observability-redis-exporter:9121/metrics - Nginx:
langsmith-observability-nginx-exporter:9113/metrics - KubeStateMetrics:
langsmith-observability-kube-state-metrics:8080/metrics
설치가 정상적으로 진행됐다면 다음과 같은 출력이 보여요:
Release "langsmith-observability" has been installed. Happy Helming!NAME: langsmith-observabilityLAST DEPLOYED: Wed Jun 25 11:17:34 2025NAMESPACE: langsmith-observabilitySTATUS: deployedREVISION: 1
그리고 kubectl get pods -n langsmith-observability를 실행하면:
langsmith-observability-kube-state-metrics-b58bb8db4-bm4g5 1/1 Running 0 2m22slangsmith-observability-nginx-exporter-6d686d9d4b-5qw9v 1/1 Running 0 2m22slangsmith-observability-postgres-exporter-67d5db5684-tffbm 1/1 Running 0 2m22slangsmith-observability-redis-exporter-846c4d65cb-vbtwd 1/1 Running 0 2m22s
섹션 2: 전체 관측성 스택
⚠️ 이것은 프로덕션용 관측성 스택이 아니에요. 배포의 로그·메트릭·트레이스에 대한 빠른 인사이트를 얻는 용도로 사용하세요. 하루 수십 GB 수준의 데이터만 처리하도록 설계되었어요.
이 섹션에서는 Helm 차트를 사용해 LangSmith용 end-to-end 관측성 스택을 배포하는 방법을 보여드려요.
이 차트는 Grafana의 오픈소스 LGTM 스택을 기반으로 구축됐어요. 구성 요소는 다음과 같아요:
그리고 텔레메트리 데이터 수집을 위한 OpenTelemetry Collector도 포함돼요.
사전 준비 사항
1. 컴퓨팅 리소스
스택의 각 부분에 대한 리소스 요청/제한은 헬름 차트에서 수정할 수 있어요. 현재 할당량(request/limit)은 다음과 같아요:
- Loki:
2vCPU/3vCPU + 2Gi/4Gi - Mimir:
1vCPU/2vCPU + 2Gi/4Gi - Tempo:
1vCPU/2vCPU + 4Gi/6Gi
헬름 차트를 올리기 전에 해당 리소스를 할당했는지 확인하거나, 헬름 설정 파일에서 리소스 값을 수정하세요.
2. Cert-Manager
헬름 차트는 OpenTelemetry Operator를 사용해 컬렉터를 프로비저닝해요. 이 Operator는 Kubernetes 클러스터에 cert-manager가 설치되어 있어야 해요.
설치되어 있지 않다면 다음 명령을 실행하세요:
helm repo add jetstack https://charts.jetstack.iohelm repo updatehelm install cert-manager jetstack/cert-manager -n cert-manager --create-namespace
3. OpenTelemetry Operator
다음 명령으로 OpenTelemetry Operator를 설치하세요:
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-chartshelm repo updatehelm install opentelemetry-operator open-telemetry/opentelemetry-operator -n <namespace>
설치
다음 지침을 따르면 OTel 컬렉터, LGTM 스택, Grafana, Prometheus 익스포터가 올라와요.
langsmith_obs_config.yaml이라는 로컬 파일을 만드세요.- 이 파일의 값을
langsmith_obs_config.yaml로 복사하고, LangSmith 배포에 맞게 값을 수정하세요. helm search repo langchain/langsmith-observability --versions로 차트의 최신 버전을 찾으세요.- 최신 버전 번호를 확인한 뒤
helm install langsmith-observability langchain/langsmith-observability --values langsmith_obs_config.yaml --version <version> -n <namespace> --wait --debug를 실행하세요.
참고: 설정 파일의
otelCollector아래 boolean 값을 수정해서 로그·메트릭·트레이스를 선택적으로 수집할 수 있어요. 또한 백엔드의 각 구성 요소(Loki, Mimir, Tempo)를 선택적으로 올릴 수도 있어요.
설치가 정상적으로 진행됐다면 다음과 같은 출력이 보여요:
Release "langsmith-observability" has been installed. Happy Helming!NAME: langsmith-observabilityLAST DEPLOYED: Wed Jun 25 11:17:34 2025NAMESPACE: langsmith-observabilitySTATUS: deployedREVISION: 1
그리고 kubectl get pods -n langsmith-observability를 실행하면:
langsmith-observability-collector-gateway-collector-7746fb8pzbg 1/1 Running 0 5m26slangsmith-observability-grafana-7c6fc976f9-cdbvr 1/1 Running 0 2m49slangsmith-observability-kube-state-metrics-b58bb8db4-bm4g5 1/1 Running 0 5m27slangsmith-observability-loki-0 2/2 Running 0 5m27slangsmith-observability-loki-chunks-cache-0 2/2 Running 0 5m27slangsmith-observability-loki-gateway-769fb6fff8-zjsn5 1/1 Running 0 5m27slangsmith-observability-loki-results-cache-0 2/2 Running 0 5m27slangsmith-observability-mimir-0 1/1 Running 0 5m26slangsmith-observability-nginx-exporter-6d686d9d4b-5qw9v 1/1 Running 0 5m27slangsmith-observability-postgres-exporter-67d5db5684-tffbm 1/1 Running 0 5m27slangsmith-observability-redis-exporter-846c4d65cb-vbtwd 1/1 Running 0 5m27slangsmith-observability-tempo-0 1/1 Running 0 5m27sopentelemetry-operator-756dff697-vblbn 2/2 Running 0 12m
설치 후 작업
LangSmith에서 로그와 트레이스 활성화
관측성 헬름 차트를 설치했다면, 로그와 트레이스 수집을 활성화하기 위해 LangSmith 헬름 설정 파일에 다음 값을 설정해야 해요.
commonPodAnnotations:
# E.g.: "langsmith-observability/langsmith-observability-collector-sidecar"
sidecar.opentelemetry.io/inject: "${LANGSMITH_OBS_NAMESPACE}/${LANGSMITH_OTEL_CRD_NAME}"
observability:
tracing:
enabled: true
# Replace this with the endpoint of your trace collector.
# E.g.: "http://langsmith-observability-collector-gateway-collector.langsmith-observability.svc.cluster.local:4318/v1/traces"
endpoint: "http://${GATEWAY_COLLECTOR_SERVICE_NAME}.${LANGSMITH_OBS_NAMESPACE}.svc.cluster.local:4318/v1/traces"
참고:
${LANGSMITH_OTEL_CRD_NAME}을 얻으려면kubectl get opentelemetrycollectors -n ${LANGSMITH_OBS_NAMESPACE}를 실행하고 MODE가sidecar인 것의 이름을 선택하세요.${GATEWAY_COLLECTOR_SERVICE_NAME}을 얻으려면kubectl get services -n ${LANGSMITH_OBS_NAMESPACE}를 실행하고 Ports가 4317/4318이며 ClusterIP가 설정된 것을 선택하세요. 대략langsmith-observability-collector-gateway-collector와 같은 이름이에요.
이제 helm upgrade langsmith langchain/langsmith --values langsmith_config.yaml -n <langsmith-namespace> --wait --debug를 실행하세요.
업그레이드 후 kubectl get pods -n <langsmith-namespace>를 실행하면 다음을 볼 수 있어요(사이드카 컬렉터의 2/2 표시에 주목하세요):
langsmith-ace-backend-7dc85f7dff-xjbkj 2/2 Running 0 7m53slangsmith-backend-566b66979c-rgcfh 2/2 Running 1 7m53slangsmith-clickhouse-0 2/2 Running 0 7m49slangsmith-frontend-7cf8549885-vpkns 2/2 Running 0 7m53slangsmith-platform-backend-5d46db7d9d-f6gh7 2/2 Running 0 7m52slangsmith-platform-backend-5d46db7d9d-lrr4d 2/2 Running 1 7m41slangsmith-platform-backend-5d46db7d9d-pcp27 2/2 Running 0 7m28slangsmith-playground-65d4c9699c-h656r 2/2 Running 0 7m52slangsmith-postgres-0 2/2 Running 0 7m51slangsmith-queue-bdcd45bd6-htssd 2/2 Running 0 7m52slangsmith-queue-bdcd45bd6-pwdx4 2/2 Running 0 6m31slangsmith-queue-bdcd45bd6-xqrb8 2/2 Running 0 5m11slangsmith-redis-0 2/2 Running 0 7m51s
Grafana 사용법
모든 것이 설치되면 다음과 같이 진행하세요. Grafana 비밀번호를 얻으려면:
kubectl get secret langsmith-observability-grafana -n <langsmith_observability_namespace> -o jsonpath="{.data.admin-password}" | base64 --decode
그런 다음 langsmith-observability-grafana 컨테이너에 3000 포트로 port-forward를 하고, 브라우저에서 localhost:3000을 여세요. 사용자 이름 admin과 위 비밀번호로 Grafana에 로그인하세요.
Grafana에 들어가면 UI로 로그·메트릭·트레이스를 모니터링할 수 있어요. Grafana에는 배포의 주요 구성 요소를 모니터링하기 위한 대시보드 세트도 사전 포함되어 있어요.