用于python的aws x-ray sdk(sdk)使python开发人员能够从其应用程序中记录信息并将其发送到aws x-ray服务。

aws-xray-sdk的Python项目详细描述


构建状态

用于python的aws x-ray sdk

AWS X光控制台屏幕截图

安装

用于python的aws x-ray sdk与python 2.7、3.4、3.5和3.6兼容。

使用以下命令安装sdk(将安装sdk的非测试依赖项)。

pip install aws-xray-sdk

要安装sdk的测试依赖项,请使用以下命令。

pip install tox

获取帮助

使用以下社区资源获取有关sdk的帮助。我们使用github 跟踪错误和功能请求的问题。

  • AWS X光论坛
  • 使用aws支持打开支持票证
  • 如果您认为您可能发现了一个bug,请打开一个问题

打开问题

如果您遇到aws x-ray sdk for python的错误,我们希望了解 它。在打开新的问题之前,请搜索现有问题 看看其他人是否也遇到了这个问题。包括AWS X射线的版本 适用于python、python语言和botocore/boto3的sdk。此外, 在适当的情况下,包括复印件。

github问题是针对bug报告和功能请求的。求助和 关于使用awssdkforpython的问题,请使用下面列出的资源 在获取帮助部分。保持开放性问题清单的精简有助于我们及时作出回应。

文档

《开发人员指南》提供了深入的内容。 关于使用AWS X射线服务的指南。 api参考 提供使用sdk和模块级文档的指导。

快速启动

配置

fromaws_xray_sdk.coreimportxray_recorderxray_recorder.configure(sampling=False,context_missing='LOG_ERROR',plugins=('EC2Plugin','ECSPlugin','ElasticBeanstalkPlugin'),daemon_address='127.0.0.1:3000',dynamic_naming='*mysite.com*')

启动自定义段/子段

使用上下文管理器进行隐式异常记录:

fromaws_xray_sdk.coreimportxray_recorderwithxray_recorder.in_segment('segment_name')assegment:# Add metadata or annotation here if necessarysegment.put_metadata('key',dict,'namespace')withxray_recorder.in_subsegment('subsegment_name')assubsegment:subsegment.put_annotation('key','value')# Do something herewithxray_recorder.in_subsegment('subsegment2')assubsegment:subsegment.put_annotation('key2','value2')# Do something else 

上下文管理器的异步版本:

fromaws_xray_sdk.coreimportxray_recorderasyncwithxray_recorder.in_segment_async('segment_name')assegment:# Add metadata or annotation here if necessarysegment.put_metadata('key',dict,'namespace')asyncwithxray_recorder.in_subsegment_async('subsegment_name')assubsegment:subsegment.put_annotation('key','value')# Do something hereasyncwithxray_recorder.in_subsegment_async('subsegment2')assubsegment:subsegment.put_annotation('key2','value2')# Do something else 

默认开始/结束功能:

fromaws_xray_sdk.coreimportxray_recorder# Start a segmentsegment=xray_recorder.begin_segment('segment_name')# Start a subsegmentsubsegment=xray_recorder.begin_subsegment('subsegment_name')# Add metadata or annotation here if necessarysegment.put_metadata('key',dict,'namespace')subsegment.put_annotation('key','value')xray_recorder.end_subsegment()# Close the segmentxray_recorder.end_segment()

捕获

作为装饰师:

fromaws_xray_sdk.coreimportxray_recorder@xray_recorder.capture('subsegment_name')defmyfunc():# Do something heremyfunc()

或者作为上下文管理器:

fromaws_xray_sdk.coreimportxray_recorderwithxray_recorder.capture('subsegment_name')assubsegment:# Do something heresubsegment.put_annotation('mykey',val)# Do something more

作为装饰器的异步捕获:

fromaws_xray_sdk.coreimportxray_recorder@xray_recorder.capture_async('subsegment_name')asyncdefmyfunc():# Do something hereasyncdefmain():awaitmyfunc()

或者作为上下文管理器:

pip install aws-xray-sdk
0

使用记录器添加注释/元数据

pip install aws-xray-sdk
1

禁用X射线

通常情况下,能够针对特定的用例禁用x射线可能是有用的,无论是随时停止x射线发送跟踪,还是测试最初依赖于x射线检测包在代码调用之前开始段的代码功能。例如,如果您的应用程序依赖于x光中间件来检测传入的web请求,并且您有一个基于该中间件生成的段开始子段的方法,那么能够为您的单元测试禁用x光将非常有用,以便segmentnotfound当您需要测试您的方法时,不会抛出异常。

有两种方法可以禁用X射线,一种是通过环境变量,另一种是通过SDKConfig模块。

通过t禁用环境变量:

在运行应用程序之前,请确保将环境变量aws_xray_sdk_enabled设置为false

通过SDKConfig模块禁用:

pip install aws-xray-sdk
2

重要提示:

  • 禁用/启用时,环境变量始终优先于sdkconfig模块。如果在代码调用global_sdk_config.set_sdk_enabled(true)时将环境变量设置为false,则X射线仍将被禁用。

  • 如果您需要在运行时重新启用X光,并通过SDKConfig模块确认禁用/启用,您可以在应用程序中运行以下命令:

pip install aws-xray-sdk
3

跟踪aws lambda函数

pip install aws-xray-sdk
4

跟踪线程池执行器

pip install aws-xray-sdk
5

跟踪SQL查询

默认情况下,如果没有为.configure()提供其他值,则启用SQL跟踪流。 对于所有支持的数据库引擎。当前为:

  • 任何连接到django orm的发动机。
  • 任何连接到sqlalchemy的引擎。

可以通过发送适当的stream\u sql值来切换行为,例如:

pip install aws-xray-sdk
6

修补第三方库

pip install aws-xray-sdk
7

自动模块修补

通过提供模块引用,可以递归地修补本地代码库中的完整模块。 到修补程序功能。

pip install aws-xray-sdk
8

xRay_recorder.capture()decorator将应用于 给定的模块及其内部的所有模块递归地。某些文件/模块可以通过 为修补程序提供与其匹配的正则表达式。

pip install aws-xray-sdk
9

django

添加django中间件

在django settings.py中,使用以下命令。

pip install tox
0

您可以在django应用程序的"x ray_recorder"命名空间下配置x射线记录器。对于最小配置,除非在环境变量中指定,否则需要"aws_xray_tracing_name"。

pip install tox
1

有关使用x-ray配置django的更多信息,请阅读api参考中关于它的更多信息

SQL跟踪

如果django的orm已修补-请使用设置文件中的auto_instrument=true 或者显式调用patch_db()-然后可以启用SQL查询跟踪流或 已禁用更新设置文件中的stream\u sql变量。默认情况下启用。

自动修补

自动模块修补也可以通过django设置进行配置。

pip install tox
2

如果还指定了auto_patch_parent_segment_name,则将创建一个segment parent 使用提供的名称,包装自动修补以捕获任何悬挂 在导入修补程序上创建的子段。

添加烧瓶中间件

pip install tox
3

无服务器支持Flask&django使用X光

serverless是一个应用程序模型,它使您能够将更多的操作职责转移到aws。因此,您只能专注于您的应用程序和服务,而不是基础设施管理任务,如服务器配置、修补、操作系统维护和容量配置。使用serverless,您可以将您的web应用程序部署到aws lambda中,并让客户通过lambda调用端点与之交互,例如amazon api网关。

x-ray支持开箱即用的无服务器模式,不需要额外配置。当到达端点时,lambda中的middleware生成子段而不是段。这是因为,但它是由lambda容器自动生成的。因此,在这个模型中使用middleware时,确保您的方法只生成子段

以下指南显示了一个使用API网关和lambda设置无服务器应用程序的示例:

在无服务器环境中检测Web框架

使用aiohttp

添加aiohttp中间件。支持aiohttp>;=2.3。

pip install tox
4

追踪aiohttp客户。支持aiohttp>;=3。

pip install tox
5

使用sqlalchemy orm

sql alchemy集成要求您重写sql alchemy的会话和查询类

sqlalchemy integration使用子段,因此在进行查询之前需要先启动一个段。

pip install tox
6

添加烧瓶sqlalchemy

pip install tox
7

许可证

用于python的aws x-ray sdk是在apache 2.0许可下获得许可的。有关详细信息,请参阅license and notice.txt。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何修复尝试将用户签名到服务器主机时出现的“字符串无法转换为json对象”错误?   控制台Java:不使用新行更新命令行中的文本   java servlet接收xml数据时,出现错误   使用REST API在Bitbucket中复制或复制存储库   java如何在JavaFX中对齐一行?   java如何在活动中显示通过服务获得的数据?   返回BigDecimal作为字符串:返回int   java组织。openqa。硒。InvalidSelectorException:尝试查找元素时选择器无效   java仅在阻塞状态下通知和通知所有影响线程   java JBOSS无法启动部署   java方法的返回值能保证类型安全吗?   JavaeShadoop序列化组织。阿帕奇。hadoop。木卫一。短写失败   java如果我在同一个类上同步了两个方法,它们能同时运行吗?   不使用java数据库的spring分页实现   java如何将字符串切碎成这样的数组?