用于python的aws x-ray sdk(sdk)使python开发人员能够从其应用程序中记录信息并将其发送到aws x-ray服务。
aws-xray-sdk的Python项目详细描述
用于python的aws x-ray sdk
安装
用于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-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函数内部生成代码>,但它是由lambda容器自动生成的。因此,在这个模型中使用middleware时,确保您的方法只生成
子段
以下指南显示了一个使用API网关和lambda设置无服务器应用程序的示例:
使用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。