客户端报告是一种协议功能,允许客户端向Sentry发送有关自己的状态报告。它们目前主要用于为从未发出过的事件发出结果。基本操作客户报告作为信封项目发送到Sentry,通常作为单个信封或预定信封之一。它们不应发送得太频繁,但也不能太频繁。他们的主要目的是让人们了解SDK端发生了什么影响用户体验。例如,SDK可能会在SDK中的多个位置丢失事件,而客户端可能看不到此事件丢失。客户端报告让SDK发出此类事件结果,以提供有关这种情况发生频率的数据。例如,如果传输达到其最大内部队列大小,SDK可能会丢弃事件,因为速率限制会指示SDK在事件超过配额时丢弃事件等。信封项有效负载客户端报告是名为client_report的信封中的一项。它包含一个JSON负载,看起来像这样:{"timestamp":"2020-02-07T14:16:00Z","discarded_events":[{"reason":"queue_overflow","category":"error","quantity":23},{"reason":"queue_overflow","category":"transaction","quantity":1321}]}注意这个一定要放在信封里。所以完整的事件看起来像这样:{}{"type":"client_report"}{"timestamp":"..."}存在以下字段:timestampString|编号,可选。创建客户端报告时的时间戳。必须是ISO日期时间字符串或UNIX时间戳。如果未发送,服务器将采用当前的UTC时间戳。在数据模型中,这称为receiveddiscarded_events结果对象列表{reason,category,quantity}reason:定义事件丢失原因的字符串原因。类别:删除原因适用的数据类别。quantity:丢失事件个数目前定义了以下丢弃原因:queue_overflow:SDK内部队列(例如:传输队列)溢出cache_overflow:SDK内部缓存(例如:离线事件缓存)溢出较早的速率限制指示SDK退出。network_error:由于网络错误事件被丢弃且未重试。sample_rate:由于配置的采样率,事件被丢弃。此外,保留以下丢弃原因,但SDK预计不会在正常操作下发送这些:before_send:事件在before_send中被丢弃event_processor:事件被事件处理器丢弃SDK端建议鼓励SDK减少不必要的数量沟通。因此,推荐的方法是直接跟踪运输中掉落原因的计数,并定期将它们作为单独的信封项目清除或将它们附加到已经安排好的信封中。由于某些SDK仍然发送遗留事件而不是信封以向后兼容旧的哨兵服务器,在这种情况下,建议将它们作为单独的信封发送,或将它们附加到挂起的会话信封。
