Sentry(v20.12.1) K8S 云原生架构探索,Sentry JavaScript SDK 三种安装加载方式

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: Sentry(v20.12.1) K8S 云原生架构探索,Sentry JavaScript SDK 三种安装加载方式

NPM


# 使用 yarn
yarn add @sentry/browser @sentry/tracing
# 使用 npm
npm install --save @sentry/browser @sentry/tracing


CDN


Sentry 支持通过 CDN 加载其 JavaScript SDK。通常,我们建议使用 npm 软件包(@sentry/browser)作为 CDN 创建方案,在这些方案中,由于网络问题或广告扩展程序之类的常见扩展,Sentry 无法加载。如果必须使用 CDN,请看看如何使用我们的 JS 加载器延迟加载 Sentry。


<script
  src="https://browser.sentry-cdn.com/5.29.2/bundle.min.js"
  integrity="sha384-ir4+BihBClNpjZk3UKgHTr0cwRhujAjy/M5VEGvcOzjhM1Db79GAg9xLxYn4uVK4"
  crossorigin="anonymous"
></script>


性能 Bundle


要使用 Sentry 的性能跟踪,需要一个 alternative(备用) bundle。这使我们可以为只需要错误监视的用户减少文件大小。


<script
  src="https://browser.sentry-cdn.com/5.29.2/bundle.tracing.min.js"
  integrity="sha384-4zxA5Bnxor/VkZae20EqPP3A/6vDlw1ZhqF7EvpmeTfWYFjPIDdaUSOk/q7G/bYw"
  crossorigin="anonymous"
></script>


您只需要加载 bundle.tracing.min.js,即可提供错误和性能监控。

这里要注意的最重要的一点是 Sentry.Integrations 已经可用,可以在调用 Sentry.init 时引用它:


Sentry.init({
  dsn: "___PUBLIC_DSN___",
  release: "my-project-name@" + process.env.npm_package_version,
  integrations: [new Sentry.Integrations.BrowserTracing()],
  // 我们建议在生产中调整此值,或使用 tracesSampler 进行更精细的控制
  tracesSampleRate: 1.0,
});


可用的 Bundles


提供了多种 bundles,这些 bundles 针对 Sentry 的各种集成进行了优化。


File Integrity Checksum
angular.js sha384-oGlOwTDeutKQy8iIj86N5Iz+cg3oB7k7DwwAFF+JvU5Ryk3QpBd9RWe7b1dvbytH-
angular.min.js sha384-glEOteL1rvN2KINqDwBkOPyi+yM/AuHdHZoW89/oufCLWhmOZvRLTQcMarZLrahO
bundle.es6.js sha384-C/1UhIXVvIEeHWK+Oon2qJ5dknXU/6yoOszWad+UgIQaMvkuRapwg7GBAm89WKkY
bundle.es6.min.js sha384-YtQnmGXv08gDRhGCtnUN32p5tEk2xCJePCG5XGcFefgts4LACdWXenPO5/kVkQKg
bundle.js sha384-70m6a/iRDkIhWo9D2seDfr054bdBakn8SM/I1Qx/2E1E2oeFrB/UlfRRQ7lk6w29
bundle.min.js sha384-ir4+BihBClNpjZk3UKgHTr0cwRhujAjy/M5VEGvcOzjhM1Db79GAg9xLxYn4uVK4
bundle.tracing.js sha384-tsSu02fvNXxzKOYMmsMHW6Zjb3xpUtLkKsF3h63S/8uzbyoI4sURznHBWWmmYBnT
bundle.tracing.min.js sha384-4zxA5Bnxor/VkZae20EqPP3A/6vDlw1ZhqF7EvpmeTfWYFjPIDdaUSOk/q7G/bYw
captureconsole.js sha384-FB7wnw52/iiuFH+aV7+yF3+Hb8y+UeaYjreZafP7GzE9VjoWZ0k196k4XseGRkeK
captureconsole.min.js sha384-6YIh+FyIHrE7APnLltmw5AcyyEI7yV3pgn5I/aww3gYxGrAsotTDRIsix05d1bmg
debug.js sha384-CzFfkxQdU/85sLu1YXX2lWrZU/pJEkSB7qiwkIwFwHQn/+dWp9Qz8YADcVNlwpUY
debug.min.js sha384-gfwqW2T9/pJzXG5kGMjh219m8NxYr4sFdNEmk8Kcmm03LLR3e7u0MUCJtF+BvwlA
dedupe.js sha384-w30Nic/lP8/Lwg/nJr5WAydru2HshwlpwrbablyGtwy93SdrKOXBENhAbFar8U61
dedupe.min.js sha384-991Pgp/m4NC5gP7q/xzXphPFKPZI3iGG04gFtnoHlyH13gSiR/cQJVh+/5vjnULG
ember.js sha384-uIwfFqGm1HIvIFAzmFi7+254jT3en0RDGQBep5yjZlUM5m5+wkxlV3iwtxbRSiDL
ember.min.js sha384-AoDWDCFzGgUlcjpTPIOucLHY0TcDkJISfQTounFvJC9id+SLfT+LMV/omYXeSxtk
extraerrordata.js sha384-UJSF3duqUmoZZYNHJIgczPWi0zF4dj9ZjXfU+HWSGsCkmbAwHvXqcdgc5IcmZBUb
extraerrordata.min.js sha384-32fXO2AIiHJpC33l8L8jhTkgPMY5QyAMH+E+3qyI4LI+RC4BsMtaqi1Y0wncuONI
offline.js sha384-6AWlLn2pEAwsHjZOeLUKhHPtfAzzAC7GXXYpFW1XZQ1OChliYYUvWwSfrmEPe+R8
offline.min.js sha384-nOHWW5k4teYVTgdr9pem7/0/N/mt6DLwL/vipeoYd/0u0lh3Ld9IiRAIWgk+ubid
reportingobserver.js sha384-ZtU5drTUdMPOWXuUZvgv4QyqMxkDNdiBiEbj8aD5CmwABHCI/XUFd2eC3iRRlc+p
reportingobserver.min.js sha384-c8fGh3K1+dBi9WNNtK2eVmaEgfoM3Rq1gY6KeRoA/WSi7RlhxRkUmVK37DJTwr7F
rewriteframes.js sha384-k1F/xgCZmOcziSivt8QoKMaELWZmjNJFm+n2PX/2MEKWrszB2IL6S4q+JDJ7o/8N
rewriteframes.min.js sha384-22utNfjd1bJOgWt7yrPsUIWR7gluO23PO7d2m30lqrmnj5DH3OmVa8fwcwZhbfPp
sessiontiming.js sha384-9srvADRpjm3FrmiK6dY0NGV4wnTG4dt8onLWUx6LRVN1xhtw+oRJnQ1LtKi4kqGB
sessiontiming.min.js sha384-yy0Jah9kyZt8VCnKVBxDj92pIC/E9XFkw5G6NXx2+0ZJbTBn83Y3X32KqAZxhF9b
transaction.js sha384-KN4xQF97K+t2Zgsqg8FiZE5++QLb0PCD4+v0k0ZVg6rl47vvmUIiSueozKB29Gu1
transaction.min.js sha384-p+n3NUtytg2Zgunyx5gQNdbZk7AieZyquN8nOaL7+hbqbe0SZomZIQJ5apsiXuLd
vue.js sha384-e6Vy50VfbAicS4Fa6R4tigCfJ3q+ifS/AYFyhP7+OtXcLjr0C8zHCoh2DCJ1EMNP
vue.min.js sha384-FKagncFah3a9nkKNEIDQqXhYnny5Wzc37/AZV5eKKnRVS8uPpeFPdu9dnrvAnRpF


附加配置



使用 defer


如果您在脚本中包含 defer,请确保该应用可以监视其后的所有内容。我们强烈建议您使用 defer,同时将浏 browser SDK 的脚本标签放在第一位,并标记它 -- 以及所有其他脚本 -- defer(而不是 async ),以确保在其他任何脚本之前执行。


如果不这样做,您会发现在加载 Sentry 之前可能会发生错误,这意味着您将无视这些问题。


内容安全策略


如果您的站点上设置了内容安全策略(CSP),则需要添加从何处加载 SDK 的 script-src,以及 DSN 的来源。例如:


延迟加载 Sentry



Loader 是我们 SDK 的一个小型包装器,它可以做一些事情:

  • 始终拥有我们 SDK 的最新推荐稳定版本
  • 捕获所有全局错误未处理的 promise rejections
  • 延迟注入我们的 SDK 到您的网站
  • 加载 SDK 后,Loader 会将所有内容发送给 Sentry

loader 的压缩量(gzipped)小于 1kB,并且在您的 DSN 中包含 Sentry.init 调用。


<script
  src="https://js.sentry-cdn.com/___PUBLIC_KEY___.min.js"
  crossorigin="anonymous"
></script>


附加配置


如果要设置其他选项,则必须像这样设置它们:

onLoad 是 Loader 仅提供的功能;一旦将 SDK 注入网站,Loader 就会调用它。Loader 的 init() 工作原理也有所不同。为了方便起见,我们在内部合并了这些选项,而不仅仅是设置选项,这是为了方便起见,因此您不必再次设置 DSN,因为 Loader 已经包含了它。


如前所述,Loader 会延迟加载我们的 SDK 并将其注入您的网站,但您也可以告诉 loader 立即获取它,而不是仅在需要时获取它。将 data-lazy 设置为 no 将告诉 Loader 尽快注入 SDK:


<script>
  Sentry.onLoad(function() {
    // 使用任何你想要的 Sentry.* 函数
  });
  Sentry.forceLoad();
</script>


SDK 版本


进入 Sentry Web UI,查看 Settings -> Projects -> Client Keys (DSN),然后按 Configure 按钮。在这里,您可以查看用于配置 DSN 的选项,并选择 Loader 应加载的 SDK 版本。


由于更改已被缓存,因此可能需要几分钟的时间才能在代码中看到更改。

微信图片_20220611114351.png


当前限制


由于我们以异步方式注入我们的 SDK,因此我们将仅为您监视全局错误未处理的 promise,直到 SDK 完全加载为止。这意味着在下载过程中我们可能会错过 breadcrumbs(面包屑)。


例如,用户单击您网站上的按钮正在发出 XHR 请求。在 SDK 完全加载之前,我们不会遗漏任何错误,只会遗留 breadcrumbs(面包屑)。您可以通过手动调用 forceLoad 或设置 data-lazy="no" 来减少此时间。


如果您想了解 loader 本身的内部工作原理,则可以在 sentry-javascript repo 中全面阅读文档化的源代码。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
1天前
|
Cloud Native 持续交付 云计算
云原生技术:重塑软件开发与架构的未来
在云计算的推动下,云原生技术正逐渐成为软件开发的新标准,强调利用容器、服务网格、微服务等技术实现敏捷开发与高效运维。本文探讨了云原生技术如何重塑软件开发与架构的未来,介绍了其核心概念(如容器化、微服务架构、CI/CD)及优势(如敏捷性、可扩展性、成本效益),并讨论了其在金融服务、电子商务和物联网等领域的实际应用及面临的挑战。尽管存在技术复杂性和人才短缺等问题,云原生技术仍将成为软件开发的主流趋势。
|
1天前
|
运维 Cloud Native 持续交付
探索云原生架构:企业转型的未来之路
在当今这个数据驱动的时代,企业面临着前所未有的挑战与机遇。随着云计算技术的日益成熟,云原生作为一种新兴的架构理念,正逐步成为推动企业数字化转型的关键力量。本文旨在深入探讨云原生的概念、特点及其对企业转型的重要意义,并通过实例分析展示其在实际应用中的巨大潜力和价值。
|
4天前
|
运维 Cloud Native Devops
探索云原生架构:企业数字化转型的新引擎
在当今数字化浪潮中,云原生架构以其敏捷性、弹性和高可用性成为企业实现高效上云和加速创新的关键。本文将深入探讨云原生的核心理念、关键技术如容器化、微服务和DevOps实践,以及这些技术如何共同推动企业在云平台上的灵活部署和快速迭代。同时,文章还将分析成功案例,展示云原生如何帮助企业构建现代化应用,提高资源利用率,并确保系统稳定运行。通过综合运用这些先进技术策略,企业能够有效应对市场变化,缩短产品上市时间,从而在激烈的市场竞争中脱颖而出。
|
9天前
|
运维 Cloud Native 云计算
云原生之旅:从容器化到微服务架构的演进之路
在数字化浪潮中,云原生技术如同星辰大海中的灯塔,为航船指引方向。本文将带你穿梭于云计算的世界,探索从容器化技术到微服务架构的变革旅程。我们将一窥云原生如何助力企业灵活应对快速变化的市场需求,以及在这一过程中,开发者和运维人员是如何成为时代变革的弄潮儿。让我们一同启航,驶向云原生的广阔天地。
|
4天前
|
Cloud Native Devops 持续交付
探索云原生架构:构建高效、灵活和可扩展的系统
本文将深入探讨云原生架构的核心概念、主要技术以及其带来的优势。我们将从云原生的定义开始,了解其设计理念和技术原则;接着分析容器化、微服务等关键技术在云原生中的应用;最后总结云原生架构如何助力企业实现数字化转型,提升业务敏捷性和创新能力。通过这篇文章,读者可以全面了解云原生架构的价值和应用前景。
|
3天前
|
Kubernetes Cloud Native 持续交付
探秘云原生架构:企业数字化转型的新引擎
在当今数字化浪潮中,云原生架构正成为推动企业创新与灵活性的关键因素。本文将深入探讨云原生的核心理念、关键技术以及它如何助力企业实现高效运营和快速响应市场变化,为读者揭示这一现代技术趋势背后的深刻内涵与实践价值。
12 2
|
4天前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
12 3
|
6天前
|
运维 Kubernetes Cloud Native
云原生之旅:容器化与微服务架构的融合之道
在数字化转型的浪潮中,云原生技术以其高效、灵活的特性成为企业IT架构升级的重要选择。本文将探讨云原生的核心概念——容器化和微服务架构,并阐述它们如何相互融合,共同推动现代应用的开发与部署。通过深入浅出的解释,我们将揭示云原生如何助力企业快速适应市场变化,实现业务的持续创新和价值最大化。
|
7天前
|
运维 Cloud Native 云计算
云原生之旅:从容器化到微服务架构
【9月更文挑战第9天】在数字化转型的浪潮中,云原生技术成为推动企业IT革新的关键力量。本文将通过浅显易懂的语言和生动的比喻,带领读者探索云原生的核心概念、关键技术及实践路径,揭示如何在云计算时代构建灵活、高效、可靠的应用系统。你将了解到,正如甘地所言“你必须成为你希望在世界上看到的改变”,在云原生的世界里,每一位开发者和技术决策者都扮演着塑造未来的角色。
|
4天前
|
Kubernetes Docker 微服务
构建高效的微服务架构:基于Docker和Kubernetes的最佳实践
在现代软件开发中,微服务架构因其灵活性和可扩展性而受到广泛青睐。本文探讨了如何利用Docker和Kubernetes来构建高效的微服务架构。我们将深入分析Docker容器的优势、Kubernetes的编排能力,以及它们如何结合实现高可用性、自动扩展和持续部署。通过具体的最佳实践和实际案例,读者将能够理解如何优化微服务的管理和部署过程,从而提高开发效率和系统稳定性。