SDK
Demo App
Releases
)Breadcrumbs
)Environment
)Exception
Message
demo app
源代码需要 Python
开发环境来构建安装和运行应用程序。确保您已准备好以下各项:VS-Code
)Python3
Sentry-CLI
NPM
GitHub
上打开示例代码存储库Fork
并选择您希望将此存储库分叉到的目标 GitHub
帐户Clone
或 download
并复制存储库 HTTPS URL
4. 将分叉的存储库克隆到您的本地环境
> git clone <repository HTTPS url>
backend-monitoring
项目Sentry
可以通过建议可能将错误引入您的代码库的可疑提交来帮助您更快地解决错误。这是通过配置提交跟踪启用的。需要集成您的源代码管理解决方案并添加您的代码存储库才能启用提交跟踪,有关更多信息,请参阅此链接。
Sentry
帐户并导航到 Settings > Integrations
以启用 GitHub 集成
并添加您的 backend-monitoring
存储库。有关更多信息,请按照我们的 GitHub 文档中描述的步骤操作。Sentry 通过在应用程序运行时中使用特定于平台的 SDK 来捕获数据。要使用 SDK,请在源代码中导入、初始化和配置它。
要开始在我们的 Django
应用程序中使用 SDK
,我们通过在 requirements.txt
文件中定义依赖项来安装 sentry-sdk
。 Sentry SDK GitHub
存储库中提供了 SDK
文档和 release
信息。
打开 settings.py
文件(位于 ./backend-monitoring/myproject/settings.py 下)。这是我们在应用程序中初始化和配置 Sentry SDK
的地方。
将 Sentry SDK
导入应用程序后,导入 Sentry Django
集成也很重要。集成扩展了 SDK
的一些常见框架和库的功能。
在 Sentry SDK
配置中,输入您从上一教程中创建的项目中复制的 dsn key
。
在 localhost
上构建和运行 Demo
应用程序
打开 shell 终端并将目录更改为 backend-monitoring
项目根文件夹
如果您尚未安装 Python3,请运行以下命令:
安装 virtualenv
和 virtualenvwrapper
:
安装 Sentry
的命令行工具以使用 release tracking
和 GitHub integration
来提交数据:
在项目根目录中设置并激活 Python 3
虚拟环境。
您可以随意命名 virtual environment,在我们的例子中,我们将其命名为 sentry-demo-django
要激活虚拟环境,请运行:
打开包含在项目根文件夹中的 Makefile
。该文件在此处用于模拟 CI/CD
流程。
遵循 deploy
目标执行流程。
要执行 sentry-cli
命令,请按照此处描述的说明获取 SENTRY_AUTH_TOKEN
、SENTRY_ORG
和 SENTRY_PROJECT
环境变量的值。
可以通过环境变量或专用配置文件提供这些值来配置
sentry-cli
。有关更多信息,请参阅Sentry CLI > Configuration and Authentication
https://docs.sentry.io/product/cli/configuration/
运行以下命令安装所需的 Python
库,设置 Sentry Release
,并运行 Django server
:
release
是部署到环境中的代码版本。配置 Release
有助于您确定代码中是否存在回归(regression
)、追究责任(hold accountability
)、解决 Sentry
中的问题(issues
)以及与部署保持同步。 Releases
需要在您的 SDK
中进行配置,然后通过 sentry-cli
进行管理以支持额外的功能,例如可疑提交(suspect commits
)和建议的受理人(suggested assignee
)。
Sentry
目前支持与 GitHub
、Bitbucket
、Azure DevOps
、GitLab
等的集成。有关我们集成的完整列表,请查看我们关于集成的文档。
让我们看看我们如何在这个项目中设置 release
:
打开文件 settings.py
。请注意,我们在初始化 SDK
时添加了 release
配置选项。
打开您在上一教程中运行的 Makefile
。
请注意,我们将 release version
名称设置为环境变量,然后在应用程序的运行时中使用。我们让 CLI
建议 release version
名称,但您可能希望应用您的命名约定:
然后我们使用建议/选择(proposed/selected)
的名称为我们的项目创建新 release
在上一个教程中,我们配置了 GitHub 集成并添加了用于提交跟踪的代码存储库。现在我们可以通过运行以下命令将来自该存储库的提交与新版本相关联:
Breadcrumbs
是导致错误的事件的踪迹。在尝试重现问题时,它们非常有用。根据平台,SDK
将默认跟踪各种类型的面包屑(对于后端 SDK
,这些是数据库查询、网络事件、日志记录等),您也可以添加自定义面包屑。
让我们看看如何将面包屑添加到我们的应用程序中:
打开文件 myapp > view.py
请注意,我们从 SDK
库中导入了 add_breadcrumb
。
我们为视图类中的每个方法处理程序创建一个自定义面包屑。此面包屑将添加到与通过这些方法调用流触发的任何错误相关联的面包屑轨迹中。例如,在 HandledErrorView:get
下:
Environment
是一个强大的配置选项,它使开发人员能够使用 Sentry
在发生错误的部署环境的上下文中执行各种工作流(过滤问题、触发警报等)。
打开 settings.py
文件
请注意,我们使用环境配置选项初始化 SDK
。SDK
将捕获的任何事件都将使用配置的环境值进行标记。
注意:Environment 值是自由格式的字符串。
Sentry SDK
或UI
不会限制您使用任何特定值或格式。在本例中,我们对值进行了硬编码。在现实生活中的应用程序中,该值可能会通过属性配置文件、系统或环境变量动态确定。
Sentry SDK
将自动捕获并报告在您的应用程序运行时发生的任何未处理的错误,无需任何额外配置或显式处理。通常,未处理的错误是没有被任何 except
(或 try/catch
)子句捕获的错误。
Django
应用程序以触发未处理的错误:http://localhost:8000/unhandled
。Sentry
帐户中打开问题(Issues
)视图。Issues Stream
)中。 issue
,打开 issue
详细信息页面。 Sentry SDK
包含多种方法,您可以利用这些方法在 except
子句、代码的关键区域等中显式(explicitly
)报告错误、事件和自定义消息。
打开 views.py
文件。请注意,我们导入了包含 capture_exception
方法的 sentry_sdk
库。
该方法用于捕获由 HandledErrorView
中的 except
子句处理的异常。
要在您的本地主机上试用,请触发以下端点:http://localhost:8000/handled
。
与未处理的错误类似,打开新问题(issue
)的详细信息页面。
请注意,该事件使用相同的 environment
和 environment
配置选项进行标记。将鼠标悬停在 release tag
中的 i
图标上以显示 release
信息和与其关联的提交。
单击 release
的 i
图标以导航到 release
页面。
通常,不会发出 capture_message
,但有时开发人员可能希望在他们的应用程序中添加一条简单的消息以进行调试,而 capture_message
对此非常有用。
在 views.py
文件中, capture_message
方法通过 sentry_sdk
库导入提供。
您可以在应用程序中的任何位置使用它。在我们的示例中,我们创建了一个专用的视图类 CaptureMessageView
来触发和捕获我们想要跟踪的消息
要在您的本地主机上试用,请触发以下端点:http://localhost:8000/message
。
和以前一样,从您的问题流(Issues Stream
)中打开新问题的详细信息页面。
在 views.py
文件中,继续将 capture_message
方法更改为:
保存更改并再次触发 /message
端点。(更改应立即通过 StateReloader
应用)
请注意,新事件的严重性级别标签现在显示 level:fatal
。
您可以通过添加自定义标签和用户上下文属性,通过 Sentry SDK
丰富您的事件和错误数据。除了为您的错误提供更多上下文之外,这些还将扩展您的选项以通过事件元数据进行搜索、过滤和查询。有关丰富数据的优势的更多信息,请参阅让数据发挥作用。
让我们用 capture_message
丰富我们捕获的消息事件的数据。
在 views.py
文件中,找到触发 sentry_sdk.capture_message
的行。
用以下代码替换该行:
注意:我们正在使用 push_scope 方法,该方法允许我们在本地范围内发送具有一个特定事件的数据。我们在本地范围内设置自定义标签、用户上下文属性(电子邮件)和额外数据,以丰富消息事件的数据。
保存更改并再次触发 /message
端点。
从您的问题流(Issues Stream
)打开问题的详细信息页面。
请注意:
user email
现在显示在详细信息页面上,受此事件影响的唯一用户数反映在 issue
的标题中。