skywalking实现链路追踪-笔记

本文属于b站图灵课堂springcloud笔记系列。讲的好还不要钱,值得推荐。

为什么采用链路追踪?

为了排查问题,从请求源头到底层服务的全链路环节进行追踪。

skywalking 是什么?

分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。

提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。

官网:Apache SkyWalking

这个10.X版本图生态比较复杂,老版的图更简洁些

主要关注分布式链路追踪,就是tracing部分。

上部分 Agent :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器。官网上支持各种语言跟中间件。根据需要去下载,测试用了java的。

  • 下部分 SkyWalking OAP :负责接收 Agent 发送的 Tracing 数据信息,然后进行分析(Analysis Core) ,存储到外部存储器( Storage ),最终提供查询( Query )功能。
  • 右部分 Storage :Tracing 数据存储。目前支持 ES、MySQL、Sharding Sphere、TiDB、H2 多种存储器。通常生成会用ES或者Tidb ,测试体验不改了,默认H2。
  • 左部分 SkyWalking UI :负责提供控台,查看链路等等。

搭建 SkyWalking 单机环境

关于版本,就是用最新的:apm 10.1.0,agent:9.3.0

1 下载skywalking:

https://www.apache.org/dyn/closer.cgi/skywalking/10.1.0/apache-skywalking-apm-10.1.0.tar.gz

https://www.apache.org/dyn/closer.cgi/skywalking/java-agent/9.3.0/apache-skywalking-java-agent-9.3.0.tgz

2 环境配置:

快速体验,就没用使用ES存储,使用H2。

就先不改config/application.yml

skywalking-web-ui服务会占用 8080 端口,修改端口可以修改webapp/webapp.yml

比如改为18080.

启动:

windows下启动bin/startup.bat,启动成功后会同时启动2个服务:skywalking-aop-server,skywalking-web-ui. 其中skywalking-oap-server服务启动后会暴露11800 和 12800 两个端口,分别为收集监控数据的端口11800和接受前端请求的端口12800。

可以登录:http://localhost:18080/

微服务工程接入agent探针

业务不需要改动,微服务工程需要修改jvm参数,以订单服务为例:

-javaagent:D:\cloud\apache-skywalking-java-agent-9.3\skywalking-agent\skywalking-agent.jar

-DSW_AGENT_NAME=tlmall-order

-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=tlmall-skywalking-server:11800

其他服务类似,注意jar位置。

gateway的jar需要额外关注,从optional-plugins选择对应版本jar放到plugins下面

启动服务,下单测试。

我们能看到服务列表情况

这里,我们会看到 SkyWalking 中非常重要的三个概念:

  • 服务(Service) :表示对请求提供相同行为的一系列或一组工作负载。在使用 Agent 或 SDK 的时候,你可以定义服务的名字。

  • 服务实例(Service Instance) :上述的一组工作负载中的每一个工作负载称为一个实例。当你在使用 Agent 的时候, 一个服务实例实际就是操作系统上的一个真实进程。

    这里,我们可以看到 Spring Boot 应用的服务{agent_name}-pid:{pid}@{hostname},由 Agent 自动生成。比如:a7a6e21012c643a2a136516ca5d7ba0d@192.168.59.96

  • 端点(Endpoint) :对于特定服务所接收的请求路径, 如 HTTP 的 URI 路径和 gRPC 服务的类名 + 方法签名。

Topology(拓扑图):以拓扑图的方式展现服务之间的关系,并以此为入口查看相关信息;

trace就能看到链路追踪情况

还能很多其他功能待整理。

以前线下最重要就是关注报警及调用链排查问题,哪里慢。

相关推荐
小陈phd1 小时前
多模态大模型学习笔记(一)——机器学习入门:监督/无监督学习核心任务全解析
笔记·学习·机器学习
崎岖Qiu1 小时前
【计算机网络 | 第九篇】PPP:点对点协议
网络·笔记·计算机网络·ppp
听麟2 小时前
HarmonyOS 6.0+ PC端虚拟仿真训练系统开发实战:3D引擎集成与交互联动落地
笔记·深度学习·3d·华为·交互·harmonyos
一个人旅程~2 小时前
我存在吗?你存在吗?
笔记·程序人生·电脑·ai写作
xqqxqxxq2 小时前
Java IO 核心:BufferedReader/BufferedWriter & PrintStream/PrintWriter 技术笔记
java·笔记·php
第七序章2 小时前
【Linux学习笔记】初识Linux —— 理解gcc编译器
linux·运维·服务器·开发语言·人工智能·笔记·学习
-Springer-3 小时前
STM32 学习 —— 个人学习笔记5(EXTI 外部中断 & 对射式红外传感器及旋转编码器计数)
笔记·stm32·学习
崎岖Qiu3 小时前
【计算机网络 | 第十篇】以太网的 MAC 层
网络·笔记·计算机网络·mac地址
BlackWolfSky3 小时前
鸿蒙高级课程笔记2—应用性能优化
笔记·华为·harmonyos
玄同7653 小时前
Python Random 模块深度解析:从基础 API 到 AI / 大模型工程化实践
人工智能·笔记·python·学习·算法·语言模型·llm