Sentry Web 前端监控 - 最佳实践(官方教程)

本文涉及的产品
应用实时监控服务-应用监控,每月50GB免费额度
简介: Sentry Web 前端监控 - 最佳实践(官方教程)

创建一个 Sentry 项目



Step 1: 创建项目


  1. 登录您的 Sentry organization
  1. 从左侧导航菜单中选择 Projects 以显示所有项目的列表
  2. 单击 + Create Project 按钮


微信图片_20220612190933.png


注意:如果您的帐户中没有项目 --- 您可能会被重定向到入门向导以创建您的第一个项目。


  1. 微信图片_20220612191021.png


如果您尚未定义任何团队(Team),您可以选择默认组织团队(与您的 Sentry 组织同名的团队)或单击 + 按钮创建新团队。


  1. 微信图片_20220612191039.png


  • 单击 Create Project。这会将您带到配置页面。通读快速入门指南。
  • 根据您希望监控的代码为您的项目选择语言或框架——在本例中为 JavaScript
  • 给该项目一个 Name
  • Set your default alert settings 下,选择 i'll create my own alerts later
  • 为该项目分配一个 Team
  1. 复制 DSN key 并将其放在手边,因为我们会将密钥复制到源代码中。


微信图片_20220612191054.png


DSN(或数据源名称)告诉 SDK 将事件发送到何处,将它们与您刚刚创建的项目相关联。


  1. 点击 Got it! 按钮以创建项目。


Step 2: 创建警报规则


您可以为每个项目创建各种警报规则,并让 Sentry 知道您希望在应用程序中发生错误时通知的时间(when)、方式(how)和对象(whom)。警报规则(Alert rules)由条件(Conditions)和操作(Actions)组成,它们在满足相关条件时执行。有关更多信息,请参阅 Alerts。创建新项目时,您可以选择使用警报规则创建它,该规则在第一次出现新问题时通知所有项目团队成员(通过电子邮件)。这意味着下次发生类似错误时,不会触发通知,因为该错误不是“新的”。


在此步骤中,您将创建一个新的 Alert 规则,在每次(every time)事件发生时发出通知,即使它与已经存在的问题相关联。在实际的场景中,您可能会添加额外的条件,因为您不希望每次在终端用户浏览器的前端代码中发生事件时都得到通知。

  1. 从项目下拉列表中,找到新项目并点击齿轮图标打开项目设置(Project Settings)

image.gif

微信图片_20220612191119.png


  1. 单击 Alerts 以打开警报配置页面
  2. 单击 New Alert Rule


微信图片_20220612191137.png


  1. “New Alert Rule” 表单中,选择 “Issue Alert” 类型并输入以下值


微信图片_20220612191142.png


每次在所有环境(All Environments)中通过邮件(Mail)看到事件时,新的警报规则都会通知选定的团队成员

  1. 单击 Save Rule 以创建新规则


将 Sentry SDK 引入您的前端代码



前置条件


Demo App 源代码需要 NodeJS 开发环境来安装和运行应用程序。确保您已准备好以下各项:

  • Node and NPM
  • NVM

Step 1: 获取代码


  1. 在 GitHub 上打开 frontend-monitoring 示例代码库
  1. 单击 Fork 并选择您希望将此存储库分叉到的目标 GitHub 帐户


微信图片_20220612191240.png


  1. fork 完成后,单击 Clonedownload,然后复制存储库 HTTPS URL


微信图片_20220612191247.png


  1. 将分叉的存储库克隆到您的本地环境


> git clone <repository HTTPS url>


  1. 现在示例代码在本地可用,在您首选的代码编辑器中打开 frontend-monitoring 项目


Step 2: 安装 SDK


Sentry 通过在应用程序运行时中使用特定于平台的 SDK 来捕获数据。要使用 SDK,请在源代码中导入并配置它。 demo 项目使用 ReactBrowser JS。最快的入门方法是使用 JavaScript browser SDKCDN 托管版本,但是,您也可以通过 NPM 安装 browser SDK


  1. 打开 index.html 文件(位于 ./frontend-monitoring/public/ 下)

微信图片_20220612191219.png


请注意,我们在代码中尽可能早地导入和初始化 SDK。初始化 SDK 时,我们提供所需的配置。唯一的强制配置选项是 DSN key,但是,SDK 支持多个其他配置选项。有关更多信息,请参阅配置。

https://docs.sentry.io/platforms/javascript/configuration/


  1. Sentry SDK 配置中,输入您从上一节创建的项目中复制的 DSN key 值。


Sentry.init({
  dsn: "<PASTE YOUR DSN KEY HERE>",
});


Step 3: 安装并运行 demo app


在你的 localhost 上构建和运行 Demo 应用程序:

  1. 打开 shell 终端并将目录更改为 frontend-monitoring 项目文件夹
  2. 使用 .nvmrc 文件设置与本项目兼容的 Node 版本。运行:


> nvm use


  1. 通过运行安装项目依赖项:


> npm install


  1. 通过运行以下命令在 localhost 上构建、部署和运行项目:


> npm run deploy


微信图片_20220612191353.png


部署成功完成后,您将在终端中看到确认信息。

捕捉你的第一个错误



Step 1: 捕捉你的第一个事件


  1. 通过在浏览器中打开 localhost 链接来启动 demo app
  • http://localhost:5000/
  1. 打开浏览器的 Console 验证是否发生了错误
    image.gif

微信图片_20220612191428.png


  1. 点击任何 Buy! 将产品添加到购物车的按钮
  2. 单击左侧面板上的 Checkout 按钮以生成错误


微信图片_20220612191452.png


image.gif 请注意:

  • 应用程序中显示出错消息
  • 错误出现在浏览器控制台中
  • 发送到您在 Sentry 上配置的电子邮件地址的警报,通知您应用中发生的错误
    image.gif

Step 2: 处理错误


  1. 转到您的电子邮件收件箱并打开 Sentry 的电子邮件通知


微信图片_20220612191510.png


  1. 单击 Sentry 上的查看以在您的 Sentry 帐户中查看此错误的完整详细信息和上下文

微信图片_20220612191543.png


  1. 向下滚动到 Exception 堆栈跟踪


微信图片_20220612191556.png


  • 请注意,堆栈跟踪已 minifiedJavaScript 通常被 minified 以减少源代码的大小。
  • Sentry 可以将代码解压缩(un-minify)回其可读形式并在每个堆栈帧中显示源(代码)上下文行,这将在下一节中介绍。


在错误中启用可读堆栈跟踪



Step 1: 准备构建环境

我们在 frontend-monitoring 项目中使用 Makefile 来利用 sentry-cli 处理与 Sentry 相关的任务。CLI 已通过项目依赖项(请参阅 package.json)提供,并且需要几个参数才能运行。


  1. 打开 Makefile
  2. 取消注释已注释的环境变量 SENTRY_AUTH_TOKENSENTRY_ORGSENTRY_PROJECT (删除前导 #

微信图片_20220612191614.png


  1. 查找 SENTRY_ORGSENTRY_PROJECT
  • 打开您的 Sentry 帐户,然后单击 Settings > Projects
  • 您的 Organization ID 是浏览器 URL 的一部分(例如,_https://sentry.io/settings/**SENTRY_ORG**/projects/_)
  • SENTRY_PROJECT 值是出现在 project tile 中的名称
    image.gif
  • 复制值并将它们粘贴到 Makefile


  1. 创建 SENTRY_AUTH_TOKEN
  • 单击左侧面板中的 Developer Settings 菜单选项名称以创建新的集成(integration)和组织级(org-level)身份验证令牌(auth token)
  • 单击 New Internal Integration
    image.gif
  • 输入 Name
  • Permissions 下设置 Release:AdminOrganization:Read & Write
    image.gif
  • 单击 Save Changes
  • 保存成功确认后,向下滚动到页面底部并复制 TOKENS 下分配的令牌
    image.gif
  • 将令牌粘贴到 Makefile
  1. Makefile 应如下所示:
    image.gif

Step 2: 创建 release 并上传 source maps


现在我们可以调用 sentry-cli 来让 Sentry 知道我们有一个新 release 并将项目的 source maps 上传到它。

  • 您可以设置自定义 release version 以适应您的命名约定,或者让 Sentry CLI 建议一个版本。
  • 为了构建 frontend-monitoring 项目,我们使用 react-scripts 包,它也在 ./build/static/js/ 下生成 source maps
  1. Makefile 中,为 release version 添加一个新的环境变量,利用 Sentry CLI 提出版本值


REACT_APP_RELEASE_VERSION=`sentry-cli releases propose-version`


  1. Makefile 的底部,使用 Sentry CLI 将以下目标粘贴到:


create_release:
sentry-cli releases -o $(SENTRY_ORG) new -p $(SENTRY_PROJECT) $(REACT_APP_RELEASE_VERSION)
upload_sourcemaps:
    sentry-cli releases -o $(SENTRY_ORG) -p $(SENTRY_PROJECT) files $(REACT_APP_RELEASE_VERSION) \
        upload-sourcemaps --url-prefix "~/static/js" --validate build/static/js


  1. Makefile 包含一个 setup_release 目标,该目标在运行 $ npm run deploy 以构建和运行项目时从 package.json 文件中调用。我们将使用这个目标来调用所有与 release 相关的任务。


  • 在您的 Sentry 帐户中创建一个新的 release entity
  • 将项目的 source maps 上传到新 release


  1. 将现有的 setup_release 替换为:


setup_release: create_release upload_sourcemaps


  1. 您的 Makefile 应如下所示:

微信图片_20220612191717.png


现在您创建了 release version,您可以通过 SDK 将应用中捕获的任何错误与该 release 相关联。


  1. 打开 index.html 文件并向 SDK 添加一个新的配置选项。将 release version 环境变量分配给 release key


Sentry.init({
   dsn: "<YOUR DSN KEY>",
   release: "%REACT_APP_RELEASE_VERSION%",
 });


注意:release version 环境变量是在构建时在 project.json 中设置的,并被注入到生成的标记中。

Step 3: 尝试您的更改 --- 生成另一个错误


  1. 如果您的终端仍在 localhost 上提供 demo app,请单击 ^C 关闭本地服务器
  2. 通过运行以下命令来构建、部署和重新运行项目:


> npm run deploy


注意:Makefile 在缩进方面通常是严格的。如果您在运行上述命令时遇到意外错误,请确保 sentry-cli 命令正确地以制表符(tab)为前缀。

  1. 查看终端日志。请注意,minified 的脚本和 source maps 已上传到 release version
  2. 在您的浏览器中,确保开发控制台已打开并执行清空缓存和硬重新加载(Empty Cache and Hard Reload)以确保提供更新的代码。
  3. 通过将产品添加到您的购物车并单击 Checkout 再次生成错误
  4. 检查您的电子邮件以获取有关新错误的警报,然后单击在 Sentry 上查看以打开 issue 页面
  5. 请注意
    image.gif
  • 该事件现在标记有 Release ID
  • 错误堆栈跟踪现在 un-minified,包括每个堆栈帧中的文件名、方法名、行号和列号以及源代码上下文


Step 4: 探索 release


创建 release version 并通过 Sentry CLI 上传 source maps,在您的 Sentry 帐户中创建一个 Release entity

  1. 单击左侧面板中的 Releases,注意创建了一个新的 release version

image.gif

  1. 单击 release,注意您的应用程序中的错误已与此 release 相关联并列为New Issue

image.gif

  1. 单击 Artifacts 选项卡,注意 minified 的资源和 source maps 可用于此 release 并用于 source map 堆栈跟踪


启用可疑提交



Sentry 使用源代码存储库中的提交元数据(metadata)来帮助您更快地解决问题。这是通过建议可能在您的问题(issue)详细信息页面中引入错误的可疑提交(Suspect Commits)来完成的。它还允许 Sentry 显示 Suggested Assignees - 这些提交的作者列表并建议他们分配以解决问题(issue)。


现在您已经创建了一个 release,您可以告诉 Sentry 哪些提交与您的最新版本的代码相关联 —— 这称为提交跟踪(Commit Tracking)。


Step 1: 集成您的 GitHub 帐户和存储库


  1. 要将 GitHub 与您的 Sentry 组织(org)集成,请按照 GitHub 文档中的说明进行操作
  1. 对于最后一步,从您的 GitHub 帐户添加 frontend-monitoring 存储库


Step 2: 设置提交跟踪


现在您已经在 Sentry 中设置了 releases 作为 CI/CD 流程的一部分并集成了源代码存储库,您可以将链接存储库中的提交与发布相关联。

现在,您已经在 Sentry 中设置了 release 作为 CI/CD 流程的一部分,并集成了源代码存储库,您可以将链接存储库中的 commitsreleases 相关联。


注意:在 demo 项目中,我们使用 Makefile 来处理与构建相关的任务。如果您没有使用提供的 React demo 代码并且没有 Makefile,您可以选择直接从命令行运行本教程中使用的 sentry-cli 命令,或者将这些命令集成到相关的构建脚本中。

  1. 在你的项目中打开 Makefile
  2. 在文件底部添加以下目标:


associate_commits:
    sentry-cli releases -o $(SENTRY_ORG) -p $(SENTRY_PROJECT) set-commits --auto $(REACT_APP_RELEASE_VERSION)


该命令将 commits 与 release 相关联。auto 标志自动确定存储库名称,并将前一个 release 的提交和当前主提交之间的提交与该 release 相关联。

  1. 新的目标 associate_commits 将作为 setup_release 目标的一部分被调用,在最后添加它:


setup_release: create_release upload_sourcemaps associate_commits


您的 Makefile 应如下所示:


微信图片_20220612191900.png


  1. 如果您的终端仍在 localhost 上提供 demo app,请按 ^C 将其关闭
  2. 通过运行以下命令在本地主机上构建、服务和重新启动项目:


> npm run deploy


在终端日志中,请注意 sentry-cli 标识了 GitHub 存储库。


微信图片_20220612191915.png


Step 3: 可疑提交和建议受理人


现在可疑提交(suspect commits)和建议受理人(suggested assignees)应该开始出现在问题(issue)页面上。Sentry 通过将 release 中的提交、这些提交涉及的文件、堆栈跟踪中观察到的文件、这些文件的作者和所有权规则联系在一起来确定这些。


  1. 刷新浏览器并通过将产品添加到购物车并单击 Checkout 来生成错误
  2. 检查您的电子邮件以获取有关新错误的警报。请注意,电子邮件中添加了一个新的可疑提交(Suspect Commits)部分


微信图片_20220612191930.png


  1. 单击 Sentry 上的查看(View)以打开问题(issue)页面
  2. 在主面板中,注意 SUSPECT COMMITS 部分现在指向最有可能引入错误的提交。您可以单击提交(commit)按钮在 GitHub 上查看实际提交详细信息
  3. 在右侧面板中的 Suggested Assignees --- 您将看到可疑提交的作者被列为此问题的建议受理人(suggested assignee)


微信图片_20220612191946.png


您可以通过单击图标将建议受理人分配给问题。但是,在这种情况下,提交源于上游存储库,并且建议受理人不是您组织的一部分。或者,您可以手动将问题分配给分配给项目的其他用户或团队。


  1. 单击 Assignment 下拉列表并选择一个项目用户或团队


微信图片_20220612191959.png


  1. 在主面板中,找到 release 标签并将鼠标悬停在 i 图标上
  2. release 弹出窗口中,注意 release 现在包含提交数据(commit data)

微信图片_20220612192012.png


  1. 单击 release i 图标打开 release 详细信息页面
  2. 选择 Commits 选项卡。请注意,release 现在包含相关的提交列表


微信图片_20220612192026.png

相关实践学习
通过云拨测对指定服务器进行Ping/DNS监测
本实验将通过云拨测对指定服务器进行Ping/DNS监测,评估网站服务质量和用户体验。
目录
打赏
0
0
0
0
27
分享
相关文章
|
5天前
|
Veeam ONE 13 之初见 - Web 控制台和 Veeam 监控的未来
Veeam ONE 13 之初见 - Web 控制台和 Veeam 监控的未来
23 1
Veeam ONE 13 之初见 - Web 控制台和 Veeam 监控的未来
ASP.NET Web Pages - 教程
ASP.NET Web Pages 是一种用于创建动态网页的开发模式,采用HTML、CSS、JavaScript 和服务器脚本。本教程聚焦于Web Pages,介绍如何使用Razor语法结合服务器端代码与前端技术,以及利用WebMatrix工具进行开发。适合初学者入门ASP.NET。
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第27天】本文介绍了HTTP/2和HTTPS在前端性能调优中的应用。通过多路复用、服务器推送和头部压缩等特性,HTTP/2显著提升了Web性能。同时,HTTPS确保了数据传输的安全性。文章提供了示例代码,展示了如何使用Node.js创建一个HTTP/2服务器。
178 3
探索现代Web应用的微前端架构
【10月更文挑战第40天】在数字时代的浪潮中,Web应用的发展日益复杂多变。微前端架构作为一种新兴的设计理念,正逐步改变着传统的单一前端开发模式。本文将深入探讨微前端的核心概念、实现原理及其在实际项目中的应用,同时通过一个简单的代码示例,揭示如何将一个庞大的前端工程拆分成小而美的模块,进而提升项目的可维护性、可扩展性和开发效率。
|
4月前
|
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
104 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
|
4月前
|
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
125 20
使用Web浏览器访问UE应用的最佳实践
在3D/XR应用开发中,尤其是基于UE(虚幻引擎)开发的高精度场景,传统终端因硬件局限难以流畅运行高帧率、复杂效果的三维应用。实时云渲染技术,将渲染任务转移至云端服务器,降低终端硬件要求,确保用户获得流畅体验。具备弹性扩展、优化传输协议、跨平台支持和安全性等优势,适用于多种终端和场景,特别集成像素流送技术,帮助UE开发者实现低代码上云操作,简化部署流程,保留UE引擎的强大开发能力,确保画面精美且终端轻量化。
268 17
使用Web浏览器访问UE应用的最佳实践
使用 MERN 堆栈构建可扩展 Web 应用程序的最佳实践
使用 MERN 堆栈构建可扩展 Web 应用程序的最佳实践
134 6
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
114 6
前端中对象的深度应用与最佳实践
前端对象应用涉及在网页开发中使用JavaScript等技术创建和操作对象,以实现动态交互效果。通过定义属性和方法,对象可以封装数据和功能,提升代码的组织性和复用性,是现代Web开发的核心技术之一。