跳转到内容
Telemetry
浏览文档
SDK更新于 2026年7月29日由 Telemetry 编辑团队和产品团队审核阅读约需 3 分钟

让编程智能体使用这篇文档

打开 Claude Code、Codex、Cursor 或其他编码代理的集中提示包,然后将其适应此处介绍的工作流程。

本页内容
  1. 配置密钥
  2. 发送一个事件
  3. 发送兼容批次
  4. 运行SQL
  5. 导出更大的结果
  6. 检查并验证表
  7. 重试和退出代码策略

cURL 和 HTTP API 示例

使用 cURL 验证 API 密钥、重现 SDK 请求、自动化服务器端脚本或在向应用程序添加检测之前测试故障处理。

配置密钥

在不记录秘密值的 shell 中导出密钥:

export TELEMETRY_API_KEY="YOUR_API_KEY"

使用写入范围的密钥进行摄取,使用单独的读取范围的密钥进行查询或报告。禁用围绕扩展密钥的命令的 shell 跟踪。

发送一个事件

curl --fail-with-body \
  --connect-timeout 2 \
  --max-time 10 \
  --request POST \
  "https://api.telemetry.sh/log" \
  --header "Authorization: ${TELEMETRY_API_KEY}" \
  --header "Content-Type: application/json" \
  --data @- <<'JSON'
{
  "table": "api_request_completed",
  "data": {
    "event_id": "evt_request_101",
    "route_template": "/api/projects/:id",
    "method": "GET",
    "status_code": 200,
    "status": "success",
    "latency_ms": 184
  }
}
JSON

Telemetry 添加 timestamp_utc。请勿将 API 密钥、授权标头、cookie、原始请求正文、提示或私人客户内容作为事件字段发送。

发送兼容批次

data 字段可以是一个数组:

curl --fail-with-body \
  --connect-timeout 2 \
  --max-time 10 \
  --request POST \
  "https://api.telemetry.sh/log" \
  --header "Authorization: ${TELEMETRY_API_KEY}" \
  --header "Content-Type: application/json" \
  --data @- <<'JSON'
{
  "table": "job_completed",
  "data": [
    {
      "event_id": "evt_job_101",
      "job_name": "invoice_sync",
      "status": "success",
      "duration_ms": 912
    },
    {
      "event_id": "evt_job_102",
      "job_name": "invoice_sync",
      "status": "failed",
      "duration_ms": 2401,
      "error_type": "provider_timeout"
    }
  ]
}
JSON

保持每个对象与相同的表模式兼容。批处理可减少请求开销,但会增加受一个失败请求影响的事件数量。

运行SQL

curl --fail-with-body \
  --connect-timeout 2 \
  --max-time 30 \
  --request POST \
  "https://api.telemetry.sh/query" \
  --header "Authorization: ${TELEMETRY_API_KEY}" \
  --header "Content-Type: application/json" \
  --data @- <<'JSON'
{
  "query": "SELECT route_template, COUNT(*) AS requests, ROUND(AVG(latency_ms), 0) AS avg_latency_ms FROM api_request_completed WHERE timestamp_utc >= now() - INTERVAL '24 hours' GROUP BY route_template ORDER BY requests DESC;"
}
JSON

检查 statusdatakey_order 字段,而不是假设结果非空。

导出更大的结果

启动异步 Parquet 导出:

curl --fail-with-body \
  --connect-timeout 2 \
  --max-time 30 \
  --request POST \
  "https://api.telemetry.sh/query/async" \
  --header "Authorization: ${TELEMETRY_API_KEY}" \
  --header "Content-Type: application/json" \
  --data @- <<'JSON'
{
  "query": "SELECT * FROM api_request_completed WHERE timestamp_utc >= now() - INTERVAL '30 days' ORDER BY timestamp_utc DESC;",
  "format": "parquet"
}
JSON

使用相同的授权标头轮询返回的 status_url。当query_statuscompleted时,下载download_url。停止对 failed 进行轮询并强制执行总体截止日期。

检查并验证表

curl --fail-with-body \
  --connect-timeout 2 \
  --max-time 10 \
  "https://api.telemetry.sh/tables/api_request_completed/schema" \
  --header "Authorization: ${TELEMETRY_API_KEY}"

发送综合的成功、失败、重试和超时情况。在创建仪表板或告警之前,请确认字段类型、单位、UTC 时间戳以及是否缺少敏感字段。

重试和退出代码策略

--fail-with-body 对于 HTTP 故障退出非零,同时保留响应正文以进行安全诊断。

  • 退出 6:DNS解析失败。
  • 退出 7:连接失败。
  • 28:超时退出;服务器可能已接受也可能未接受该请求。
  • HTTP 400:修复请求;不要重试不变。
  • HTTP 401403:替换凭证或更正其范围。
  • HTTP 429502503504:使用有界指数退避和抖动重试。

将相同的 event_id 重复用于逻辑事件。在未考虑重复交付的情况下,请勿使用 --retry-all-errors

请参阅 日志API查询API表格 API活动交付指南

相关产品功能

记录稳定的事件名称、类型明确的字段,以及经过隐私审核的上下文。

内容责任与技术参考

Telemetry 编辑团队负责维护本文;产品团队审核功能行为、示例和适用范围。

查看编辑规范