1,标题什么是链路追踪
链路追踪是分布式系统下的一个概念,它的目的就是将一次分布式请求还原成调用链路,将一次分布式请求的调用情况集中展示,比如,各个服务节点上的耗时、请求具体到达哪台机器上、每个服务节点的请求状态等等
基础原理就是在调用开始阶段,生成一个全局唯一的traceId,通过服务,或者中间件直接的传递最后统计生成调用链路记录
OpenTracing
它是一个中立的(厂商无关、平台无关)分布式追踪的 API 规范,提供统一接口,可方便开发者在自己的服务中集成一种或多种分布式追踪的实现
名词释义:
traceId:
用于标识某一次具体的请求ID。当用户的请求进入系统后,会在RPC调用网络的第一层生成一个全局唯一的traceId,并且会随着每一层的RPC调用,不断往后传递,这样的话通过traceId就可以把一次用户请求在系统中调用的路径串联起来。
spanId:
用于标识一次RPC调用在分布式请求中的位置。当用户的请求进入系统后,处在RPC调用网络的第一层A时spanId初始值是0,进入下一层RPC调用B的时候spanId是0.1,继续进入下一层RPC调用C时spanId是0.1.1,而与B处在同一层的RPC调用E的spanId是0.2,这样的话通过spanId就可以定位某一次RPC请求在系统调用中所处的位置,以及它的上下游依赖分别是谁
OpenTracing Specification https://github.com/opentracing/specification/blob/master/specification.md
2, 什么是skywalking
Skywalking是一个可观测性分析平台(Observability Analysis Platform简称OAP)
和应用性能管理系统(Application Performance Management简称APM)。
提供分布式链路追踪、服务网格(Service Mesh)遥测分析、度量(Metric)聚合和可视化一体化解决方案。
下面是Skywalking的几大特点:
多语言自动探针,Java,.NET Core和Node.JS。
多种监控手段,语言探针和service mesh。
轻量高效。不需要额外搭建大数据平台。
模块化架构。UI、存储、集群管理多种机制可选。
支持告警。
优秀的可视化效果。
3, 为什么要使用skywallking
·随着分布式系统和微服务架构的出现,一次用户的请求会经过多个系统,不同服务之间的调用关系十分复杂,任何一个系统出错都可能影响整个请求的处理结果。以往的监控系统往往只能知道单个系统的健康状况、一次请求的成功失败,无法快速定位失败的根本原因。
4, 如何使用skywallking监控我们的服务
1).安装测试Skywallking
(1).下载服务端
下载地址: https://skywalking.apache.org/downloads/
选择下载压缩包
(2).启动
进入bin 点击startup.bat (linux下使用.sh)
浏览器访问地址http://localhost:8080/
2).Skywallking监控JVM
(1),下载
从skywallking的官网网站上下载(https://skywalking.apache.org/downloads/)
Java代理官方文档
(https://skywalking.apache.org/docs/skywalking-java/latest/readme/)
java agent包,解压得以下目录
(2),运行
在我们的服务的启动参数添加注入代理参数
java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar -DSW_AGENT_NAME=web-client -DSW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800 -jar yourApp.jar
-javaagent skywalking-agent 代理jar包路径
-DSW_AGENT_NAME 当前服务名称
-DSW_AGENT_COLLECTOR_BACKEND_SERVICES skywalking服务地址
traceId在日志文件中打印
https://skywalking.apache.org/docs/skywalking-java/latest/en/setup/service-agent/java-agent/application-toolkit-log4j-2.x/
项目引入依赖
org.apache.skywalking
apm-toolkit-log4j-2.x
org.apache.skywalking
apm-toolkit-trace
org.apache.skywalking
apm-toolkit-opentracing
日志就会输出我们的traceId
(3),调用演示
不配置DSW_AGENT_COLLECTOR_BACKEND_SERVICES 的情况下默认值就是127.0.0.1:11800
在webMangeServer发起登录接口调用,登录接口的调用链路已知
webMangeServer -> center-user-provider
登录skywalking管理端http://localhost:8080/
查看服务列表,可以看到我们注册了两个服务
进入web-manger服务 点击trace, 可以看到我们调用的登录接口的记录,以及调用center-user的过程,接口的总耗时和每个过程的耗时情况,紫色的代表web-manger,蓝色的代表center-user
(4),Skywalking基本页面释义
Overview 概述
Service Apdex 服务性能指数
Success Rate 响应成功率
Service Load (calls / min) 服务每分钟负载次数
Service Avg Response Time (ms) 服务平均响应耗时
Service Apdex 服务性能指数统计
Service Response Time Percentile (ms) 服务响应耗时百分比
p99:单个请求响应耗时从小到大排列,顺序处于90%位置的值即为P99 值。
P95: 单个请求响应耗时从小到大排列,顺序处于95%位置的值即为P95 值
Success Rate (%) 响应成功率统计
Service Load (calls / min) 服务每分钟负载次数统计
Message Queue Consuming Count 队列消费者消费条数统计
Message Queue Avg Consuming Latency (ms) 队列消费者消费平均延迟统计
Service Instances Load (calls / min) 服务实例负载地址
Slow Service Instance (ms) 慢服务实例负载地址
Service Instance Success Rate (%) 服务实例成功率