

通过 API Gateway 使用 AWS X-Ray 服务地图和跟踪视图
source link: https://www.ishells.cn/archives/apigateway-xray
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.


一、API Gateway
1、API Gateway 是什么?
官方解释:Amazon API Gateway 是一项 AWS 服务,用于创建、发布、维护、监控和保护任意规模的 REST、HTTP 和 WebSocket API。API 开发人员可以创建能够访问 AWS、其他 Web 服务以及存储在 AWS 云中的数据的 API。作为 API Gateway API 开发人员,您可以创建 API 以在您自己的客户端应用程序中使用。或者,您可以将您的 API 提供给第三方应用程序开发人员
简单解释:API Gateway 可以作为一系列API的集合,无服务架构的向外提供API
2、API Gateway简单测试:
① 控制台创建一个实例API( REST API / HTTP API / WebSocket API 各有其优缺点,其区别不是本篇重点,不过多讨论 )
② 部署该API资源
③ 访问此URL以访问此GET方法:
二、X-ray
1、X-ray是什么?
官方解释:AWS X-Ray 是一项服务,收集用户应用程序所服务的请求的相关数据,并提供用于查看、筛选和获取数据洞察力的工具,以确定问题和发现优化的机会。对于任何被跟踪的对应用程序的请求,用户不仅可以查看请求和响应的详细信息,还可以查看应用程序对下游 AWS 资源、微服务、数据库和 HTTP Web API 进行的调用的详细信息。
简单解释:X-Ray可以追踪特定资源、服务的相关数据,例延迟和状态码等信息,以便更容易细化故障的原因和出处。X-Ray Trace 显示的是在aws 中的延迟和状态码等信息
2、API Gateway开启X-Ray追踪:
① 在已部署的阶段中,找到日志/跟踪,开启X-Ray跟踪:
② 测试访问该阶段的不同GET方法,查看X-Ray控制台:
③ 点击某一个具体的Trace ID可以查看具体的追踪详情:
三、详细测试
因为生产环境中关于API Gateway 都是较为复杂的,所以我们来进行一下生产环境的模仿测试
1、第一种架构
客户端-》访问API Gateway URL-》 代理到 自定义域名 -》域名CNAME转到 ALB -》ALB 转发到具体的EC2服务器
① 添加域名Cname解析到ALB
② 将API Gateway导向该自定义域名,部署该资源并开启X-Ray追踪
③ ALB 和 EC2 服务的准备这里就不贴出来
④ 访问测试,web访问API Gateway跳转到自定义域名,找到后端的EC2服务
⑤ X-Ray界面查看,发现有两个Trace ID,一个是API Gateway的追踪,一个是自定义域名的追踪。
在我们的这种架构中,显示了两段的Trace,分别是API Gateway的和自定义域名的。每段的"延迟" 是通过请求的开始和结束时间计算的. 比如 apigateway这段, 当客户端请求包到 apigateway , 开始计时, 一直到 apigateway 把结果发回给客户端结束。
那么API Gateway这段显示的延迟其实是本次请求总的时间,即客户端向API Gateway发起请求到结束本次请求。
域名这块, 可以理解为 api gateway 在处理请求过程中, 将
请求转发给域名
到从域名处获取到结果
的时间那如果想要得到具体的
EC2->ALB
这一段之间的延迟应该怎么办呢?答:因为ALB本身是不能开启X-Ray追踪的,所以可以在EC2上开启X-Ray追踪,即装一个X-Ray守护进程,但是EC2上的应用必须主动向X-Ray守护进程发送数据,X-Ray才能获取到具体的数据。从xray 的角度, 它是接收特定的请求数据才能进行记录的, 所以一般的应用都没法直接监控, 如果您后端用的是自己的程序框架 ,比如 go / python / java 等, 都可以通过 sdk 来向 xray daemon 发送记录数据。这需要具体的应用(Python、Java等)通过调用SDK去实现,与Web中间件没有关系。
在 Amazon EC2 上运行 X-Ray 守护程序 - AWS X-Ray
xray 也是可以收集 eks 中运行的 pod 的数据的, 但是也是需要 pod 中的应用主动向 xray daemon 发数据
2、第二种架构
客户端访问自定义域名-》自定义域名-》CNAME到API Gateway-》VpcLink连接API Gateway和私有ALB-》请求转到ALB上-》后端服务器
这种架构下,开启了X-Ray追踪依然看不到EC2与ALB之间具体的延迟与状态码等信息,依然需要如上说的,需要在EC2上安装X-Ray守护进程,并主动向它发送数据
通过X-ray检测到的延迟和状态码这些数据,我能否根据某一段的延迟、状态码去做一个报警邮件提醒?
xray 本身没法直接配 alarm. 这个需要通过 lambda 之类的方式实现, 可以通过 xray 的api 来获取到 trace 的信息, 然后通过分析这些信息来触发 cloudwatch
Recommend
-
49
在微服务架构中,调用链是漫长而复杂的,要了解其中的每个环节及其性能,你需要全链路跟踪。 它的原理很简单,你可以在每个请求开始时生成一个唯一的ID,并将其传递到整个调用链。 该ID称为
-
31
-
15
TiFlink: 使用TiKV和Flink实现强一致的物化视图张茄子算法、 分布式技术和函数式编程爱好者
-
7
通过规则引擎跟踪Java运行状态的检测工具:Byteman Byteman 是一个工具,可以轻松跟踪、监视和测试 Java 应用程序和 JDK 运行时代码的行为。Byteman的规则引擎使跟踪程序执行、更改变量和返回您喜欢的语句变得非常容易。 它将 Java...
-
1
通过断点跟踪探索Vue响应原理 September 1, 2018 Vue
-
8
使用ebpf跟踪rpcx微服务 ebpf是一种创新的革命性技术,它能在内核中运行沙箱程序,...
-
9
SpringMVC中的视图是View接口,视图的作用渲染数据,将模型Model中的数据展示给用户 SpringMVC视图的种类很多,默认有转发视图和重定向视图 当工程引入jstl的依赖,转发视图会自动转换为JstlView...
-
11
Android入门第31天-Android里的ViewFlipper翻转视图的使用 ...
-
7
在 SwiftUI 中使用 UIKit 视图已迈入第三个年头的 SwiftUI 相较诞生初始已经提供了更多的原生功能,但仍有大量的事情是无法直接通过原生 SwiftUI 代码来完成的。在相当长的时间中开发者仍需在 SwiftUI 中依赖 UIKit(AppKit)代码。好在,SwiftU...
-
8
在进入数字化时代后,客户的采购行为发生了变化,这意味着业务侧的服务方式也需要与时俱进。那么在这样的趋势下,服务管理模式会发生什么样的变化?服务创新和转型,可以遵循什么样的发展策略?一起来看看作者的解读。
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK