跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

OpenTelemetry 观测

导出 CLI traces 和 metrics,区分调用耗时、token、AI units 与敏感内容采集。

Copilot CLI 可通过 OpenTelemetry 观察智能体、模型请求、工具执行和 token 消耗。默认关闭;配置启用变量、OTLP endpoint 或本地文件输出任一项即可启动。

输出到本地文件

export COPILOT_OTEL_FILE_EXPORTER_PATH=/tmp/copilot-otel.jsonl
copilot

文件输出为 JSON-lines,设置路径自动选择 file exporter。配置 endpoint 则默认使用 otlp-http,协议默认 http/json,可设 http/protobuf。

变量用途或默认
COPILOT_OTEL_ENABLED默认 false,显式 true 启用
OTEL_EXPORTER_OTLP_ENDPOINT设置后自动启用导出
COPILOT_OTEL_EXPORTER_TYPEotlp-http 或 file
OTEL_EXPORTER_OTLP_PROTOCOL默认 http/json
OTEL_EXPORTER_OTLP_TRACES_PROTOCOL单独覆盖 trace 协议
OTEL_EXPORTER_OTLP_METRICS_PROTOCOL单独覆盖 metric 协议
OTEL_SERVICE_NAME默认 github-copilot
OTEL_RESOURCE_ATTRIBUTES逗号分隔 key=value,特殊字符用百分号编码
OTEL_EXPORTER_OTLP_HEADERSexporter 认证头
COPILOT_OTEL_SOURCE_NAME默认 github.copilot
OTEL_LOG_LEVELOTel 自身诊断级别

这些设置也可通过受支持的企业托管配置提供;endpoint 和 header 应指向团队实际使用的 collector。

Trace 结构

每次用户交互有 invoke_agent 根 span,下面有 chat 模型请求与 execute_tool 工具调用。顶层和 subagent 的 invoke_agent 都是 INTERNAL,chat 是面向 provider 的 CLIENT。

gen_ai.conversation.id 用于关联会话,gen_ai.request.model 与 gen_ai.response.model 区分请求和实际解析模型。token 字段区分输入、输出、cache read 与 cache creation;error.type 表示错误类型。

避免重复计量

github.copilot.nano_aiu 表示 nano AI units,1 AIU = 1,000,000,000 nano AIU。统计一次交互消耗时仅从根 invoke_agent 读取,不要再把子 chat 的同名值相加,否则重复计算。

github.copilot.cost 是计费计算所用的模型倍率,不是货币金额。不能把它直接展示为美元,也不能用 token 总数替代官方账单。

指标

指标观察内容
gen_ai.client.operation.duration模型请求和智能体操作耗时
gen_ai.client.token.usageinput / output tokens
gen_ai.client.operation.time_to_first_chunk流式首块延迟
gen_ai.invoke_agent.inference_calls一次智能体调用中的模型派发次数
gen_ai.invoke_agent.tool_calls客户端工具调用次数
gen_ai.invoke_workflow.durationFleet 等 workflow 总耗时
github.copilot.tool.call.count / duration工具次数与耗时
github.copilot.mcp.server.connection.countMCP 连接尝试结果
github.copilot.code.lines_added / removed编辑工具记录的增删行

模型调用次数包含已派发的失败与部分请求,不包含派发前被阻止的请求;工具计数不包含 provider 端工具或 CLI 合成生命周期。对比其他数据源时应保持口径一致。

内容采集

默认只采元数据,不采完整提示、回复或工具参数。OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=true 会启用完整消息、系统指令、工具定义、调用参数和结果采集,可能包含源代码及敏感资料。

需要排查内容问题时再在可信环境启用,并控制 collector 和文件访问范围。普通延迟或 token 分析通常可以保留默认元数据方式。