vault backup: 2026-06-09 23:15:17
This commit is contained in:
@@ -1,6 +1,17 @@
|
||||
---
|
||||
tags: [claude-code, 遥测, 远程配置, 企业, 安全, GrowthBook]
|
||||
create time: 2026-06-09 22:30
|
||||
---
|
||||
|
||||
# 遥测与远程配置下发系统审计(除 Sentry 外)
|
||||
|
||||
## 1. Datadog 日志
|
||||
## 概述
|
||||
|
||||
Claude Code 的遥测系统包括 Datadog 日志、1P 事件日志(BigQuery)、GrowthBook 功能开关、企业远程配置下发、设置同步、OpenTelemetry 三方遥测等 12 个子系统。数据流经 `sink.ts` 路由层分发到不同后端,可通过环境变量全局禁用。
|
||||
|
||||
## 正文
|
||||
|
||||
### 1. Datadog 日志
|
||||
|
||||
**文件**: `src/services/analytics/datadog.ts`
|
||||
|
||||
@@ -12,7 +23,7 @@
|
||||
- **仅限**: `NODE_ENV === 'production'`
|
||||
- **配置示例**: `DATADOG_LOGS_ENDPOINT=https://http-intake.logs.datadoghq.com/api/v2/logs DATADOG_API_KEY=xxx bun run dev`
|
||||
|
||||
## 2. 1P 事件日志(BigQuery)
|
||||
### 2. 1P 事件日志(BigQuery)
|
||||
|
||||
**文件**: `src/services/analytics/firstPartyEventLogger.ts` + `firstPartyEventLoggingExporter.ts`
|
||||
|
||||
@@ -23,7 +34,7 @@
|
||||
- **Proto schema**: 事件序列化为 `ClaudeCodeInternalEvent` / `GrowthbookExperimentEvent` protobuf 格式
|
||||
- **Auth fallback**: 401 时自动去掉 auth header 重试
|
||||
|
||||
## 3. GrowthBook 远程 Feature Flags / 动态配置
|
||||
### 3. GrowthBook 远程 Feature Flags / 动态配置
|
||||
|
||||
**文件**: `src/services/analytics/growthbook.ts`
|
||||
|
||||
@@ -39,7 +50,7 @@
|
||||
- 控制远程管理设置的安全检查 gate
|
||||
- **用户属性**: 发送 deviceId, sessionId, organizationUUID, accountUUID, email, subscriptionType 等
|
||||
|
||||
## 4. Remote Managed Settings(企业远程配置下发)
|
||||
### 4. Remote Managed Settings(企业远程配置下发)
|
||||
|
||||
**文件**: `src/services/remoteManagedSettings/index.ts`
|
||||
|
||||
@@ -49,7 +60,7 @@
|
||||
- **适用**: API key 用户全部可拉取;OAuth 用户仅 Enterprise/C4E/Team
|
||||
- **Fail-open**: 请求失败时使用本地缓存,无缓存则跳过
|
||||
|
||||
## 5. Settings Sync(设置同步)
|
||||
### 5. Settings Sync(设置同步)
|
||||
|
||||
**文件**: `src/services/settingsSync/index.ts`
|
||||
|
||||
@@ -59,7 +70,7 @@
|
||||
- **Feature gate**: `UPLOAD_USER_SETTINGS` / `DOWNLOAD_USER_SETTINGS`
|
||||
- **文件大小限制**: 500KB/文件
|
||||
|
||||
## 6. OpenTelemetry 三方遥测
|
||||
### 6. OpenTelemetry 三方遥测
|
||||
|
||||
**文件**: `src/utils/telemetry/instrumentation.ts`
|
||||
|
||||
@@ -69,7 +80,7 @@
|
||||
- **触发**: `CLAUDE_CODE_ENABLE_TELEMETRY=1` 环境变量
|
||||
- **增强 trace**: `feature('ENHANCED_TELEMETRY_BETA')` + GrowthBook gate `enhanced_telemetry_beta`
|
||||
|
||||
## 7. BigQuery Metrics Exporter(内部指标)
|
||||
### 7. BigQuery Metrics Exporter(内部指标)
|
||||
|
||||
**文件**: `src/utils/telemetry/bigqueryExporter.ts`
|
||||
|
||||
@@ -78,7 +89,7 @@
|
||||
- **适用**: API 客户、C4E/Team 订阅者
|
||||
- **组织级 opt-out**: 通过 `checkMetricsEnabled()` API 查询(见下方第 8 项)
|
||||
|
||||
## 8. 组织级 Metrics Opt-out 查询
|
||||
### 8. 组织级 Metrics Opt-out 查询
|
||||
|
||||
**文件**: `src/services/api/metricsOptOut.ts`
|
||||
|
||||
@@ -86,14 +97,14 @@
|
||||
- **行为**: 查询组织是否启用了 metrics,二级缓存(内存 1h + 磁盘 24h)
|
||||
- **作用**: 控制 BigQuery metrics exporter 是否导出
|
||||
|
||||
## 9. Startup Profiling
|
||||
### 9. Startup Profiling
|
||||
|
||||
**文件**: `src/utils/startupProfiler.ts`
|
||||
|
||||
- **行为**: 采样启动性能数据(100% ant / 0.5% 外部),通过 `logEvent('tengu_startup_perf')` 上报
|
||||
- **详细模式**: `CLAUDE_CODE_PROFILE_STARTUP=1` 输出完整性能报告到文件
|
||||
|
||||
## 10. Beta Session Tracing
|
||||
### 10. Beta Session Tracing
|
||||
|
||||
**文件**: `src/utils/telemetry/betaSessionTracing.ts`
|
||||
|
||||
@@ -101,23 +112,23 @@
|
||||
- **触发**: `ENABLE_BETA_TRACING_DETAILED=1` + `BETA_TRACING_ENDPOINT`
|
||||
- **外部用户**: SDK/headless 模式自动启用,交互模式需要 GrowthBook gate `tengu_trace_lantern`
|
||||
|
||||
## 11. Bridge Poll Config(远程轮询间隔配置)
|
||||
### 11. Bridge Poll Config(远程轮询间隔配置)
|
||||
|
||||
**文件**: `src/bridge/pollConfig.ts`
|
||||
|
||||
- **行为**: 从 GrowthBook 拉取 bridge 轮询间隔配置(`tengu_bridge_poll_interval_config`)
|
||||
- **控制**: 单会话和多会话的各种 poll interval
|
||||
|
||||
## 12. Plugin/MCP 遥测
|
||||
### 12. Plugin/MCP 遥测
|
||||
|
||||
**文件**: `src/utils/plugins/fetchTelemetry.ts`
|
||||
|
||||
- **行为**: 记录 plugin/marketplace 的网络请求(安装计数、marketplace clone/pull 等)
|
||||
- **事件**: `tengu_plugin_remote_fetch`,包含 host(已脱敏)、outcome、duration
|
||||
|
||||
---
|
||||
### 全局禁用方式
|
||||
|
||||
## 全局禁用方式
|
||||
> [!tip] 三种禁用粒度
|
||||
|
||||
```bash
|
||||
# 禁用所有遥测(Datadog + 1P + 调查问卷)
|
||||
@@ -132,24 +143,30 @@ CLAUDE_CODE_USE_BEDROCK=1 # 或 VERTEX/FOUNDRY
|
||||
|
||||
`src/utils/privacyLevel.ts` 是集中控制点,三个级别:`default < no-telemetry < essential-traffic`。
|
||||
|
||||
---
|
||||
### 数据流架构
|
||||
|
||||
## 数据流架构
|
||||
```mermaid
|
||||
graph TD
|
||||
A["用户操作"] --> B["logEvent()"]
|
||||
B --> C["sink.ts(路由层)"]
|
||||
C --> D["trackDatadogEvent()"]
|
||||
C --> E["logEventTo1P()"]
|
||||
D --> F["Datadog HTTP API<br/>us5.datadoghq.com"]
|
||||
E --> G["OTel BatchLogRecordProcessor"]
|
||||
G --> H["FirstPartyEventLoggingExporter"]
|
||||
H --> I["api.anthropic.com/api/event_logging/batch"]
|
||||
I --> J["BigQuery<br/>ClaudeCodeInternalEvent proto"]
|
||||
|
||||
```
|
||||
用户操作 → logEvent()
|
||||
↓
|
||||
sink.ts (路由层)
|
||||
↙ ↘
|
||||
trackDatadogEvent() logEventTo1P()
|
||||
↓ ↓
|
||||
Datadog HTTP API OTel BatchLogRecordProcessor
|
||||
(us5.datadoghq.com) ↓
|
||||
FirstPartyEventLoggingExporter
|
||||
↓
|
||||
api.anthropic.com/api/event_logging/batch
|
||||
↓
|
||||
BigQuery (ClaudeCodeInternalEvent proto)
|
||||
K["GrowthBook"] -.->|驱动开关和配置| C
|
||||
K -.->|驱动开关和配置| D
|
||||
K -.->|驱动开关和配置| E
|
||||
```
|
||||
|
||||
GrowthBook 作为独立通道,同时驱动上述两个 sink 的开关和配置。
|
||||
> [!info] GrowthBook 的角色
|
||||
> GrowthBook 作为独立通道,同时驱动上述两个 sink 的开关和配置。
|
||||
|
||||
## 关联笔记
|
||||
|
||||
- [[external-dependencies]] — 远程服务器依赖(完整的端点清单)
|
||||
- [[auto-updater]] — 自动更新机制(GrowthBook 控制版本上限)
|
||||
- [[performance-reporter]] — 性能报告(遥测对性能的影响)
|
||||
|
||||
Reference in New Issue
Block a user