首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Sentry 开发者贡献指南 - SDK 开发(客户端报告)

Sentry 开发者贡献指南 - SDK 开发(客户端报告)

作者头像
为少
发布2022-01-04 16:06:15
发布2022-01-04 16:06:15
9840
举报
文章被收录于专栏:黑客下午茶黑客下午茶

Client reports 是一种协议特性,允许客户端向 Sentry 发送关于自己的状态报告。它们目前主要用于为从未发送的事件发出结果。

基本操作

Client 报告作为 envelope 项发送给 Sentry, 通常是作为单独的 envelope 或已安排的 envelope 之一。它们不应该被发送得太频繁,但也不能太少。它们的主要目的是让人们了解 SDK 端发生的影响用户体验的事情。

例如,SDK 可能会在 SDK 中的几个地方丢弃事件,而这种事件丢失对客户来说可能是不可见的。 Client 报告让 SDK 发出此类事件结果,以提供有关这种情况发生频率的数据。例如,如果传输达到其最大内部队列大小,SDK 可能会丢弃事件, 因为速率限制指示 SDK 在事件超过配额等时丢弃事件。

Envelope(信封)项负载

Client 报告是名为 client_reportenvelope 中的一项。它包含一个大致如下所示的 JSON 负载:

代码语言:javascript
复制
{
  "timestamp": "2020-02-07T14:16:00Z",
  "discarded_events": [
    {
      "reason": "queue_overflow",
      "category": "error",
      "quantity": 23
    },
    {
      "reason": "queue_overflow",
      "category": "transaction",
      "quantity": 1321
    }
  ]
}

请注意,这必须包含在 envelope 中。所以完整的事件看起来像这样:

代码语言:javascript
复制
{}
{"type":"client_report"}
{"timestamp":"..."}

存在以下字段:

timestamp

  • String | Number, optional. 创建 client report 的时间戳。

必须是 ISO 日期时间字符串或 UNIX 时间戳。如果未发送,服务器将采用当前的 UTC 时间戳。在数据模型中,这称为 received

discarded_events

  • outcome 对象列表 {reason, category, quantity}
  • reason: 定义事件丢失原因的字符串原因。
  • category: 丢弃原因适用的数据类别。
  • quantity: 丢失的事件数

目前定义了以下丢弃原因:

  • queue_overflow: SDK 内部队列(例如:传输队列)溢出
  • cache_overflow: SDK 内部缓存(例如:离线事件缓存)溢出
  • ratelimit_backoff: SDK 丢弃事件是因为较早的速率限制指示 SDK 退出。
  • network_error: 由于网络错误,事件被丢弃并且没有重试。
  • sample_rate: 由于配置的采样率,事件被丢弃。

此外,保留以下丢弃原因,但不期望 SDK 在正常操作下发送这些:

  • before_send: 事件在 before_send 中被丢弃
  • event_processor: 事件被事件处理器丢弃

SDK 端推荐

鼓励 SDK 减少不必要的通信总量。因此,推荐的方法是直接跟踪 transport 中丢弃原因的计数, 并定期将它们作为单独的 envelope 项冲洗掉或将其附加到已安排好的 envelope 上。由于某些 SDK 仍然发送旧事件而不是 envelope,以便与旧的 Sentry 服务器向后兼容, 因此在这种情况下,建议将其作为单独的 envelope 发送,或者将其附加到待处理的 session envelope

更多

Sentry 开发者贡献指南 - SDK 开发(性能监控:Sentry SDK API 演进)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-01,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 基本操作
  • Envelope(信封)项负载
  • SDK 端推荐
  • 更多
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档