Client reports 是开发开发客户一种协议特性,允许客户端向 Sentry 发送关于自己的端报状态报告。它们目前主要用于为从未发送的开发开发客户事件发出结果。
Client 报告作为 envelope 项发送给 Sentry,端报 通常是开发开发客户作为单独的 envelope 或已安排的 envelope 之一。它们不应该被发送得太频繁,端报但也不能太少。开发开发客户它们的端报主要目的是让人们了解 SDK 端发生的影响用户体验的事情。
例如,开发开发客户SDK 可能会在 SDK 中的端报几个地方丢弃事件,而这种事件丢失对客户来说可能是开发开发客户不可见的。 Client 报告让 SDK 发出此类事件结果,端报以提供有关这种情况发生频率的开发开发客户数据。高防服务器例如,端报如果传输达到其最大内部队列大小,开发开发客户SDK 可能会丢弃事件, 因为速率限制指示 SDK 在事件超过配额等时丢弃事件。
Client 报告是名为 client_report 的 envelope 中的一项。它包含一个大致如下所示的 JSON 负载:
{ "timestamp": "2020-02-07T14:16:00Z", "discarded_events": [ { "reason": "queue_overflow", "category": "error", "quantity": 23 }, { "reason": "queue_overflow", "category": "transaction", "quantity": 1321 } ] }请注意,这必须包含在 envelope 中。所以完整的事件看起来像这样:
{ } { "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 减少不必要的通信总量。因此,推荐的方法是直接跟踪 transport 中丢弃原因的计数, 并定期将它们作为单独的 envelope 项冲洗掉或将其附加到已安排好的 envelope 上。由于某些 SDK 仍然发送旧事件而不是 envelope,以便与旧的 Sentry 服务器向后兼容, 因此在这种情况下,建议将其作为单独的 envelope 发送,或者将其附加到待处理的 session envelope。香港云服务器