对k8s中部署的springcloud项目进行链路监控

一、全链路监控系统概述

1、什么是全链路监控系统?

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

image-20230118194817446

2、全链路监控系统可以解决哪些问题

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

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

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

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

二、常见的全链路监控工具有哪些?

1、Zipkin

github:

1
https://github.com/openzipkin/zipkin

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

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

image-20230118195135578

image-20230118195140308

2、Skywalking

github:

1
https://github.com/apache/incubator-skywalking

skywalking是本土开源的调用链追踪系统,包括监控、跟踪、诊断功能,目前已加入Apache孵化器,专门为微服务、云本地和基于容器(Docker、Kubernetes、Mesos)架构设计。

主要功能如下:

1)服务、服务实例、端点指标数据分析

2)根本原因分析,在运行时评测代码

3)服务拓扑图分析

4)服务、服务实例和端点依赖性分析

5)检测到慢速服务和终结点

6)性能优化

7)分布式跟踪和上下文传播

8)数据库访问度量。检测慢速数据库访问语句(包括SQL语句)。

9)报警

10)浏览器性能监视

image-20230118195327019

3、Pinpoint

github:

1
https://github.com/naver/pinpoint

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

功能如下:

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

2)实时监视应用程序

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

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

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

image-20230118195555401

image-20230118195610816

三、初始化实验环境

主机名 IP 配置 网络
pinpoint 192.168.106.40 4vCPU/6G MEM/60G DISK NAT