一起来刷 Sentry For Go 官方文档之 Enriching Events(一)

简介: 一起来刷 Sentry For Go 官方文档之 Enriching Events(一)

添加 Context



自定义上下文允许您将任意数据附加到事件。您无法搜索这些,但可以在问题页面上查看它们:


微信图片_20220610201546.png


如果需要能够搜索自定义数据,则需要使用标签。

要配置附加上下文:


sentry.ConfigureScope(func(scope *sentry.Scope) {
  scope.SetExtra("character.name", "Mighty Fighter")
})


注意,上下文的外部值必须是一个 dictionary/map/object,而内部值可以是任意的。

发送上下文时,请注意最大有效负载大小,尤其是如果您希望将整个应用程序状态作为额外数据发送时。Sentry不建议使用此方法,因为应用程序状态可能非常大,并且很容易超过 Sentry 在单个事件有效负载上的最大200kB。发生这种情况时,您会收到HTTP Error 413 Payload Too Large 消息,作为服务器响应,或者(当您将 keepalive: true 设置为 fetch 参数时),该请求将永远处于待处理状态(例如,在 Google Chrome 中)。


Sentry 将尽力容纳您发送的数据,但 Sentry 会修剪较大的上下文有效负载或完全截断这些有效负载。


有关更多详细信息,请参阅有关SDK数据处理的开发人员文档。

Extra Data, Additional Data(额外数据)


如果遇到 “extra”(在代码中为 SetExtra )或 “Additional Data”(在用户界面中)的任何用法,请在头脑上将其替换为上下文。大多数 SDK 不推荐使用 Extra,而是使用上下文。


识别用户



用户包含一些关键信息,这些信息构成了 Sentry 中的唯一身份。每个选项都是可选的,但必须存在一个选项才能使 Sentry SDK 捕获用户:


id

您的用户内部标识符。


username

用户名。通常用作比内部ID更好的标签。


email

用户名的替代(或添加)。Sentry 知道电子邮件地址,并且可以显示 Gravatars 之类的内容并解锁消息传递功能。


ip_address

用户的IP地址。如果用户未经身份验证,Sentry 将 IP 地址用作用户的唯一标识符。Sentry 将尝试从 HTTP 请求数据中提取此信息(如果有)。


识别用户:


sentry.ConfigureScope(func(scope *sentry.Scope) {
  scope.SetUser(sentry.User{Email: "jane.doe@example.com"})
})


可以将其他 key/value 对指定为元数据,Sentry SDK会将这些键/值对与用户一起存储。


自定义标签



标签是既可索引又可搜索的 key/value 字符串对。标签具有强大的 UI 功能,例如过滤器和标签分布图。标签还可以帮助您快速访问相关事件,并查看一组事件的标签分布。标签的常见用法包括主机名,平台版本和用户语言。


我们将自动为一个事件的所有标签建立索引,以及 Sentry 看到标签的频率和最后一次。我们还将跟踪不同标签的数量,并可以帮助您确定各种问题的热点。


定义标签很容易,并将它们绑定到当前范围,确保范围内的所有未来事件都包含相同的标签:


sentry.ConfigureScope(func(scope *sentry.Scope) {
  scope.SetTag("page.locale", "de-at");
})


某些标签由 Sentry 自动设置。强烈建议您不要覆盖这些标签,而应使用自己的名称命名。


一旦开始发送标记的数据,您将在Sentry Web UI中看到它:“项目”页面侧栏中的过滤器,在事件内进行汇总以及在聚合事件的“标签”页面上。


微信图片_20220610201640.png


面包屑



Sentry 使用面包屑创建事件发生之前的事件线索。这些事件与传统日志非常相似,但是可以记录更丰富的结构化数据。


此页面概述了手动面包屑记录和自定义。了解有关“Issue Details”页面上显示的更多信息, 以及如何过滤面包屑以快速解决问题。


:::tip 了解 SDK 使用情况

想要修改面包屑界面的开发人员可以使用专用于面包屑界面的开发人员文档详细了解此内容。:::


手动面包屑


每当发生有趣的事情时,您都可以手动添加面包屑。例如,如果用户通过身份验证或发生其他状态更改,则可以手动记录面包屑。


sentry.AddBreadcrumb(&sentry.Breadcrumb{
  Category: "auth",
  Message: "Authenticated user " + user.email,
  Level: sentry.LevelInfo,
});


自动面包屑


SDK 及其相关的集成将自动记录许多类型的面包屑。例如,浏览器 JavaScript SDK 将自动记录所有位置更改。


定制面包屑


SDK 允许您通过 before_breadcrumb hook 自定义面包屑。此 hook 传递了已经组装好的面包屑,并且在某些SDK中传递了可选提示。该函数可以修改面包屑,或通过返回 null 来决定完全放弃它:


sentry.Init(sentry.ClientOptions{
  BeforeBreadcrumb: func(breadcrumb *sentry.Breadcrumb, hint *sentry.BreadcrumbHint) *sentry.Breadcrumb {
    if breadcrumb.Category == "auth" {
      return nil
    }
    return breadcrumb
  },
})


相关文章
|
NoSQL API Go
go-mongox:简单高效,让文档操作和 bson 数据构造更流畅
`go-mongox` 基于 **泛型** 对 `MongoDB` 官方框架进行了二次封装,它通过使用链式调用的方式,让我们能够丝滑地操作文档。同时,其还提供了多种类型的 `bson` 构造器,帮助我们高效的构建 `bson` 数据。
130 0
|
Cloud Native 架构师 Java
谷歌架构师分享gRPC与云原生应用开发Go和Java为例文档
随着微服务和云原生相关技术的发展,应用程序的架构模式已从传统的单体架构或分层架构转向了分布式的计算架构。尽管分布式架构本身有一定的开发成本和运维成本,但它所带来的收益是显而易见的。
|
消息中间件 缓存 监控
Sentry 开发人员文档(中文手册,二次开发指南)
Sentry 开发人员文档(中文手册,二次开发指南)
3054 0
Sentry 开发人员文档(中文手册,二次开发指南)
|
5月前
|
JSON Go 数据格式
Go - 使用工具生成易读的 Protocol 文档
Go - 使用工具生成易读的 Protocol 文档
33 1
|
程序员 Go API
Go语言微服务框架 - 10.接口文档-openapiv2的在线文档方案
随着项目的迭代,一个服务会开放出越来越多的接口供第三方调用。 虽然`protobuf`已经是通用性很广的IDL文件了,但对于未接触过这块的程序员来说,还是有很大的学习成本。在综合可读性和维护性之后,我个人比较倾向于使用oepnapiv2的方案,提供在线接口文档。
181 0
|
8月前
|
JSON 中间件 Go
Go 框架 iris 文档(二)
Go 框架 iris 文档(二)
156 0
|
8月前
|
XML JSON 中间件
Go 框架 iris 文档(一)
Go 框架 iris 文档(一)
356 0
|
JSON Go 数据格式
Go语言注释和文档生成的最佳实践 就在这里
Go语言注释和文档生成的最佳实践 就在这里
414 0
|
XML 存储 边缘计算
Excelize 发布 2.7.1 版本,Go 语言 Excel 文档基础库
Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,2023年4月10日,社区正式发布了 2.7.1 版本,该版本包含了多项新增功能、错误修复和兼容性提升优化。
153 3
Excelize 发布 2.7.1 版本,Go 语言 Excel 文档基础库
|
边缘计算 BI Go
Go --- 操作Excel文档
Go --- 操作Excel文档
Go --- 操作Excel文档