> ## Documentation Index
> Fetch the complete documentation index at: https://cndoc-langchain.site/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 图表来部署一个基本的可观测性套件。

# 第 1 部分：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
```

# 第 2 部分：完整的可观测性套件

<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/) 用于监控 UI。

以及用于收集遥测数据的 [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 来配置收集器。该 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 operator

使用以下命令安装 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
```

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

进入 Grafana 后，您可以使用 UI 监控日志、指标和跟踪。Grafana 还预装了一组仪表板，用于监控部署的主要组件。

<img src="https://mintcdn.com/other-405835d4/X4LKQZjW6RjHveuz/langsmith/images/langsmith-grafana-dashboards.png?fit=max&auto=format&n=X4LKQZjW6RjHveuz&q=85&s=f0c99bca86e0d33806bea40a753c22b6" alt="LangSmith Grafana 仪表板" width="1715" height="1073" data-path="langsmith/images/langsmith-grafana-dashboards.png" />

***

<div className="source-links">
  <Callout icon="terminal-2">
    [将这些文档](/use-these-docs) 通过 MCP 连接到 Claude、VSCode 等，以获取实时答案。
  </Callout>

  <Callout icon="edit">
    [在 GitHub 上编辑此页面](https://github.com/langchain-ai/docs/edit/main/src/langsmith/observability-stack.mdx) 或 [提交问题](https://github.com/langchain-ai/docs/issues/new/choose)。
  </Callout>
</div>
