本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon X-Ray SDK for Python
适用于 Python 的 X-Ray 开发工具包提供用于生成跟踪数据并将其发送到 X-Ray 守护程序的类和方法。跟踪数据包括由应用程序提供服务的传入 HTTP 请求的相关信息,以及应用程序使用AmazonSDK、HTTP 客户端或 SQL 数据库连接器。您还可以手动创建分段并在注释和元数据中添加调试信息。
可以使用 pip
下载开发工具包。
$ pip install aws-xray-sdk
适用于 Python 的 X-Ray 开发工具包是一个开源项目。您可以跟踪该项目并在 GitHub 上提交问题和拉取请求:github.com/aws/aws-xray-sdk-python
如果您使用的是 Django 或 Flask,请首先将开发工具包中间件添加到应用程序以跟踪传入请求。此中间件为每个被跟踪请求创建一个分段并在发送响应时完成该分段。当分段打开时,您可以使用开发工具包客户端的方法将信息添加到分段,并创建子分段以跟踪下游调用。开发工具包还会自动记录在分段打开时应用程序引发的异常。对于其他应用程序,您可以手动创建分段。
对于由分析应用程序或服务调用的 Lambda 函数,Lambda 会读取跟踪标头并自动跟踪采样的请求。对于其他功能,你可以配置 Lambda以对传入请求进行采样和跟踪。无论哪种情况,Lambda 都会创建区段并将其提供给 X-Ray SDK。
在 Lambda 上,X-Ray 开发工具包是可选的。如果您不在函数中使用它,则您的服务映射仍将包含 Lambda 服务的节点,每个 Lambda 函数都包含一个节点。通过添加开发工具包,您可以对函数代码进行调整,将子区段添加到 Lambda 记录的函数区段。参阅 Amazon Lambda 和 Amazon X-Ray 了解更多信息。
请参阅工作线程例如在 Lambda 中分析过的示例 Python 函数。
接下来,使用适用于 Python 的 X-Ray 开发工具包分析下游调用,修补应用程序的库. 开发工具包支持以下库。
支持的库
-
pynamodb
— 分析 PynamoDB 版本的 Amazon DynamoDB 客户端。 -
aiobotocore
、aioboto3
— 分析asyncio-适用于 Python 客户端的集成版本。 -
httplib
、http.client
— 分析低级别 HTTP 客户端和使用这些客户端的更高级别的库。 -
sqlite3
— 分析 SQLite 客户端。 -
mysql-connector-python
— 分析 MySQL 客户端。 -
pg8000
— 分析纯 Python PostgreSQL 接口。 -
psycopg2
— 分析 PostgreSQL 数据库适配器。 -
pymongo
— 分析 MongoDB 客户端。 -
pymysql
— 分析基于 PyMySQL 的客户端以用于 MySQL 和 MariaDB。
每当您的应用程序调用 Amazon、SQL 数据库和其他 HTTP 服务时,开发工具包都会记录有关子分段中的调用的信息。Amazon 服务以及您在该服务中访问的资源将在服务地图上显示为下游节点,以帮助您在各个连接上识别错误和限制问题。
在开始使用开发工具包后,请通过以下方法自定义配置录制器和中间件. 您可以添加插件来记录有关应用程序上运行的计算资源的数据,通过定义采样规则来自定义采样行为,设置日志级别以在应用程序日志中查看来自开发工具包的更多或更少的信息。
记录有关请求以及应用程序在注释和元数据中所做的工作的其他信息。注释是简单的键值对,已为这些键值对编制索引以用于筛选条件表达式,以便您能够搜索包含特定数据的跟踪。元数据条目的限制性较低,并且可以记录整个对象和数组 - 可序列化为 JSON 的任何项目。
注释和元数据是您使用 X-Ray 开发工具包添加到区段的任意文本。系统会对注释编制索引,以便与筛选表达式一起使用。元数据未编制索引,但可以使用 X-Ray 控制台或 API 在原始区段中查看。任何你授予对 X-Ray 的读取权限的人都可以查看这些数据。
当代码中具有大量分析的客户端时,一个请求分段可包含大量子分段,分析的客户端发起的每个调用均对应一个子分段。您可以通过将客户端调用包含在自定义子分段中来整理子分段并为其分组。您可以为整个函数或任何代码部分创建自定义子分段。然后,您可以在子分段上记录元数据和注释,而不必在父分段上写入所有内容。
有关开发工具包的类和方法的参考文档,请参阅Amazon X-Ray适用于 Python 的 API 参考.
要求
适用于 Python 的 X-Ray 软件开发工具包支持以下语言和库版本。
-
Python— 2.7、3.4 和更新版本
-
詹戈— 1.10 和更新版本
-
Flask— 0.10 和更新版本
-
aiohttp— 2.3.0 和更新版本
-
Amazon SDK for Python (Boto)— 1.4.0 和更新版本
-
botocore— 1.5.0 和更新版本
enum— 0.4.7 和更新版本,适用于 Python 3.4.0 和更新版本
jsonpickle— 1.0.0 和更新版本
设置工具— 40.6.3 和更新版本
包装— 1.11.0 和更新版本
依赖项管理
适用于 Python 的 X-Ray 软件开发工具包从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
自动。