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