学习笔记 · Obsidian

自托管数据服务、可观测与灾备运维

LangChainLangSmithPostgreSQL

状态归属

存储内容DR 要求
PostgreSQLOrg、Workspace、用户、API key、Dataset、Prompt、Project、Deployment 元数据durable,备份/PITR/HA
ClickHouseTrace、Run、Feedback 分析数据durable,通常体量最大
Blob Storage启用后保存 input/output/error/manifest/event/attachmentdurable,版本控制与跨区复制
Redis/ValkeyQueue、cache、Pub/Sub、heartbeatephemeral,不恢复旧数据,重建即可

恢复 PostgreSQL、ClickHouse、Blob 必须尽量落在同一时间点。只恢复其中一个会产生 dangling reference 或 UI 缺失。Redis 不能在主、灾备两个 LangSmith 安装间共享,否则任务可能路由到错误集群。

外部数据服务

  • PostgreSQL 生产推荐 RDS/Cloud SQL/Azure Flexible Server,最低 14;支持密码和云 IAM/Workload Identity,TLS 要校验服务端。
  • Redis 最低 5,Valkey 最低 8;支持 standalone/cluster、TLS/mTLS 与云身份。每个 LangSmith 安装使用独立实例。
  • ClickHouse 最低 23.9;24.2+ 要 LangSmith v0.6+。HA cluster 必须在首次 migration 前启用 replicated engine,已有 standalone schema 不能原地转 cluster。
  • LangSmith-managed ClickHouse 位于客户 VPC 外,经 private endpoint/peering 连接;敏感 Run payload 可留在客户 Blob,但 metadata/分析字段仍需按数据表逐项审查。
  • Blob Storage 生产强烈推荐,并配置 S3/GCS/Azure lifecycle 与 LangSmith TTL 前缀一致;GCS 原生 engine 需要 chart 0.13.29+。

加密与模型调用代理

Agent Server 基础静态加密用 LANGGRAPH_AES_KEY(16/24/32 bytes)加密 checkpoint blob,可用 LANGGRAPH_AES_JSON_KEYS 选择 JSON 字段。被加密字段无法搜索/过滤,部分系统字段禁止加密。自定义加密支持每租户 key/KMS envelope encryption,但必须实现 key ID、轮换、历史解密和失败恢复。

LLM Auth Proxy 是 Envoy + JWT 验证 + ext_authz/ext_proc:LangSmith 用短期签名 JWT 调客户代理,代理验证后注入 provider credential 或转换协议。它能隐藏模型 key、集中审计与路由,但客户负责 JWKS、issuer/audience、超时、HA 和 fail-closed。OAuth client credentials 与 Auth Proxy 在单个模型配置上互斥。

出站与遥测

非 offline 的 Self-hosted v0.9+ 必须访问 https://beacon.langchain.com 做 license 与计费 telemetry,该部分不能关闭;完全无出站需要离线 license。v0.11+ 默认发送可关闭的 operational logs/metrics/traces,不包含客户 Trace payload,但关闭它不会关闭 billing telemetry。Engine 还需要额外 LangSmith Intelligence 出站,且内容会离开客户环境做 ZDR 推理。

自有可观测后端可从 stdout/files 收日志,以 Prometheus/OTel 收服务、Nginx、数据库指标,并导出 traces。至少告警:ingest delay、queue backlog、HTTP 5xx/p95、ClickHouse merge/mutation/disk、PostgreSQL connections/lag、Redis latency、migration job、Pod restart 与 PVC 容量。

扩缩容

Self-host v0.13+ 的指导把写路径(Platform Backend、Ingest Queue)和读路径(Backend、Frontend、ClickHouse query)分开调优。KEDA 按队列扩缩;不能只加 Pod 而忽视 PostgreSQL/ClickHouse/Redis、网络和连接池上限。

容量测试用业务 Trace 大小、层级深度、feedback/attachment 比例和查询模式,而不是只测 requests/s。高写入与高查询同时发生时,ClickHouse merge 和对象存储带宽往往是瓶颈。

DR 基线

模式典型 RPO/RTO设计
Snapshot-only6–24h / 数小时每日协调备份,最低成本
Multi-AZ HA秒 / 分钟同步 standby、跨 AZ 节点与存储
Cross-region active/passive分钟到小时 / 数小时第二集群 + 跨区备份/副本 + DNS failover

LangSmith 是 single-write 平台,跨区必须 active/passive,不能双活写同一逻辑安装。ClickHouse 大库恢复通常显著慢于 PostgreSQL,应以真实体量演练。季度恢复 PostgreSQL/ClickHouse,半年做完整跨区演练;每次 chart upgrade 后复核 DR。

TTL 与高风险清理

Self-hosted TTL 同时涉及 ClickHouse TTL、周末 cleanup cron 和 Blob lifecycle。v0.11 的 cleanup 用 ALTER TABLE DELETE mutation,CPU/IO 成本高,应在低峰运行、限制 active mutation,紧急停止前确认不会留下长期不一致。

备份桶也要复制 ttl_s/、ttl_l/、ttl_XXd/ 生命周期规则,否则灾备切换后会无限保留。TTL/retention 修改通常只影响新 Trace;不能把设置变更当作旧数据已删除的证明。

升级与回退

  • 降级不受支持,因为可能已有不可逆数据库 migration。
  • 跨多个 major 时逐个 major 升级,不能跳跃;每步读 changelog、备份、预演 migration、验证后再继续。
  • 固定 chart 与 image,保留旧 values、schema/backup,但不要自行 force dirty migration。
  • 自定义 UI support message 仅纯文本,可引导到内部支持渠道;不能把敏感诊断信息直接展示给终端用户。

故障排查顺序

  1. 确认 namespace、chart/app version 与期望组件。
  2. 查 Deployment/Pod/Event/资源水位,再开 debug log;不要先改数据库。
  3. 分清 LangSmith 平台故障与 Agent Server Data Plane 故障。
  4. 对 413 先查 Ingress/body limit;对 ClickHouse disk/privilege 查容量与 grant;dirty migration 先停写并联系支持。
  5. 支持脚本/压缩包可能包含组织 ID、主机名和日志,分享前按公司数据政策脱敏。