发布 & 健康
了解如何配置您的 SDK 以告知 Sentry 您的发布情况。
发布是指部署到 环境 的代码版本。当您向 Sentry 提供有关发布的信息时,您可以:
- 确定新发布中引入的问题和回归
- 预测哪个提交导致了问题以及谁可能是责任人
- 通过在提交消息中包含问题编号来解决这些问题
- 在代码部署时接收电子邮件通知
此外,发布用于应用 源映射 到压缩后的 JavaScript 以查看原始、未转换的源代码。
在初始化 SDK 时包含一个发布 ID(通常称为“版本”)。
发布名称不能:
- 包含换行符、制表符字符、正斜杠 (
/
) 或反斜杠 (\
) - 完全为句号 (
.
)、双句号 (..
) 或空格 ( ) - 超过 200 个字符
值可以是任意的,但我们建议使用以下命名策略之一:
- 语义化版本控制:
package@version
或package@version+build
(例如,my.project.name@2.3.12+1234
)package
是项目的唯一标识符(iOS 上的CFBundleIdentifier
,Android 上的packageName
)version
是类似 semver 的结构<major>.<minor?>.<patch?>.<revision?>-<prerelease?>
(iOS 上的CFBundleShortVersionString
,Android 上的versionName
)build
是标识应用程序迭代次数的数字(iOS 上的CFBundleVersion
,Android 上的versionCode
)
- 提交 SHA:如果您使用像 Git 这样的版本控制系统,我们建议使用标识哈希(例如,提交 SHA,
da39a3ee5e6b4b0d3255bfef95601890afd80709
)。Sentry CLI 可以为支持的版本控制系统自动确定此哈希。更多信息请参阅我们的 Sentry CLI 文档。
发布在整个组织内是全局的;为了便于区分,请使用项目特定的前缀。
某些功能的行为取决于项目是否使用语义化或基于时间的版本控制。
- 回归检测
release:latest
我们根据以下条件自动检测项目是否使用语义化或基于时间的版本控制:
- 如果总共有 ≤ 2 个发布:我们查看最近的发布。
- 如果有 3-9 个发布(包括 3 和 9):如果最近 3 个发布中有任何一个为 semver,则项目为 semver。
- 如果有 10 个或更多发布:如果最近 3 个发布中有任何一个为 semver,并且最近 10 个发布中有 3 个为 semver,则项目为 semver。
Sentry.init({
release: "my-project-name@2.3.12",
});
A common way to do this with JavaScript in a Node/npm environment would be to use the process.env.npm_package_version
like so:
Sentry.init({
release: "my-project-name@" + process.env.npm_package_version,
});
如何使发布名称(或版本)在代码中可用由您决定。例如,您可以在构建过程中或初始启动时设置一个环境变量。
设置发布名称会将每个事件标记为此发布名称。我们建议在发送带有该发布名称的事件之前告诉 Sentry 新的发布,这将解锁一些额外的功能。更多信息请参阅我们的 发布 文档。
如果您不告诉 Sentry 新的发布,Sentry 将在第一次看到带有该发布 ID 的事件时自动在系统中创建一个发布实体。
配置好 SDK 后,您可以安装仓库集成或手动提供自己的提交元数据。阅读我们的文档了解更多关于 设置发布 的信息,包括集成、关联提交以及告诉 Sentry 部署发布的时间。
通过观察用户采用情况、应用程序使用情况、崩溃 百分比和 会话数据,监控 发布健康。发布健康将提供关于崩溃和错误对用户体验的影响的见解,并通过 发布详情 图表和过滤器揭示每次新问题的趋势。
崩溃报告和应用程序挂起检测在 watchOS 上不可用。
为了监控发布健康,SDK 会发送会话数据。
会话表示用户与应用程序之间的交互。会话包含时间戳、状态(会话是否正常或是否崩溃),并且总是与一个发布相关联。大多数 Sentry SDK 可以自动管理会话。
Release health on the server side is tracked in two different modes:
- Single sessions that represent a node process; for example, a CLI application. In single sessions mode, the SDK creates a session for every node process. A session is started on
init
of the SDK, and ends when the process is exited. - Session aggregates represent requests. In session aggregates mode, sessions will be recorded differently and will represent the lifetime of requests. Sessions will automatically be aggregated for HTTP requests in your application.
We mark the session as crashed if an unhandled error reached our errorHandler
middleware.
We mark the session as an error if the SDK captures an event that contains an exception (this includes manually captured exceptions).
By default, the JavaScript SDKs are sending sessions, to disable this toggle the flag autoSessionTracking
to false
:
Sentry.init({
autoSessionTracking: false, // default: true
});
Deprecation Notice
Starting with SDK version 8.43.0 and up, the autoSessionTracking
option has been deprecated. You can use the BrowserSession integration in browser environments and the Http integration (via the trackIncomingRequestsAsSessions
option) in Node.js runtime.