跳过主要内容
Cline 包含可选的 OpenTelemetry 支持,可使用 OpenTelemetry Protocol (OTLP) 将指标和日志导出到您自己的可观测性基础设施。
OpenTelemetry 集成是可选的,适用于拥有现有可观测性基础设施的高级用户。大多数用户不需要此功能。

什么是 OpenTelemetry?

OpenTelemetry 是一个行业标准的可观测性框架,提供统一的方式来收集和导出遥测数据(指标、日志和跟踪)。 Cline 的 OpenTelemetry 支持允许您:
  • 将遥测数据导出到您自己的系统
  • 与 Datadog、New Relic、Grafana Cloud 等可观测性平台集成
  • 完全控制您的监控数据
  • 使用您组织现有的监控基础设施

支持的功能

Cline 支持 OpenTelemetry 的 OTLP(OpenTelemetry Protocol)导出

指标导出

导出有关 Cline 使用情况、性能和错误的指标

日志导出

导出结构化日志用于调试和分析

导出格式

Cline 支持三种 OTLP 导出协议
  • gRPC(默认,推荐)
  • HTTP/protobuf
  • HTTP/JSON

导出目的地

您可以导出到
  • 控制台(用于测试)
  • OTLP 端点(您自己的收集器或可观测性平台)

配置

在启动 Cline 之前,使用环境变量配置 OpenTelemetry。

基本设置

启用 OpenTelemetry 并配置 OTLP 端点
# Enable OpenTelemetry
export OTEL_TELEMETRY_ENABLED=1

# Configure metrics and logs export
export OTEL_METRICS_EXPORTER=otlp
export OTEL_LOGS_EXPORTER=otlp

# Set your OTLP endpoint
export OTEL_EXPORTER_OTLP_ENDPOINT=https://your-collector:4317

# Optional: Set protocol (default is grpc)
export OTEL_EXPORTER_OTLP_PROTOCOL=grpc

环境变量

变量描述默认值
OTEL_TELEMETRY_ENABLED启用 OpenTelemetry (1true)禁用
OTEL_METRICS_EXPORTER指标导出器类型 (console, otlp 或两者)
OTEL_LOGS_EXPORTER日志导出器类型 (console, otlp 或两者)
OTEL_EXPORTER_OTLP_ENDPOINTOTLP 端点 URL
OTEL_EXPORTER_OTLP_PROTOCOL协议 (grpc, http/protobuf, http/json)grpc
OTEL_EXPORTER_OTLP_INSECURE允许不安全连接false
OTEL_EXPORTER_OTLP_HEADERS自定义头(逗号分隔的 key=value 对)

高级配置

指标和日志的单独端点
export OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=https://metrics-collector:4317
export OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=https://logs-collector:4317
用于身份验证的自定义头
export OTEL_EXPORTER_OTLP_HEADERS="api-key=your-key,x-custom-header=value"
多个导出器(控制台 + OTLP)
export OTEL_METRICS_EXPORTER=console,otlp
export OTEL_LOGS_EXPORTER=console,otlp
导出间隔
# Metrics export interval in milliseconds (default: 60000)
export OTEL_METRIC_EXPORT_INTERVAL=30000

# Logs batch size and timeout
export OTEL_LOG_BATCH_SIZE=512
export OTEL_LOG_BATCH_TIMEOUT=5000
export OTEL_LOG_MAX_QUEUE_SIZE=2048

集成示例

Datadog

使用 Datadog 的 OTLP 端点导出到 Datadog
export OTEL_TELEMETRY_ENABLED=1
export OTEL_METRICS_EXPORTER=otlp
export OTEL_LOGS_EXPORTER=otlp
export OTEL_EXPORTER_OTLP_ENDPOINT=https://api.datadoghq.com
export OTEL_EXPORTER_OTLP_HEADERS="dd-api-key=YOUR_DD_API_KEY"

New Relic

导出到 New Relic
export OTEL_TELEMETRY_ENABLED=1
export OTEL_METRICS_EXPORTER=otlp
export OTEL_LOGS_EXPORTER=otlp
export OTEL_EXPORTER_OTLP_ENDPOINT=https://otlp.nr-data.net:4317
export OTEL_EXPORTER_OTLP_HEADERS="api-key=YOUR_NEW_RELIC_LICENSE_KEY"

Grafana Cloud

导出到 Grafana Cloud
export OTEL_TELEMETRY_ENABLED=1
export OTEL_METRICS_EXPORTER=otlp
export OTEL_LOGS_EXPORTER=otlp
export OTEL_EXPORTER_OTLP_ENDPOINT=https://otlp-gateway-prod-us-central-0.grafana.net/otlp
export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Basic YOUR_BASE64_CREDENTIALS"

测试配置

在发送到真实端点之前,使用控制台输出测试您的配置
# Enable console output to see what data would be exported
export OTEL_TELEMETRY_ENABLED=1
export OTEL_METRICS_EXPORTER=console
export OTEL_LOGS_EXPORTER=console
然后启动 Cline 并检查控制台输出中的指标和日志。

故障排除

无数据导出

  1. 验证 OpenTelemetry 是否已启用
    echo $OTEL_TELEMETRY_ENABLED
    
    应输出 1true
  2. 检查导出器是否已配置
    echo $OTEL_METRICS_EXPORTER
    echo $OTEL_LOGS_EXPORTER
    
  3. 首先使用控制台导出器进行测试
    export OTEL_METRICS_EXPORTER=console
    export OTEL_LOGS_EXPORTER=console
    

连接错误

  1. 验证端点是否可访问
    curl -v https://your-otlp-endpoint:4317
    
  2. 检查是否需要不安全模式
    export OTEL_EXPORTER_OTLP_INSECURE=true
    
  3. 验证身份验证头: 仔细检查您的 API 密钥和身份验证头是否正确

调试模式

启用调试日志记录以查看详细的 OpenTelemetry 信息
export TEL_DEBUG_DIAGNOSTICS=true
这将输出有关以下内容的详细信息
  • 正在使用的配置
  • 正在创建的导出器
  • 连接尝试
  • 导出成功/失败

导出内容

启用 OpenTelemetry 后,Cline 将导出

指标

  • 功能使用次数
  • 任务执行指标
  • 错误率和类型
  • 性能测量

日志

  • 系统事件
  • 带有上下文的错误日志
  • 操作信息
导出的数据已经是匿名的,不包含代码内容、文件路径或敏感信息。但是,一旦数据导出到您的系统,您有责任确保其安全。

限制

Cline 中当前的 OpenTelemetry 支持
  • ✅ OTLP 指标导出(控制台、gRPC、HTTP)
  • ✅ OTLP 日志导出(控制台、gRPC、HTTP)
  • ✅ 通过环境变量进行基本配置
  • ❌ 分布式跟踪(尚未实现)
  • ❌ 自定义插桩 API(尚未公开)
  • ❌ 采样配置(使用默认值)

最佳实践

  1. 先测试:在发送到生产环境之前,始终使用控制台导出器进行测试
  2. 安全凭证:切勿硬编码 API 密钥;使用安全的环境变量管理
  3. 监控成本:注意您的可观测性平台的数据摄取成本
  4. 从简单开始:从仅指标开始,如果需要再添加日志
  5. 使用压缩:OTLP 支持压缩;检查您的端点是否需要它

后续步骤