LangSmith 배포를 위한 관측성 스택 배포하기

LangSmith 배포를 위한 관측성 스택 배포하기

⚠️ 지원 중단됨: LangSmith Observability Helm 차트는 더 이상 지원되지 않아요. 더 이상 유지보수하거나 지원하지 않으며, 아래 문서는 참고용으로만 보존된 내용이에요.

⚠️ 이 섹션은 Kubernetes 배포에만 적용돼요.

LangSmith 애플리케이션은 선택한 백엔드로 보낼 수 있는 텔레메트리 데이터를 노출해요. 관측성 스택이 아직 없거나, LangSmith 텔레메트리를 메인 애플리케이션과 분리하고 싶다면 LangSmith Observability Helm 차트를 사용해 기본 관측성 스택을 배포할 수 있어요.

출처: 문서

본문

섹션 1: Prometheus 익스포터

셀프 호스팅 배포의 구성 요소에 대해 메트릭 익스포터만 배포하고 싶다면 이 섹션을 사용하세요. 배포한 익스포터의 메트릭은 여러분의 텔레메트리로 스크래핑할 수 있어요. 전체 관측성 스택을 대신 배포하고 싶다면 End-to-End 배포 섹션으로 이동하세요.

헬름 차트는 Redis, Postgres, Nginx, Kube state metrics에서 메트릭을 노출하는 Prometheus 익스포터 세트를 제공해요.

  1. langsmith_obs_config.yaml이라는 로컬 파일을 만드세요.
  2. 파일의 값을 langsmith_obs_config.yaml로 복사하고, LangSmith 배포에 맞게 값을 수정하세요.
  3. helm search repo langchain/langsmith-observability --versions를 실행해 차트의 최신 버전을 찾으세요.
  4. 최신 버전 번호를 확인한 뒤 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 스택을 기반으로 구축됐어요. 구성 요소는 다음과 같아요:

  • 로그를 위한 Loki
  • 메트릭 + 알림을 위한 Mimir
  • 트레이스를 위한 Tempo
  • 모니터링 UI를 위한 Grafana

그리고 텔레메트리 데이터 수집을 위한 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 익스포터가 올라와요.

  1. langsmith_obs_config.yaml이라는 로컬 파일을 만드세요.
  2. 파일의 값을 langsmith_obs_config.yaml로 복사하고, LangSmith 배포에 맞게 값을 수정하세요.
  3. helm search repo langchain/langsmith-observability --versions로 차트의 최신 버전을 찾으세요.
  4. 최신 버전 번호를 확인한 뒤 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"

참고:

  1. ${LANGSMITH_OTEL_CRD_NAME}을 얻으려면 kubectl get opentelemetrycollectors -n ${LANGSMITH_OBS_NAMESPACE}를 실행하고 MODE가 sidecar인 것의 이름을 선택하세요.
  2. ${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에는 배포의 주요 구성 요소를 모니터링하기 위한 대시보드 세트도 사전 포함되어 있어요.

더 알아보기 (Learn more)