速率限制和 API 错误
Telemetry 端点使用标准 HTTP 状态代码。在重试之前,客户端应将请求缺陷与临时服务或容量状况区分开来。
计划特定的配额和当前限制可能会发生变化。将产品和计费设置中显示的限制视为帐户的真实来源;不要对未记录的全局请求率进行硬编码。
反应等级
| 状态 | 含义 | 客户行动 |
|---|---|---|
200 或 202 |
操作成功或异步作业被接受 | 阅读响应正文并继续 |
400 |
JSON、SQL、表名称、字段类型或请求形状无效 | 修复请求;不要重试不变 |
401 |
API 密钥丢失、无效或已撤销 | 更换凭证 |
403 |
密钥没有所需的范围 | 使用正确的作用域键 |
404 |
请求的表、作业、仪表板、告警或路线不存在 | 验证标识符和团队 |
409 或 422 |
请求与当前状态冲突或无法应用 | 检查错误并更改操作 |
429 |
超出当前请求率或配额 | 在场和退后时尊重 Retry-After |
5xx |
Telemetry 无法完成有效请求 | 使用退避重试有限次数 |
错误主体可能包括更具体的上下文。记录状态、端点名称、请求 ID 和安全错误类别。不要仅仅因为请求失败就记录 API 密钥或原始事件负载。
安全重试
对 429、502、503 和 504 响应使用带抖动的指数退避。限制尝试和总运行时间,以便遥测中断不会耗尽应用程序工作人员的精力。
delay = min(max_delay, base_delay * 2^attempt) + random_jitter
在不修改请求的情况下,请勿重试 400 响应。重复发送无效架构或 SQL 查询会创建负载,但不会创建成功路径。
保留事件身份
重试摄取时,请为逻辑事件重新使用稳定的 event_id。这使得重复传递变得可测量,并允许幂等消费者识别重试。每次网络尝试上的新标识符都会将一个结果转变为几个无法区分的业务事件。
使用 重复的事件 ID 配方 审核重试行为。
约束失效影响
确定遥测是否位于关键路径上。对于大多数产品仪器,应通过安全诊断通道报告临时摄取失败,而不更改已成功的客户响应。对于合规性或计费工作流程,持久队列可能比较合适。
对于大型结果集,请使用 异步查询API,而不是重复重试交互式请求。有关范围规则,请参阅 API 密钥与身份验证。