开发者学堂课程【服务网格技术最佳实践:使用服务网格可观测性为应用服务保驾护航(二)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/292/detail/3436
使用服务网格可观测性为应用服务保驾护航(二)
四.实践 ASM 链路追踪
如图
部署一个应用,下载一个包,已经下载了这个包,然后选择 istio 这个版本,然后进行演示,先切换到用户的数据面集群,有一个脚本,对脚本进行替换,先部署应用,切换到数据面里面,然后再切换到网格集群,看一下用户集群是否部署完毕。
我们还要去网格控制面,部署其他的东西,切换到网格集群,来部署一个 getway ,然后再来部署一个 samples ,再看一下用户集群是否部署完毕,
然后看一下当前的网关入口网关,所有的流量都会通过入口网关来进入网格里面。入口网关的地址,进行访问,需要加一个配置,可以看见部署上去的应用已经可以正常运行,我们需要确认一下,进行实践之前,需要把链路追踪的选项按钮打开,打成 ✓ 默认的阿里云,如果需要自行搭建 ,可以点击链接去查看,查看如何自建追踪系统,这个地方设置的是百分之百,所有的流量都会被采样,打开网格追踪能力,演示应用也部署完毕,产生一些流量,这样就可以在演示系统里面查看网格追踪信息了。
通过服务网格的控制台,点击左边的链路追踪,就可以进入到阿里云的页面,然后我们选择追踪列表,我们就可以看到所有应用,然后根据服务网格的 ID ,筛选一下网格里面的应用,我们就可以看到调用信息出现并且上升,我们看见应用链表之后,可以看见完整的数据追踪信息,最后我们会看见树形的链路入口值。点击左侧的借口调用,再点击链路,会看见刚才访问的调用已经被记录下来了。
如图
刚才我们访问的第几次调用都被调用下来了,这个ID 整个被调用的关系我们看到有时间,应用地址等,我们可以看见整个调用的关系,都会有整个直观的感受,我们把应用放进去就可以实现这个能力 ,几乎运用做的比较少。
五.应用需要进行的改造
需要应用的小改造,传播 B3header ,是链路追踪的传达信息需要把进入的请求取出来,需要把收到的调用取出来,需要不断传送。
为什么需要进行这个改造? ASM 无法代劳吗?
因为服务网格的代理是无法从用户代理当中用其他的请求,用哪一个请求来触发,有可能一个会调用五次甚至十次,或者一次不调用,所以说如果不传播.网格代理可能就会认为这是一个独立的请求。
没有关联起来,这样我们得到的结果就是不准确的,但是我们没有办法拿到完整的信息,所以我们要形成完整的信息,我们的应用就要在应用当中以传播 header 的方式告诉电路追踪系统,也告诉网格代理,这两者有上下文的关系,这样电路追踪系统和网格系统就会最终关联起来,形成完整的电路。
六.实践 ASM 链路追踪-常见问题
链路追踪对性能是否有影响?
虽然上报是在网格中进行的,但是当请求的数量比较大的时候,BCPO 就是对节点有影响的。
在刚才演示中,链路追踪的比例是可以调整的,我们不管是怎么去实现,不管是网格代理还是应用当中集成,都是无法避免的,我们就是将比例调低,也不会对所有流量进行追踪,我们就可以对实际进行追踪,保留电路资源。
我可以自己搭建追踪系统吗?
这是可以的,只要我们指示自己的系统,就可以搭建自己的数据,当我们需要时,确保导出的是目标协议的系统,经过目标实现我们有了大致了解。