SpringBoot实战(二十三)集成 SkyWalking
目录
- 一、简介
- 二、拉取镜像并部署
- 1.拉取镜像
- 2.运行skywalking-oap容器
- 3.运行skywalking-ui容器
- 4.访问页面
- 三、下载解压 agent
- 1.下载
- 2.解压
- 四、创建 skywalking-demo 项目
- 1.Maven依赖
- 2.application.yml
- 3.DemoController.java
- 五、构建启动脚本
- 1.startup.bat
- 2.执行启动脚本
- 3.发送请求
- 4.测试结果
- 六、Skywalking 和 Zipkin 对比
- 官方网址: https://skywalking.apache.org/
- 官方文档: SkyWalking 极简入门 | Apache SkyWalking
一、简介
SkyWalking
是一个开源的分布式跟踪系统
,可以用于监控和诊断分布式系统的性能问题。它可以跟踪应用程序中的请求流,并收集与请求相关的信息,如服务调用、数据库操作、消息队列等。SkyWalking还可以分析和展示这些跟踪数据,以帮助开发人员定位和解决性能问题。
这里我们介绍使用 Docker 方式部署 Skywalking,如果需要本地部署的,请移步:Skywalking+mysql实战
二、拉取镜像并部署
SkyWalking版本:9.2.0
注意:oap版本和agent版本需要适配,版本不适配可能会出现页面无法访问、agent上报不到页面等问题。
1.拉取镜像
docker pull apache/skywalking-oap-server:9.2.0
docker pull apache/skywalking-ui:9.2.0
2.运行skywalking-oap容器
docker run --name skywalking-oap -e TZ=Asia/Shanghai -p 12800:12800 -p 11800:11800 --restart always -d apache/skywalking-oap-server:9.2.0
3.运行skywalking-ui容器
docker run -d --name skywalking-ui \--restart=always \-e TZ=Asia/Shanghai \-p 8088:8080 \--link skywalking-oap:oap \-e SW_OAP_ADDRESS=http://oap:12800 \apache/skywalking-ui:9.2.0
4.访问页面
访问地址:http://localhost:8088
三、下载解压 agent
agent版本:8.13.0
、8.16.0
注意:agent版本和oap版本需要适配,版本不适配可能会出现页面无法访问、agent上报不到页面等问题。
1.下载
下载地址: https://skywalking.apache.org/downloads/
2.解压
解压下载好的 tar 包:
四、创建 skywalking-demo 项目
创建一个 SpringBoot 项目,接口地址为:/demo/test
。
1.Maven依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.example</groupId><artifactId>springboot-skywalking</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>skywalking-demo</artifactId><properties><!-- build env --><java.version>1.8</java.version><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><!-- dependency version --><spring-boot-maven-plugin.version>2.7.5</spring-boot-maven-plugin.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><finalName>${project.artifactId}</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot-maven-plugin.version}</version><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>
2.application.yml
server:port: 8081
3.DemoController.java
import com.demo.common.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@Slf4j
@RestController
@RequestMapping("/demo")
public class DemoController {@RequestMapping("/test")public Result<Object> test() {log.info(">>>>>>>>>>【INFO】DemoController.test()...");return Result.succeed();}
}
五、构建启动脚本
1.startup.bat
创建 txt 文件,输入如下内容,重命名文件为 startup.bat
。
:: 启动jar包
java -javaagent:D:\IdeaProjects\SpringBootExamples\springboot-skywalking\apache-skywalking-java-agent-8.16.0\skywalking-agent\skywalking-agent.jar=agent.service_name=skywalking-demo,collector.backend_service=127.0.0.1:11800 -jar skywalking-demo\target\skywalking-demo.jar:: 按键继续
pause
如果我们使用 IDEA
启动,也可以直接在启动配置里面设置点击 Modify options
:

选择 VM options
:

输入需要配置的 agent 参数:
-javaagent:C:\Users\lenovo\Downloads\apache-skywalking-java-agent-8.16.0\skywalking-agent\skywalking-agent.jar=agent.service_name=skywalking-demo,collector.backend_service=127.0.0.1:11800
点击 Apply
之后,点击 Run
启动即可。
2.执行启动脚本
3.发送请求
请求地址: http://localhost:8081/demo/test
发送三次请求:
4.测试结果
刷新页面,可以看到服务菜单有了 skywalking-demo
服务。
点击服务名
,可以看到详细的请求响应情况:
点击 Trace
标签,可以看到链路跟踪的内容:
六、Skywalking 和 Zipkin 对比
假如我们请求同样的 /getToken
接口,这个接口涉及 PostgreSQL
用户信息查询,然后创建 token 存储到 Redis
里面,再次调用时直接从 Redis 中获取。
zipkin页面:
skywalking页面:
相比之下,我们可以明显看到 SkyWalking 通过 agent 上报的方式获取到的信息更加全面。
整理完毕,完结撒花~ 🌻
参考地址:
1.极简入门 2022 docker 部署skywalking9.2.0,https://blog.csdn.net/weixin_42784569/article/details/128321315
相关文章:

SpringBoot实战(二十三)集成 SkyWalking
目录 一、简介二、拉取镜像并部署1.拉取镜像2.运行skywalking-oap容器3.运行skywalking-ui容器4.访问页面 三、下载解压 agent1.下载2.解压 四、创建 skywalking-demo 项目1.Maven依赖2.application.yml3.DemoController.java 五、构建启动脚本1.startup.bat2.执行启动脚本3.发…...

深度学习实践——卷积神经网络实践:裂缝识别
深度学习实践——卷积神经网络实践:裂缝识别 系列实验 深度学习实践——卷积神经网络实践:裂缝识别 深度学习实践——循环神经网络实践 深度学习实践——模型部署优化实践 深度学习实践——模型推理优化练习 深度学习实践——卷积神经网络实践ÿ…...

linux | vscode | makefile | c++编译和调试
简单介绍环境: vscode 、centos、 gcc、g、makefile 简单来说就是,写好项目然后再自己写makefile脚本实现编译。所以看这篇博客的用户需要了解gcc编译的一些常用命令以及makefile语法。在网上看了很多教程,以及官网也看了很多次,最…...

Spring | Bean 作用域和生命周期
一、通过一个案例来看 Bean 作用域的问题 Spring 是用来读取和存储 Bean,因此在 Spring 中 Bean 是最核心的操作资源,所以接下来我们深入学习⼀下 Bean 对象 假设现在有⼀个公共的 Bean,提供给 A 用户和 B 用户使用,然而在使用的…...
培训(c++题解)
题目描述 某培训机构的学员有如下信息: 姓名(字符串)年龄(周岁,整数)去年 NOIP 成绩(整数,且保证是 5 的倍数) 经过为期一年的培训,所有同学的成绩都有所提…...

ansible-playbook编写 lnmp 剧本
ansible-playbook编写 lnmp 剧本 vim /opt/lnmp/lnmp.yaml执行剧本 ansible-playbook lnmp.yaml...

需求太多处理不过来?MoSCoW模型帮你
一、MoSCoW模型是什么 MoSCoW模型 是在项目管理、软件开发中使用的一种排序优先级的方法,以便开发人员、产品经理、客户对每个需求交付的重要性达成共识。 MoSCoW是一个首字母缩略词,代表: M(Must have):…...

Vue 3:玩一下web前端技术(六)
前言 本章内容为VUE请求后端技术与相关技术讨论。 上一篇文章地址: Vue 3:玩一下web前端技术(五)_Lion King的博客-CSDN博客 下一篇文章地址: Vue 3:玩一下web前端技术(七)_Lio…...

【点云处理教程】00计算机视觉的Open3D简介
一、说明 Open3D 是一个开源库,使开发人员能够处理 3D 数据。它提供了一组用于 3D 数据处理、可视化和机器学习任务的工具。该库支持各种数据格式,例如 .ply、.obj、.stl 和 .xyz,并允许用户创建自定义数据结构并在程序中访问它们。 Open3D 广…...

Windows10系统还原操作
哈喽,大家好,我是雷工! 复制了下虚拟机的Win10系统,但其中有一些软件,想实现类似手机的格式化出厂操作,下面记录Windows10系统的还原操作。 一、系统环境: 虚拟机内的Windows10,64…...
Django学习笔记-模板(Template)基础
使用模块可以很方便的执行一些数据操作,然后根据传入的数据直接在模板html文件中进行处理。 1.Django中的模板配置 Django的模板引擎在sttings.py文件中: TEMPLATES [{# 模板引擎,默认为django模板BACKEND: django.template.backends.dja…...

使用 NVM(Node Version Manager)管理 Node.js 版本
使用 NVM(Node Version Manager)管理 Node.js 版本 步骤一:安装 NVM NVM 是一个用于安装和管理不同版本的 Node.js 的工具。首先,你需要确保你的系统上已经安装了 NVM。可以通过以下命令检查 NVM 是否已经安装: nvm …...

(文章复现)梯级水光互补系统最大化可消纳电量期望短期优化调度模型matlab代码
参考文献: [1]罗彬,陈永灿,刘昭伟等.梯级水光互补系统最大化可消纳电量期望短期优化调度模型[J].电力系统自动化,2023,47(10):66-75. 1.基本原理 1.1 目标函数 考虑光伏出力的不确定性,以梯级水光互补系统的可消纳电量期望最大为目标,函数…...

tinkerCAD案例:24. Ruler - Measuring Lengths 标尺 -量勺
tinkerCAD案例:24. Ruler - Measuring Lengths 标尺 - 测量长度 Project Overview: 项目概况: A machine shop, where any idea can become a reality, can cost millions and million of dollars. Still, the most important tool in the shop is the…...

linux系统编程重点复习--线程同步
目录 复习目标: 1 互斥锁 1.1互斥锁的使用步骤 1.2 练习 1.3 死锁 2 读写锁 3 条件变量 4 信号量 复习目标: 熟练掌握互斥量的使用说出什么叫死锁以及解决方案熟练掌握读写锁的使用熟练掌握条件变量的使用理解条件变量实现的生产消费者模型理解…...

【Docker 学习笔记】Windows Docker Desktop 安装
文章目录 一、前言二、Windows Docker 安装1. 基于Hyper-V后端和Windows容器的安装2. 基于WSL2后端的安装(推荐)3. 安装Docker Desktop on Windows4. 启动并验证Docker Desktop 一、前言 Docker并非是一个通用的容器工具,它依赖于已存在并运…...

getInputStream has already been called for this request 问题记录
问题背景 HttpServletRequest.getReader() HttpServletRequest.getInputStream() 不能在过滤器中读取一次二进制流(字符流),又在另外一个Servlet中读取一次,即一个InputSteam(BufferedReader)对象在被读取完成后,将无…...
日撸代码300行:第60天(小结)
1、自己对于这个专栏的代码抄写也是断断续续,由于种种原因上次在第54天没坚持下来,这次继续希望能抄完。 2、现在代码的阅读和理解能力明显比刚开始抄代码的时候强了不少。感觉坚持到现在收获还是不小。现在基本上来说仔细想一下都能够理清楚代码的意思。…...

python和java哪个更有前景,python和java哪个更有前途
大家好,小编为大家解答python和java哪个好学,零基础的问题。很多人还不知道python和java哪个更容易入门,现在让我们一起来看看吧! 进入编程行业是很多人的梦想,现在越来越多的人都想要通过培训的方式进入IT行业中,但是…...

LeetCode_11. 盛最多水的容器
题目描述 11. 盛最多水的容器 - 力扣(LeetCode)https://leetcode.cn/problems/container-with-most-water/ 思路分析 这题就是典型的是一道很经典的面试题,最优的解法是双指针,但很多人在第一次看到这题的时候很难想到用双指针来…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...

2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...

PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...

elementUI点击浏览table所选行数据查看文档
项目场景: table按照要求特定的数据变成按钮可以点击 解决方案: <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...

消息队列系统设计与实践全解析
文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...