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

本文涉及的产品
对象存储 OSS,20GB 3个月
文件存储 NAS,50GB 3个月
对象存储 OSS,恶意文件检测 1000次 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这样的闭环出来。

相关实践学习
1分钟 Serverless搭建高性能网盘
本场景将使用阿里云函数计算、文件存储NAS以及开源项目Kodbox,带大家1分钟Serverless搭建个人高性能网盘,网盘可长期使用。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
打赏
0
0
0
0
4532
分享
相关文章
云计算|OpenStack|社区版OpenStack安装部署文档(八--- 存储服务cinder的安装部署---Rocky版)
云计算|OpenStack|社区版OpenStack安装部署文档(八--- 存储服务cinder的安装部署---Rocky版)
470 0
阿里云百炼又获大奖!阿里云百炼入选 2024 最受开发者欢迎的 AI 应用开发平台榜15强
2024年最受开发者欢迎的AI应用开发平台榜单发布,阿里云百炼入选15强。持续推动AI开发者生态建设,提供开放平台、培训支持、行业解决方案,注重数据安全与合规,致力于生态合作与共赢,加速企业数智化转型。
910 17
PAI Model Gallery 支持云上一键部署 DeepSeek-V3、DeepSeek-R1 系列模型
DeepSeek 系列模型以其卓越性能在全球范围内备受瞩目,多次评测中表现优异,性能接近甚至超越国际顶尖闭源模型(如OpenAI的GPT-4、Claude-3.5-Sonnet等)。企业用户和开发者可使用 PAI 平台一键部署 DeepSeek 系列模型,实现 DeepSeek 系列模型与现有业务的高效融合。
RWKV-7 2.9B 开源发布!纯 RNN 无 KV cache,支持世界所有语言
2025 年 2 月 11 日,RWKV 基金会正式发布 RWKV-7-World-2.9B-V3 模型(以下简称 RWKV-7-2.9B)。
192 17
淘宝运营进阶秘籍:从业余到专业
淘宝运营涉及市场分析、产品定位、店铺装修、营销推广、客户服务、数据分析等多环节。要脱颖而出,需掌握进阶秘籍。本文从精准定位、店铺装修、定价策略、流量获取、客户服务、数据分析及跨平台合作七大方面深入探讨,助商家实现从平凡到卓越的蜕变。通过目标受众分析、优化店铺形象、合理定价、多种促销手段、提升客户体验、利用数据反馈调整策略以及拓展销售渠道,商家可逐步提升运营能力,在竞争激烈的电商环境中取得成功。
1098 4
Go如何自动解压缩包?如何读取docx/doc文件内容?
在开发过程中,我们常常需要处理压缩包和文档文件。本文将介绍如何使用Go语言自动解压缩包和读取docx/doc文件。
167 0
k8s 部署 elasticsearch 单节点
k8s 部署 elasticsearch 单节点
中国信通院×阿里云 :「安全启航 降本增效」云治理专场沙龙成功召开!
中国信通院与阿里云联合举办的云治理专场沙龙在北京成功举行,活动聚焦云治理,尤其在安全与成本管理方面,中国信通院专家解析行业标准,指导企业上云策略。同时,宣布启动企业云治理能力成熟度首批评估,以推动标准实施。
Next.js与SSR:构建高性能服务器渲染应用
创建Next.js项目使用`create-next-app`,每个页面自动支持SSR。动态路由如`pages/posts/[id]`,在`getStaticPaths`和`getServerSideProps`中获取数据。利用静态优化和预渲染提升性能,动态导入减少初始加载时间。使用`next/image`优化图片,自定义服务器增加控制,集成第三方库如Redux。优化SEO,利用i18n支持多语言,使用Serverless模式和Web Workers。项目支持TypeScript,创建`_error.js`处理错误,部署到Vercel并使用工具进行性能监控和优化。
344 4

云存储

+关注
AI助理

你好,我是AI助理

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