[关闭]
@levinzhang 2017-06-11T21:56:43.000000Z 字数 1824 阅读 891

对AWS Lambda的支持添加到了AWS X-Ray分布式跟踪服务中

by

摘要:

在AWS X-Ray分布式跟踪服务4月份发布的通用版本(General Availability,GA)中,Amazon已经为X-Ray添加了对AWS Lambda的支持,它能够记录函数调用和相关的元数据,通过AWS Console进行图像化展示并进行分析以便于调试或故障的恢复。


AWS X-Ray分布式跟踪服务4月份发布的通用版本(General Availability,GA)中,Amazon已经为X-Ray添加了对AWS Lambda的支持,它能够记录函数调用和相关的元数据,通过AWS Console进行图像化展示并进行分析以便于调试或故障的恢复。

通过AWS Console,我们能够将X-Ray用于已有的Lambda函数,只需导航至函数的配置Tab标签,滑动至“Advanced settings”,并选中“Enable active tracing”选择框,或者也可以通过AWS Command Line Interface (CLI)来更新函数的追踪配置:

$ aws lambda update-function-configuration --tracing-config '{"Mode": "Active"}' --function-name 'my-function-name-or-ARN'

AWS博客中包含了一篇Randall Hunt所撰写的文章,他是AWS的开发人员布道师,这篇文章指出,当启用跟踪模式时,Lambda将会试图跟踪函数,除非它被上游的服务显式地禁用掉。当Lambda函数触发的时候,将会生成trace并开始进行数据捕获,通过AWS Console能够以可视化的方式展现应用资源和它们之间的连接(edges):

AWS X-Ray Lambda service graph

AWS Console中,X-Ray跟踪的可视化展现(图片来源于Randall Hunt

每个服务或函数收集到的数据被称之为segment(类似于OpenTracing API规范中的Span),以JSON数据的方式来进行存储。这种segment的样本可以通过X-Ray daemon发送至AWS X-Ray服务,而X-Ray daemon必须要和Lambda函数在一起运行。Hunt指出,X-Ray daemon确实会消耗Lambda函数关联的一点资源,但是如果函数接近特定的内存极限的话,Lambda将会尝试杀掉X-Ray daemon,避免出现内存溢出的错误。

segment代表了一个工作单元,包含了请求和响应的时间,另外还有可选的子segment(sub-segment),它们会包含更小的工作单元。子segment可以启动和停止,并且添加了一些额外的元数据,这是通过针对X-Ray的特定语言SDK实现的。目前,针对Java 8运行时的X-Ray SDK针对Node.js 4.3的X-Ray SDK以及一些更新的运行时已经得到了官方的支持,针对其他语言的非官方支持托管在GitHub上,比如Fleece项目所提供的对Python的支持。

针对应用的请求会通过一个trace来进行跟踪。trace会收集单个请求所生成的所有segment。这意味着我们可以很容易地跟踪在请求生命周期中,已支持的服务所发出的所有的事件,比如API网关调用、应用/服务函数的处理以及对X-Ray所支持的数据存储(比如AWS DynamoDB)的所有操作,从而能够理解哪里出现了错误以及延迟发生在什么地方。

关于AWS X-Ray所支持的AWS服务的更多细节可以参考“Integrating AWS X-Ray with Other AWS Services”文档。关于AWS X-Ray以及相关跟踪术语可以参考InfoQ之前的新闻,这篇新闻是在2016 AWS re:invent会议之后发布的。

X-Ray服务可以通过美国东部(北弗吉尼亚)、美国西部(加州北部)、美国东部(俄亥俄)、美国西部(俄勒冈州)、欧盟(爱尔兰)、欧盟(法兰克福)、南美洲(圣保罗)、亚太(东京)、亚太(首尔)、亚太(悉尼)以及亚太(孟买)的这些Region来进行使用。其他的信息可以通过AWS Lambda页面和Troubleshooting Lambda-Based Applications文档来进行获取。

查看英文原文:AWS Lambda Support Added to AWS X-Ray Distributed Tracing Service

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注