AWS SDK适用于 Node.js 的 X-Ray - AWS X-Ray

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS SDK适用于 Node.js 的 X-Ray

X-Ray SDK for Node.js 是一个用于 Express Web 应用程序和 Node.js Lambda 函数的库,它提供了用于生成跟踪数据并将其发送到 X-Ray 守护程序的类和方法。跟踪数据包括有关应用程序处理的传入HTTP请求的信息,以及应用程序使用 AWS SDK或HTTP客户端向下游服务发出的调用的信息。

注意

Node.js 版 X-R SDK ay 是一个开源项目,支持 Node.js 版本 14.x 及更高版本。你可以通过以下网址关注该项目并提交议题和拉取请求 GitHub:github.co m/aws/ aws-xray-sdk-node

如果您使用 Express,请首先在SDK应用服务器上添加 as 中间件来跟踪传入的请求。此中间件为每个被跟踪请求创建一个分段并在发送响应时完成该分段。当分段处于打开状态时,您可以使用SDK客户端的方法向分段添加信息,并创建子分段来跟踪下游呼叫。SDK还会自动记录您的应用程序在区段打开时抛出的异常。

对于由经过检测的应用程序或服务调用的 Lambda 函数,Lambda 会读取跟踪标头并自动跟踪采样的请求。对于其他函数,您可以将 Lambda 配置为采样和跟踪传入请求。无论哪种情况,Lambda 都会创建分段并将其提供给 X-Ray。SDK

注意

在 Lambda 上,X-Ray SDK 是可选的。如果您不在函数中使用它,您的服务映射仍将包含一个用于 Lambda 服务的节点,以及每个 Lambda 函数的节点。通过添加SDK,您可以分析您的函数代码,将子分段添加到 Lambda 记录的函数段中。请参阅AWS Lambda 和 AWS X-Ray了解更多信息。

接下来,使用 X-Ray SDK for Node.js JavaScript 在 Node.js 客户端中检测你 AWS SDK的 for。每当您使用检测过的客户端调用下游 AWS 服务 或资源时,都会在子分段中SDK记录有关该呼叫的信息。 AWS 服务 您在服务中访问的资源将作为下游节点显示在跟踪地图上,以帮助您识别各个连接上的错误和限制问题。

X-R SDK ay for Node.js 还为下游HTTP网络调用APIs和SQL查询提供工具。将您的HTTP客户端封装在SDK的捕获方法中,以记录有关HTTP拨出电话的信息。对于SQL客户端,请使用与您的数据库类型对应的捕获方法

中间件将采用规则应用于传入请求以确定要跟踪的请求。您可以将 X-Ray for Node.js 配置SDK为调整采样行为或记录有关运行应用程序的 AWS 计算资源的信息。

记录有关请求以及应用程序在注释和元数据中所做的工作的其他信息。注释是简单的键值对,已为这些键值对编制索引以用于筛选条件表达式,以便您能够搜索包含特定数据的跟踪。元数据条目的限制较少,可以记录整个对象和数组——任何可以序列化的JSON对象。

注释和元数据

注释和元数据是您使用 X-Ray 添加到分段的任意文本SDK。系统会对注释编制索引,以便与筛选表达式一起使用。元数据未编制索引,但可以使用 X-Ray 控制台在原始片段中查看,或者API。您授予 X-Ray 读取权限的任何人都可以查看这些数据。

当代码中具有大量检测的客户端时,一个请求分段可包含大量子分段,检测的客户端发起的每个调用均对应一个子分段。您可以通过将客户端调用包含在自定义子分段中来整理子分段并为其分组。您可以为整个函数或任何代码部分创建自定义子分段,并记录子分段的元数据和注释,而不是编写父分段的所有内容。

有关类和方法SDK的参考文档,请参阅 Node.js API 参考文档。AWS X-Ray SDK

要求

Node.js 版 X-R SDK ay 需要 Node.js 和以下库:

  • atomic-batcher - 1.0.2

  • cls-hooked - 4.2.2

  • pkginfo - 0.4.0

  • semver - 5.3.0

当你安装这些库时,它会把它们SDK拉进去。NPM

要跟踪 AWS SDK客户端,SDK适用于 Node.js 的 X-Ray 需要 Node.js JavaScript 中f AWS SDK or的最低版本。

  • aws-sdk - 2.7.15

依赖项管理

SDK适用于 Node.js 的 X-Ray 可从中获得NPM。

要进行本地开发,请使用 npm 将安装到您的项目目录中。SDK

~/nodejs-xray$ npm install aws-xray-sdk aws-xray-sdk@3.3.3 ├─┬ aws-xray-sdk-core@3.3.3 │ ├── @aws-sdk/service-error-classification@3.15.0 │ ├── @aws-sdk/types@3.15.0 │ ├─┬ @types/cls-hooked@4.3.3 │ │ └── @types/node@15.3.0 │ ├── atomic-batcher@1.0.2 │ ├─┬ cls-hooked@4.2.2 │ │ ├─┬ async-hook-jl@1.7.6 │ │ │ └── stack-chain@1.3.7 │ │ └─┬ emitter-listener@1.1.2 │ │ └── shimmer@1.2.1 │ └── semver@5.7.1 ├── aws-xray-sdk-express@3.3.3 ├── aws-xray-sdk-mysql@3.3.3 └── aws-xray-sdk-postgres@3.3.3

使用--save选项将另存SDK为应用程序中的依赖项package.json

~/nodejs-xray$ npm install aws-xray-sdk --save aws-xray-sdk@3.3.3

如果您的应用程序有任何依赖项的版本与 X-R SDK ay 的依赖项冲突,则将同时安装两个版本以确保兼容性。有关更多详细信息,请参阅依赖关系解析的官方NPM文档

Node.js 示例

使用 f AWS X-Ray SDK or Node.js,在请求通过你的 Node.js 应用程序时 end-to-end 查看这些请求。