形形色色Trace系统(1):AWS X-Ray

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
日志服务 SLS,月写入数据量 50GB 1个月
简介: AWS 在2016 Re:Invent上推出了X-Ray,对如今微服务编程,以及ServerLess Architecture非常有前瞻性。另外近期一个比较大新闻是:Google Stack Driver开始支持Zipkin(Twitter 开源的Tracing系统)。

AWS 在2016 Re:Invent上推出了X-Ray,对如今微服务编程,以及ServerLess Architecture非常有前瞻性。另外近期一个比较大新闻是:Google Stack Driver开始支持Zipkin(Twitter 开源的Tracing系统)。Google是一家挺有意思的公司,无论是BigTable、还是Dapper,都是Hbase、Zipkin等开源软件的启蒙老师,但往往过了3-4年后,这些开源技术蒸蒸日上,老师反而要回头来学习并适配这些开源技术,究竟是Google产品化没有做好,还是开源生命力太强?这个问题很有意思,可以以后再聊。

这里主要花一些篇幅简单介绍下几个典型的Tracing系统,主要有:

  • Dapper(Google) : 各 tracer基础
  • StackDriver Trace (Google)
  • Zipkin(twitter)
  • Appdash(golang)
  • 鹰眼(taobao)
  • X-ray(aws)

这篇主要介绍下X-Ray,参考如下材料:

  1. Re:Invent 2016 Slides & Video:https://www.youtube.com/watch?v=s8tB3YhZd9U
  2. 主页:https://aws.amazon.com/cn/xray/

软件发展趋势(X-Ray诞生原因)

在开发与生产过程中,我们经常会遇到Debug问题,在单机时代一般如下:

  1. 开发环境(单机或线上)
  2. 查询日志重新啊问题
  3. 设置断点调试
  4. 增加更多日志或断点
  5. 重复过程并找到问题

这个过程在单机环境屡试不爽,但在如今软件架构(Serverless)体系下却成为了瓶颈,整个过程非常耗时,并且会花大量时间跨服务层定位问题,造成这个困难的主要原因其实和Serverless架构优势正相关:

单机版软件 Serverless 软件(Docker,Microservice,Lamdba等)
优势 开发简单,开发调试快,部署容易,可以通过硬件来Scale 迭代快,非常容易在规模扩展,可靠性高

从和单机版对比看,在Serverless环境下调试主要问题有:

  1. 需要跨多个服务(上下游)进行配合
  2. 需要统一上下游日志格式,既理解日志语义
  3. 实时收集、聚合上下游系统的日志信息

X-Ray主要就是用来解决这个问题的。

screenshot

X-Ray能覆盖什么?

  1. AWS SDK call AWS Service
  2. Non-AWS Services over HTTP and HTTPS
  3. Databases (MySQL, PG, and Dynamo DB)
  4. Queue (Amazon SQS)

X-Ray数据模型

  1. Trace:请求唯一RequestID
  2. Segments:Trace下不同方法(类似Span概念)
  3. Sub-Segements:各子方法
  4. Annotation:可以用来进行Trace筛选的,过滤(聚合)字段
  5. MetaData:和Annotation相同,唯一一点是只是静态文本,无法进行过滤
  6. Error:错误信息
  7. Sampling:采样率

Segments:分为同步和异步两种,同步会输出start-end 两组时间,而异步则只会输出start-time。

screenshot

Sampling配置:支持根据http request各种参数对进行配置:例如对/api/move 下URL访问设置5%采样率,其他为10%,对应用个性化配置非常方便

screenshot

X-Ray 提供如下API

  1. PutTraceSegments:写入Trace信息
  2. BatchGetTracers:传入一批TraceID,批量获得对应信息
  3. GetServiceGraph:对一个Trace进行查询
  4. GetTraceSummaries: 通过一些条件进行Trace信息聚合,例如某个时间段延时大于XX的Trace信息(或统计信息,例如有多少个,平均延时多少)

支持条件非常多:例如http code,user agent,duration(latency)等。一个例子是:

select error_code, avg(duration), count/count(*) where time within [begin, end]
AI 代码解读

screenshot

收费项

共有2个维度收费项,产生多少Trace Record,在查询过程中扫描了多少Trace Record。

免费额度(每个月)

  • 写入: 0.1 million record
  • 查询(扫描):1 million scaned

收费(超过免费额度部分):

  • 写入:1 million $5
  • 查询(扫描):1 million scan or record $0.5

一些感想

和Zipkin、Google StackDriver比,X-Ray目前提供功能、以及Trace中蕴含的语义不是最全的。但亮点在于和AWS 各存储、Queue等集成、与API Gateway、Lamdba等服务端无缝打通。在AWS这两年主推的Serverless Architecture背景下,这是必不可少的重要一环。

从未来趋势看:X-Ray应该只是AWS在分布式、无服务器编程的一小步,CloudWatch4 Logs、API Gateway、Trouble Shooting等应该会逐渐组成像 Azure App/Log Analytics、Google Stack Driver这样的闭环出来。

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
打赏
0
0
0
0
4532
分享
相关文章
Ray Flow Insight:让分布式系统调试不再"黑盒"
作为Ray社区的积极贡献者,我们希望将这些实践中沉淀的技术能力回馈给社区,推动Ray生态在实际场景中的应用深度和广度。因此,2024年底我们做了激活AntRay开源社区的决策,AntRay会始终保持与官方Ray版本强同步(即AntRay会紧随Ray官方社区版本而发布),内部Feature亦会加速推向AntRay以开源研发模式及时反哺内部业务,同时会将社区关注的Feature提交至Ray官方社区,实现内外部引擎双向价值流动。后续我们会以系列文章形式同步蚂蚁推向开源的新特性,本文将重点介绍:Ray Flow Insight —— 让分布式系统调试不再"黑盒"。
【Azure Cloud Service】在Azure云服务中收集CPU监控指标和IIS进程的DUMP方法
在使用Cloud Service服务时,发现服务的CPU占用很高,在业务请求并不大的情况下,需要直到到底是什么进程占用了大量的CPU资源,已经如何获取IIS进程(w3wp.exe)的DUMP文件?
【Azure 环境】【Azure Developer】使用Python代码获取Azure 中的资源的Metrics定义及数据
【Azure 环境】【Azure Developer】使用Python代码获取Azure 中的资源的Metrics定义及数据
【Azure Application Insights】在Azure Function中启用Application Insights后,如何配置不输出某些日志到AI 的Trace中
【Azure Application Insights】在Azure Function中启用Application Insights后,如何配置不输出某些日志到AI 的Trace中
|
9月前
|
【Azure 应用服务】Azure Function (PowerShell) 执行时报错 "out of memory"
【Azure 应用服务】Azure Function (PowerShell) 执行时报错 "out of memory"
|
9月前
|
【应用程序见解 Application Insights】使用Azure Monitor Application Insights Agent获取Azure VM中监控数据及IIS请求指标等信息
【应用程序见解 Application Insights】使用Azure Monitor Application Insights Agent获取Azure VM中监控数据及IIS请求指标等信息
108 0
【Azure 云服务】Azure Cloud Service (Extended Support) 云服务开启诊断日志插件 WAD Extension (Windows Azure Diagnostic) 无法正常工作的原因
【Azure 云服务】Azure Cloud Service (Extended Support) 云服务开启诊断日志插件 WAD Extension (Windows Azure Diagnostic) 无法正常工作的原因
【Azure 应用程序见解】在Docker中运行的ASP.NET Core应用如何开启Application Insights的Profiler Trace呢?
【Azure 应用程序见解】在Docker中运行的ASP.NET Core应用如何开启Application Insights的Profiler Trace呢?
|
9月前
【Azure 应用服务】azure function powershell 调用 New-AzADServicePrincipal -DisplayName spCred
【Azure 应用服务】azure function powershell 调用 New-AzADServicePrincipal -DisplayName spCred
【机器学习 Azure Machine Learning】Azure Machine Learning 访问SQL Server 无法写入问题 (使用微软Python AML Core SDK)
【机器学习 Azure Machine Learning】Azure Machine Learning 访问SQL Server 无法写入问题 (使用微软Python AML Core SDK)

云存储

+关注
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等