Amazon X-Ray Python的软件工具包 - Amazon X-Ray
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Amazon X-Ray Python的软件工具包

适用于 Python 的 X-Ray SDK 是一个适用于 Python Web 应用程序的库,它提供了用于生成跟踪数据并将其发送到 X-Ray 守护程序的类和方法。跟踪数据包括有关应用程序处理的传入 HTTP 请求的信息,以及应用程序使用对下游服务进行的调用的信息Amazon软件开发工具包、HTTP 客户端或 SQL 数据库连接器。您还可以手动创建分段并在注释和元数据中添加调试信息。

可以使用 pip 下载开发工具包。

$ pip install aws-xray-sdk
注意

适用于 Python 的 X-Ray SDK 是一个开源项目。你可以关注该项目并提交议题和拉取请求GitHub:github.com/aws/aws-xray-sdk-python

如果你使用 Django 或 Flask,请先从将 SDK 中间件添加到您的应用程序跟踪传入的请求。此中间件为每个被跟踪请求创建一个分段并在发送响应时完成该分段。当分段打开时,您可以使用开发工具包客户端的方法将信息添加到分段,并创建子分段以跟踪下游调用。开发工具包还会自动记录在分段打开时应用程序引发的异常。对于其他应用程序,您可以手动创建分段

对于仪器化应用程序或服务调用的 Lambda 函数,Lambda 会读取跟踪标题并自动跟踪采样请求。对于其他功能,你可以配置 Lambda对传入的请求进行采样和跟踪。无论哪种情况,Lambda 都会创建区段并将其提供给 X-Ray SDK。

注意

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

工作线程查看在 Lambda 中测试的 Python 函数的示例。

接下来,使用适用于 Python 的 X-Ray SDK 通过以下方式检测下行调修补应用程序的库。开发工具包支持以下库。

支持的库
  • botocoreboto3— 仪器Amazon SDK for Python (Boto)客户。

  • pynamodb— Instrument PynamoDB 版本的亚马逊 DynamoDB 客户端。

  • aiobotocoreaioboto3— 仪器异步-适用于 Python 客户端的软件开发工具包的集成版本。

  • requestsaiohttp— 仪器高级别 HTTP 客户端。

  • httplibhttp.client— 检测低级 HTTP 客户端和使用它们的更高级别的库。

  • sqlite3— 仪器 SQLite 客户端。

  • mysql-connector-python— 仪器 MySQL 客户端。

  • pg8000— 仪器纯 Python PostgreSQL 接口。

  • psycopg2— 仪器 PostgreSQL 数据库适配器。

  • pymongo— 仪器 MongoDB 客户端。

  • pymysql— 仪器PyMy基于 SQL 和 MariaDB 的客户端。

每当您的应用程序调用到Amazon、SQL 数据库或其他 HTTP 服务,SDK 会在子分段中记录有关该呼叫的信息。Amazon Web Services您在服务中访问的资源将作为下游节点显示在服务地图上,以帮助您识别各个连接上的错误和限制问题。

开始使用 SDK 后,通过以下方式自定义其行为配置录制器和中间件。您可以添加插件来记录有关应用程序上运行的计算资源的数据,通过定义采样规则来自定义采样行为,设置日志级别以在应用程序日志中查看来自开发工具包的更多或更少的信息。

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

注释和元数据

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

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

有关 SDK 的类和方法的参考文档,请参阅Amazon X-Ray适用于 Python 的 SDK

要求

适用于 Python 的 X-Ray SDK 支持以下语言和库版本。

  • 蟒蛇— 2.7、3.4 及更高版本

  • 詹戈— 1.10 及更高版本

  • 烧瓶— 0.10 及更高版本

  • aiohttp— 2.3.0 及更高版本

  • Amazon SDK for Python (Boto)— 1.4.0 及更高版本

  • botocore— 1.5.0 及更高版本

  • 枚举— 0.4.7 及更高版本,适用于 Python 3.4.0 及更早版本

  • jsonpickle— 1.0.0 及更高版本

  • 设置工具— 40.6.3 及更高版本

  • 包裹— 1.11.0 及更高版本

依赖项管理

适用于 Python 的 X-Ray SDK 可在pip

  • 包裹aws-xray-sdk

在您的 requirements.txt 文件中添加开发工具包作为依赖项。

例 requirements.txt
aws-xray-sdk==2.4.2 boto3==1.4.4 botocore==1.5.55 Django==1.11.3

如果你使用 Elastic Beanstalk 来部署应用程序,Elastic Beanstalk 会将所有软件包安装在requirements.txt自动。