应用开发

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

时间:2010-12-5 17:23:32  作者:数据库   来源:应用开发  查看:  评论:0
内容摘要:Client reports 是一种协议特性,允许客户端向 Sentry 发送关于自己的状态报告。它们目前主要用于为从未发送的事件发出结果。基本操作Client 报告作为 envelope 项发送给

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

基本操作

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

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

Envelope(信封)项负载

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 端推荐

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

copyright © 2025 powered by 益强资讯全景  滇ICP备2023006006号-31sitemap