学习笔记 · Obsidian
自托管数据服务、可观测与灾备运维
状态归属
| 存储 | 内容 | DR 要求 |
|---|---|---|
| PostgreSQL | Org、Workspace、用户、API key、Dataset、Prompt、Project、Deployment 元数据 | durable,备份/PITR/HA |
| ClickHouse | Trace、Run、Feedback 分析数据 | durable,通常体量最大 |
| Blob Storage | 启用后保存 input/output/error/manifest/event/attachment | durable,版本控制与跨区复制 |
| Redis/Valkey | Queue、cache、Pub/Sub、heartbeat | ephemeral,不恢复旧数据,重建即可 |
恢复 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-only | 6–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,但不要自行
forcedirty migration。 - 自定义 UI support message 仅纯文本,可引导到内部支持渠道;不能把敏感诊断信息直接展示给终端用户。
故障排查顺序
- 确认 namespace、chart/app version 与期望组件。
- 查 Deployment/Pod/Event/资源水位,再开 debug log;不要先改数据库。
- 分清 LangSmith 平台故障与 Agent Server Data Plane 故障。
- 对
413先查 Ingress/body limit;对 ClickHouse disk/privilege 查容量与 grant;dirty migration 先停写并联系支持。 - 支持脚本/压缩包可能包含组织 ID、主机名和日志,分享前按公司数据政策脱敏。