> ## Documentation Index
> Fetch the complete documentation index at: https://langchain-zh.cn/llms.txt
> Use this file to discover all available pages before exploring further.

# 为您的 LangSmith 部署配置可观测性栈

<Danger>
  **已弃用**：LangSmith 可观测性 Helm 图表已弃用。我们不再维护或提供支持。以下文档仅供参考。
</Danger>

<Warning>
  **本节仅适用于 Kubernetes 部署。**
</Warning>

LangSmith 应用程序会暴露遥测数据，这些数据可以发送到您选择的后端。如果您还没有可观测性栈，或者希望将 LangSmith 遥测数据与主应用程序分开，可以使用 LangSmith 可观测性 Helm 图表来部署一个基础的可观测性栈。

# 第一部分：Prometheus 导出器

如果您只想为自托管部署中的组件部署指标导出器，然后通过您的遥测系统抓取这些指标，请使用本节。如果您希望部署完整的可观测性栈，请转到[端到端部署部分](/langsmith/observability-stack#prerequisites)。

该 Helm 图表提供了一组 Prometheus 导出器，用于暴露 [Redis](https://github.com/prometheus-community/helm-charts/tree/main/charts/prometheus-redis-exporter)、[Postgres](https://github.com/prometheus-community/helm-charts/tree/main/charts/prometheus-postgres-exporter)、[Nginx](https://github.com/prometheus-community/helm-charts/tree/main/charts/prometheus-nginx-exporter) 和 [Kube 状态指标](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-state-metrics) 的指标。

1. 创建一个名为 `langsmith_obs_config.yaml` 的本地文件。
2. 将此[文件](https://github.com/langchain-ai/helm/blob/main/charts/langsmith-observability/examples/metric-exporters-only.yaml)中的值复制到 `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`

如果安装成功，您应该会看到以下信息：

```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
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`，您应该会看到：

```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
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
```

# 第二部分：完整的可观测性栈

<Warning>
  **这不是一个生产级的可观测性栈。请使用它来快速了解部署的日志、指标和追踪。它仅设计用于处理每天几十 GB 的数据。**
</Warning>

本节将展示如何使用 [Helm 图表](https://github.com/langchain-ai/helm/tree/main/charts/langsmith-observability) 为 LangSmith 部署端到端的可观测性栈。

该图表围绕 Grafana 的开源 LGTM 栈构建。它包括：

* [Loki](https://grafana.com/docs/loki/latest/) 用于日志。
* [Mimir](https://grafana.com/docs/mimir/latest/) 用于指标和告警。
* [Tempo](https://grafana.com/docs/tempo/latest/) 用于追踪。
* [Grafana](https://grafana.com/docs/grafana/latest/) 用于监控界面。

以及用于收集遥测数据的 [OpenTelemetry 收集器](https://opentelemetry.io/docs/collector/)。

## 前提条件

### 1. 计算资源

栈中每个部分的资源请求和限制可以在 Helm 图表中修改。以下是当前的分配（请求/限制）：

* Loki: `2vCPU/3vCPU + 2Gi/4Gi`
* Mimir: `1vCPU/2vCPU + 2Gi/4Gi`
* Tempo: `1vCPU/2vCPU + 4Gi/6Gi`

在启动 Helm 图表之前，请确保已分配这些资源，或者在 Helm 配置文件中修改资源值。

### 2. Cert-Manager

Helm 图表使用 OpenTelemetry Operator 来配置收集器。该操作符要求您在 Kubernetes 集群中安装 [cert-manager](https://cert-manager.io/docs/installation/)。

如果尚未安装，可以运行以下命令：

```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
helm repo add jetstack https://charts.jetstack.iohelm repo updatehelm install cert-manager jetstack/cert-manager -n cert-manager --create-namespace
```

### 3. OpenTelemetry 操作符

使用以下命令安装 OpenTelemetry Operator：

```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
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. 将此[文件](https://github.com/langchain-ai/helm/blob/main/charts/langsmith-observability/examples/e2e-stack.yaml)中的值复制到 `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`

<Note>
  **您可以通过修改配置文件中 `otelCollector` 下的布尔值来选择性地收集日志、指标或追踪。您也可以选择性地启动后端的各个部分（Loki、Mimir、Tempo）。**
</Note>

如果安装成功，您应该会看到以下信息：

```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
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`，您应该会看到：

```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
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 中启用日志和追踪

安装可观测性 Helm 图表后，您需要在 *LangSmith* Helm 配置文件中设置以下值以启用日志和追踪的收集。

```yaml theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
commonPodAnnotations:
  # 例如："langsmith-observability/langsmith-observability-collector-sidecar"
  sidecar.opentelemetry.io/inject: "${LANGSMITH_OBS_NAMESPACE}/${LANGSMITH_OTEL_CRD_NAME}"
observability:
  tracing:
    enabled: true
    # 将此替换为您的追踪收集器端点。
    # 例如："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"
```

<Info>
  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}` 并选择端口为 4317/4318 且设置了 ClusterIP 的那个。它应该类似于 `langsmith-observability-collector-gateway-collector`。
</Info>

现在运行 `helm upgrade langsmith langchain/langsmith --values langsmith_config.yaml -n <langsmith-namespace> --wait --debug`

升级后，如果运行 `kubectl get pods -n <langsmith-namespace>`，您应该会看到以下内容（注意 sidecar 收集器的 2/2）：

```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
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 密码：

```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
kubectl get secret langsmith-observability-grafana -n <langsmith_observability_namespace> -o jsonpath="{.data.admin-password}" | base64 --decode
```

然后将端口 3000 转发到 `langsmith-observability-grafana` 容器，并在浏览器中打开 `localhost:3000`。使用用户名 `admin` 和上述 secret 中的密码登录 Grafana。

登录 Grafana 后，您可以使用界面监控日志、指标和追踪。Grafana 还预装了用于监控部署主要组件的仪表板集。

<img src="https://mintcdn.com/hhh-8c10bf0c/lQoj_T05pUgIcyPg/langsmith/images/langsmith-grafana-dashboards.png?fit=max&auto=format&n=lQoj_T05pUgIcyPg&q=85&s=1cbc293510b5d950fd04221b9d154cd3" alt="LangSmith Grafana 仪表板" width="1715" height="1073" data-path="langsmith/images/langsmith-grafana-dashboards.png" />

***

<div className="source-links">
  <Callout icon="edit">
    [Edit this page on GitHub](https://github.com/langchain-ai/docs/edit/main/src/i18n\zh-CN\langsmith\observability-stack.mdx) or [file an issue](https://github.com/langchain-ai/docs/issues/new/choose).
  </Callout>

  <Callout icon="terminal-2">
    [Connect these docs](/use-these-docs) to Claude, VSCode, and more via MCP for real-time answers.
  </Callout>
</div>
