skywalking微服务链路追踪

是什么?

skywalking是一个优秀的国产开源框架2015年由个人吴晟(华为开发者)开源 ,

分布式链路追踪就是将一次分布式请求还原成调用链路,将一次分布式请求的调用情况集中展示,比如各个服务节点上的耗时、请求具体到达哪台机器上、每个服务节点的请求状态等等。

优势:

  • skywalking采用字节码增强的技术实现代码无侵入,zipKin代码侵入性比较高
  • skywalking功能比较丰富,报表统计,UI界面更加人性化

当前主流开源组件

常用链路追踪工具的有:Zipkin、SkyWalking、CAT。

Zipkin 是 Twitter 开源的调用链分析工具,目前基于 SpringCloud Sleuth 得到了广泛的使用,特点是轻量,使用部署简单。

SkyWalking 是本土开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI 功能较强,接入端无代码侵入。目前已加入 Apache 孵化器。

CAT 是大众点评开源的基于编码和配置的调用链分析,应用监控分析,日志采集,监控报警等一系列的监控平台工具。

纯属个人观点:

  • 从接入方式来看,Cat的代码侵入性最高,Zipkin只需要基于Sleuth方式引入配置,SkyWalking无代码侵入性。
  • 从使用入门来看,Zipkin容易些,Cat成本高些。
  • 从页面UI展示来看,健壮度:CAT > SkyWalking> Zipkin。

综上所述,Skywalking代码无侵入性,通信方式采用 gRPC ,性能较好,UI 够强也够用

1.服务端如何搭建?

skywalking同样是通过jar包方式启动,需要下载jar包,地址:
https://skywalking.apache.org/downloads/

这里也有8.1.0版本的和mysql驱动包,需要自取

通过网盘分享的文件:服务追踪
链接: https://pan.baidu.com/s/1VEpBGonq0k08N4pu3x7oqg?pwd=w8j9 提取码: w8j9

SkyWalking版本对应不同的JDK(本人就踩大坑了)

SkyWalking 版本

支持的 JDK 版本

8.x

JDK 8, 9, 10, 11

9.x

JDK 8, 9, 10, 11, 16, 17

10.x

JDK 8, 9, 10, 11, 16, 17

目录分析:

  • agent:客户端需要指定的目录,其中有一个jar,就是负责和客户端整合收集日志
  • bin:服务端启动的脚本
  • config:一些配置文件的目录
  • logs:oap服务的日志目录
  • oap-libs:oap所需的依赖目录
  • webapp:UI服务的目录

修改端口号:

\webapp\application.yml 我修改为8888防止冲突

启动:

启动命令在/bin目录下,这里需要启动两个服务,如下:

oap服务:对应的启动脚本oapService.bat,Linux下对应的后缀是sh

UI服务:对应的启动脚本webappService.bat,Linux下对应的后缀是sh

当然还有一个startup.bat启动文件,可以直接启动上述两个服务,我们可以直接使用这个脚本,直接双击,将会弹出两个窗口则表示启动成功,如下图:

因为skywalking是非侵入式的所以就可以选择直接添加JVM选项

-javaagent:D:\1AAATools\apache-skywalking-apm-bin8.1\apache-skywalking-apm-bin\agent\skywalking-agent.jar
-Dskywalking.agent.service_name=ruoyi-gen
-Dskywalking.collector.backend_service=localhost:11800

-javaagent:skywalking-agent.jar所在路径

-Dskywalking.agent.service_name=分组 + 微服务的服务名称(就是配置参数spring.application.name)

-Dskywalking.collector.backend_service=不用修改(日志收集地址的,固定端口11800)

配置完成后访问http://localhost:8888/

skywalking是根据请求生成这些数据的,所以需要访问项目中的路径才会有数据

skywalking指标:

2.Skywalking 进行日志配置:

为log日志增加 skywalking的 traceId(追踪ID)。便于排查

首先引入maven依赖

<!-- SkyWalking 的日志工具包 -->
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-logback-1.x</artifactId>
<version>9.0.0</version>
</dependency>

接着在 resources文件夹下创建 logback-spring.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false"><property name="LOG_HOME" value="D:/logs/"></property><conversionRule conversionWord="clr"converterClass="org.springframework.boot.logging.logback.ColorConverter" /><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"><layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout"><pattern>%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} [%X{tid}] %clr([%-10.10thread]){faint} %clr(%-5level) %clr(%-50.50logger{50}:%-3L){cyan} %clr(-){faint} %msg%n</pattern></layout></encoder></appender><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 修正日期格式 --><FileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd}/pro.log</FileNamePattern><MaxHistory>30</MaxHistory></rollingPolicy><encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"><layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout"><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--><!-- <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread]%-5level %logger{50} - %msg%n</pattern>--><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%-10.10thread]%-5level %-50.50logger{50}:%-3L - %msg%n</pattern></layout></encoder><!--日志文件最大的大小--><triggeringPolicyclass="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><MaxFileSize>10MB</MaxFileSize></triggeringPolicy></appender><!--skywalking grpc 日志收集--><appender name="grpc"class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender"><encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"><layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout"><Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%thread]%-5level %logger{36} -%msg%n</Pattern></layout></encoder></appender><!-- 日志输出级别 --><root level="INFO"><appender-ref ref="STDOUT"/><appender-ref ref="FILE"/><appender-ref ref="grpc"/></root>
</configuration>

请求接口就可以发现TID的输出

把TID放到追踪ID这里:

3.数据持久化:

skywalking默认使用内置内存h2来存储数据,这样的弊端就是重启后数据消失,虽然skywalking是实时的但是最好还是记录一下

打开\apache-skywalking-apm-bin\config\application.yml配置文件

将mysql驱动放入apache-skywalking-apm-bin\oap-libs下

h2改为mysql

修改路径,我这里是组长的数据库

如果报错加上时区

 jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/swtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC"}

创建数据库重启nacos,就会自动创建表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/36343.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DR-CAN 卡尔曼滤波笔记

Kalman Filter&#xff08;卡尔曼滤波&#xff09; Optimal(最优化) Recursive(递归) Data Processing(数据处理) Algorithm(算法) 1 递归算法_Recursive Alorithm 1.1 公式推演 1.2 案例 1.3编程实现 % 设置迭代次数 n 5000000;% 生成测量值序列 % rand(n 1, 1) 生成一个…

HyperAD:学习弱监督音视频暴力检测在双曲空间中的方法

文章目录 速览摘要1. 引言2. 相关工作弱监督暴力检测双曲空间中的神经网络 3. 预备知识双曲几何切空间&#xff08;Tangent Space&#xff09;指数映射与对数映射&#xff08;Exponential and Logarithmic Maps&#xff09;3.1 双曲图卷积网络&#xff08;Hyperbolic Graph Con…

Freeze-Omni:冻结 LLM,实现语音对话

写在前面:语音LLM 大型语言模型(LLM)的强大能力,为构建智能语音对话系统提供了无限可能。然而,将 LLM 与语音模态结合,并非易事。直接微调 LLM,容易导致灾难性遗忘,丧失其原有的知识和能力;而训练数据不足,又难以充分发挥 LLM 的潜力。 如何才能在保留 LLM 强大能力…

践行健康养生,拥抱美好人生

在当今快节奏的社会浪潮中&#xff0c;人们在忙碌奔波时&#xff0c;健康常被抛诸脑后。可一旦身体亮起红灯&#xff0c;才惊觉健康无价。其实&#xff0c;只要巧妙运用养生之道&#xff0c;就能轻松守护健康&#xff0c;让生活重回正轨。 养生始于饮食。我们要巧妙搭配食物&am…

上海亚商投顾:沪指窄幅震荡 深海科技概念持续活跃

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 市场全天窄幅震荡&#xff0c;三大指数涨跌互现。深海科技概念持续活跃&#xff0c;巨力索具、东方海洋、海洋…

Java 大视界 -- Java 大数据在智能体育赛事直播数据分析与观众互动优化中的应用(142)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

基于Spring Boot的图书管理系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

SpringBoot对接DeepSeek

文章目录 Spring Boot 集成 DeepSeek API 详细步骤1. 创建API Key1.访问 [DeepSeek控制台](https://platform.deepseek.com/usage) 并登录。2.点击 Create API Key 生成新密钥。3.复制并保存密钥&#xff08;需在Spring Boot配置文件中使用&#xff09;。 2. 创建Spring Boot工…

Web 小项目: 网页版图书管理系统

目录 最终效果展示 代码 Gitee 地址 1. 引言 2. 留言板 [热身小练习] 2.1 准备工作 - 配置相关 2.2 创建留言表 2.3 创建 Java 类 2.4 定义 Mapper 接口 2.5 controller 2.6 service 3. 图书管理系统 3.1 准备工作 - 配置相关 3.2 创建数据库表 3.2.1 创建用户表…

PCAN安装驱动、使用PcanView监听发送报文

首先将PCAN插入电脑USB接口&#xff0c;winR快捷键输入compmgmt.msc&#xff0c;弹出计算机管理界面&#xff0c;装过驱动则显示PCAN-USB。未装过驱动的会显示XCAN-USB&#xff0c;按照如片步骤安装驱动&#xff0c;这里不在文字赘述。 PCAN Windows驱动下载&#xff1a; htt…

Pytest项目_day01(HTTP接口)

HTTP HTTP是一个协议&#xff08;服务器传输超文本到浏览器的传送协议&#xff09;&#xff0c;是基于TCP/IP通信协议来传输数据&#xff08;HTML文件&#xff0c;图片文件&#xff0c;查询结果等&#xff09;。 访问域名 例如www.baidu.com就是百度的域名&#xff0c;我们想…

利用knn算法实现手写数字分类

利用knn算法实现手写数字分类 1.作者介绍2.KNN算法2.1KNN&#xff08;K-Nearest Neighbors&#xff09;算法核心思想2.2KNN算法的工作流程2.3优缺点2.4 KNN算法图示介绍 3.实验过程3.1安装所需库3.2 MNIST数据集3.3 导入手写数字图像进行分类3.4 完整代码3.5 实验结果 1.作者介…

HTML中滚动加载的实现

设置div的overflow属性&#xff0c;可以使得该div具有滚动效果&#xff0c;下面以div中包含的是table来举例。 当table的元素较多&#xff0c;以至于超出div的显示范围的话&#xff0c;观察下该div元素的以下3个属性&#xff1a; clientHeight是div的显示高度&#xff0c;scrol…

ubuntu20.04系统没有WiFi图标解决方案_安装Intel网卡驱动

文章目录 1. wifi网卡配置1.1 安装intel官方网卡驱动backport1.1.1 第四步可能会出现问题 1.2 ubuntu官方的驱动1.3 重启 1. wifi网卡配置 我的电脑是华硕天选4&#xff08;i7&#xff0c;4060&#xff09;&#xff0c;网卡型号intel ax201 ax211 ax210通用。 参考文章&#…

Anacoda进入自己的集成环境CLI中

鼠标左键单击那个"播放"图标&#xff0c;在弹出的菜单中选择"Open Terminal"&#xff0c;即可进入。 还有一种是通过Scripts/active.bat文件的方式&#xff0c;是Windows下的方案&#xff0c;在当前目录下执行cmd&#xff0c;输入active切换Anacoda集成环…

设备健康管理系统是什么,设备健康管理系统多少钱?

想象一下&#xff0c;你的汽车在仪表盘报警前 3 天&#xff0c;手机就收到 “发动机轴承剩余寿命 1500 公里” 的提醒 —— 这就是 ** 设备健康管理系统&#xff08;EHM&#xff09;** 的日常。在制造业&#xff0c;设备故障每年造成全球 3.4 万亿美元损失&#xff0c;而 80% 的…

解锁智慧养老新可能,全面提升养老生活质量

在老龄化浪潮席卷全球的今天&#xff0c;如何让老年人的生活更加安全、便捷、丰富多彩&#xff0c;成为了我们共同的责任与追求。辉视智慧养老方案&#xff0c;正是这样一款以老年人需求为核心&#xff0c;集信息查询、活动参与、紧急对讲与安全保障于一体的智慧养老解决方案。…

Error: The project seems to require pnpm but it‘s not installed.

Error: The project seems to require pnpm but it‘s not installed 原因 该错误信息表明你的项目需要使用 pnpm 作为包管理工具&#xff0c;但系统中尚未安装 pnpm。 解决方法 【1】删除pnpm.lock 【2】npm install -g pnpm 之后再重新启动

Zabbix监控自动化(Zabbix Mnitoring Automation)

​​​​​​zabbix监控自动化 1、自动化监控(网络发现与自动注册只能用其一) 1.1 ansible安装zabbix agent 新采购100台服务器&#xff1a; 1、安装操作系统 2、初始化操作系统 3、安装zabbix agent 1.手动部暑 2.脚本部暑(shell expect) 3.ansible 4、纳入监控 1.…

JVM垃圾回收

1. Java垃圾回收机制 为了让程序员更专注于代码的实现&#xff0c;而不用过多的考虑内存释放的问题&#xff0c;所以&#xff0c;在Java语言中&#xff0c;有了自动的垃圾回收机制&#xff0c;也就是我们熟悉的GC(Garbage Collection)。有了垃圾回收机制后&#xff0c;程序员只…