全链路监控

什么是全链路监控

在分布式微服务架构中,系统为了接收并处理一个前端用户请求,需要让多个微服务应用协同工作,其中的每一个微服务应用都可以用不同的编程语言构建,由不同的团队开发,并可以通过多个对等的应用实例实现水平扩展,甚至分布在横跨多个数据中心的数千台服务器上,单个用户请求会引发不同应用之间产生一串顺序性的调用关系,如果要对这些调用关系进行监控,了解每个应用如何调用,这就产生了全链路监控

为什么要进行全链路监控?

在微服务架构中,服务会被拆分成多个模块,这些模块可能由不同的开发团队开发、维护,也可能使用不同的编程语言来实现、也有可能分布在多台服务器上,由于服务的拆分,单个用户的请求会经过多个微服务,相互之间形成复杂的调用关系,传统的监控手段已经不能实现如此复杂的链路之间的监控了,因此,就需要一些可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题。

全链路监控能解决哪些问题?

1. 请求链路追踪,故障快速定位:可以通过调用链结合业务日志快速定位错误信息。

2. 可视化: 各个阶段耗时,进行性能分析。

3. 依赖优化:各个调用环节的可用性、梳理服务依赖关系以及优化。

4. 数据分析,优化链路:可以得到用户的行为路径,汇总分析应用在很多业务场景。

常见的全链路监控工具

zipkin

github:

https://github.com/openzipkin/zipkin

zipkin是一个分布式的追踪系统,它能够帮助你收集服务架构中解决问题需要的时间数据,功能包括收集和查找这些数据。如果日志文件中有跟踪ID,可以直接跳转到它。否则,可以根据服务、操作名称、标记和持续时间等属性进行查询。例如在服务中花费的时间百分比,以及哪些环节操作失败。特点是轻量,使用部署简单。

zipkin还提供了一个UI界面,它能够显示通过每个应用程序的跟踪请求数。这有助于识别聚合行为,包括错误路径或对不推荐使用的服务的调用。

应用程序需要“检测”才能向Zipkin报告跟踪数据。这通常意味着需要配置一个用于追踪和检测的库。最流行的向Zipkin报告数据的方法是通过http或Kafka,尽管还有许多其他选项,如apache,activemq、gRPC和RabbitMQ。提供给UI存储数据的方法很多,如存储在内存中,或者使用受支持的后端(如apachecassandra或Elasticsearch)持久存储。

pinpoint

github:

https://github.com/naver/pinpoint

 

pinpoint是韩国人开源的基于字节码注入的调用链分析,以及应用监控分析工具。Pinpoint提供了一个解决方案,可以帮助分析系统的整体结构,以及通过跟踪分布式应用程序中的事务来分析其中的组件是如何相互连接的。

 

功能如下:

1)一目了然地了解应用程序拓扑

2)实时监视应用程序

3)获得每个事务的代码级可见性

4)安装APM代理程序,无需更改一行代码

5)对性能的影响最小(资源使用量增加约3%)

Pinpoint的可视化UI界面:

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值