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.08.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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

hive之文件格式与压缩

hive文件格式&#xff1a; 概述&#xff1a; 为Hive表中的数据选择一个合适的文件格式&#xff0c;对提高查询性能的提高是十分有益的。Hive表数据的存储格式&#xff0c;可以选择text file、orc、parquet、sequence file等。 文本文件&#xff1a; 文本文件就是txt文件&…

【SpirngCloud】分布式事务解决方案

【SpirngCloud】分布式事务解决方案 文章目录 【SpirngCloud】分布式事务解决方案1. 理论基础1.1 CAP 理论1.2 BASE 理论1.3 分布式事务模型 2. Seata 架构2.1 项目引入 Seata 3. 强一致性分布式事务解决方案3.1 XA 模式3.1.1 seata的XA模式3.1.2 XA 模式实践3.1.3 总结 4. 最终…

JavaScript --简介

目录 JS可以用来做什么&#xff1f; JS在前端中几种写法: 1. 文件引用&#xff1a; 2. 页面样式 3. 行内样式 集中常见的弹框: JS基本语法&#xff1a; 变量&#xff1a; 常量&#xff1a; 数据类型&#xff1a; 基本数据类型&#xff1a; 引用数据类型&#xff1a…

微信批量删除好友怎么删除

微信好友太多想要批量删除不知道怎么删除&#xff0c;相信这个问题也困扰了不少人。那么怎样才能批量的删除微信好友&#xff1f;其实不难&#xff0c;可以通过新建标签删除的方式来实现批量删除好友。 怎么批量删除 微信批量删除好友的具体步骤如下&#xff1a; 1、新建标签 首…

《零基础入门学习Python》第056讲:论一只爬虫的自我修养4:网络爬图

今天我们结合前面学习的知识&#xff0c;进行一个实例&#xff0c;从网络上下载图片&#xff0c;话说我们平时闲来无事会上煎蛋网看看新鲜事&#xff0c;那么&#xff0c;熟悉煎蛋网的朋友一定知道&#xff0c;这里有一个 随手拍 的栏目&#xff0c;我们今天就来写一个爬虫&…

Spring依赖注入方式,自动装配及自动装配特征

Spring依赖注入方式 一、setter注入1.1简单类型1.2引用类型&#xff08;基本数据类型与String&#xff09; 二、构造器注入1.1简单类型1.2引用类型&#xff08;基本数据类型与String&#xff09; 三、依赖注入方式选择四、自动装配依赖自动装配特征 总结 一、setter注入 依赖注…

【ARMv8 SIMD和浮点指令编程】NEON 移位指令——左右移位之术

NEON 移位指令主要涉及逻辑移位、算术移位两大类,同时下面还介绍了两个移位插入指令。 一、逻辑移位 1.1 SHL 左移(立即数)。该指令从向量中读取每个值,将每个结果左移一个立即值,将最终结果写入向量,并将向量写入目标 SIMD&FP 寄存器。 标量 SHL <V><d…

SQL注入--题目

联合查询注入&#xff1a; bugku-这是一个神奇的登录框 手工注入&#xff1a; 点吧&#xff0c;输入0’发现还是&#xff1a; 输入0" 发现报错&#xff1a; 确定可以注入&#xff0c;判断字段有多少个 0"order by 1,2,3# 发现&#xff1a; 说明有两列。 输入 0&qu…

ARM day8 key1/2/3led

key_led.h #ifndef _KEY_H_ #define _KEY_H_#include "stm32mp1xx_rcc.h" #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_exti.h" #include "stm32mp1xx_gic.h"//EXTI编号 typedef enum {EXTI0,EXTI1,EXTI2,EXTI3,EXTI4,EXTI5,…

陪诊小程序软件|陪诊系统定制|医院陪诊小程序

开发一个陪诊小程序需要投入一定的费用&#xff0c;具体金额会因项目的复杂程度、功能需求和推广政策而有所差异在投入资金之前&#xff0c;建议进行市场调研和需求分析&#xff0c;制定出合理的预算&#xff0c;并选择专业的开发团队进行合作&#xff0c;那么开发陪诊小程序需…

SpringBoot-6

Spring Boot 中的 MVC 支持 Spring Boot 的 MVC 支持主要来最常用的几个注解&#xff0c;包括RestController 用于声明控制器、RequestMapping用于实现方法映射地址、PathVariable 用于接受路径中的参数、RequestParam 用于接受 request 请求中的参数以及RequestBody 用于接受…

【机器学习】支持向量机SVM入门

优化目标 相较于之前学习的线性回归和神经网络&#xff0c;支持向量机&#xff08;Supprot Vector Machine&#xff0c;简称SVM&#xff09;在拟合复杂的非线性方程的时候拥有更出色的能力&#xff0c;该算法也是十分经典的算法之一。接下来我们需要学习这种算法 首先我们回顾…

使用html和css技巧提升网站加载速度

使用html和css技巧提升网站加载速度 加载时间每增加一秒&#xff08;0-5 秒之间&#xff09;&#xff0c;网站转化率平均就会下降 4.42%。页面加载时间的前五秒对转化率的影响最大。 通过更改html和css文件可以提高网站的页面加载速度,本文现在就来介绍一下怎么实现。 延迟加载…

Spring MVC -- 获取参数(普通对象+JSON对象+URL地址参数+文件+Cookie/Session/Header)

目录 1.获取参数 1.1获取单个参数 1.2获取多个参数 传参注意事项&#xff1a; 2.获取对象 3.后端参数重命名RequestParam 4.获取JSON对象RequestBody 5.从 URL 地址中获取参数 PathVariable 6.上传文件 RequestPart 7.获取Cookie/Session/Header 7.1 获取 Request 和…

解读维达国际2023半年度财报:后续发力“高端、高利润、高质量”

随着国内直播电商市场的迅速发展&#xff0c;对于希望在国内市场取得成功的品牌来说&#xff0c;直播电商已经成为所有大众消费品牌的竞争关键。 以生活用纸品牌维达为例&#xff0c;截至2023年7月25日&#xff0c;据抖音平台直播动态显示&#xff0c;维达官方旗舰店今年上半年…

免费商城搭建、免费小程序商城搭建、之java商城 电子商务Spring Cloud+Spring Boot+mybatis+MQ+VR全景+b2b2c

1. 涉及平台 平台管理、商家端&#xff08;PC端、手机端&#xff09;、买家平台&#xff08;H5/公众号、小程序、APP端&#xff08;IOS/Android&#xff09;、微服务平台&#xff08;业务服务&#xff09; 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis 3. 前端框架…

Linux-Shell

1.什么是Bash shell(壳) Bash Shell是一个命令解释器&#xff0c;它在操作系统的最外层&#xff0c;负责用户程序与内核进行交互操作的一种接口&#xff0c;将用户输入的命令翻译给操作系统&#xff0c;并将处理后的结果输出至屏幕。 通过xshell连接&#xff0c;就是打开了一…

黑客自学笔记(网络安全)

一、黑客是什么 原是指热心于计算机技术&#xff0c;水平高超的电脑专家&#xff0c;尤其是程序设计人员。但后来&#xff0c;黑客一词已被用于泛指那些专门利用电脑网络搞破坏或者恶作剧的家伙。 二、学习黑客技术的原因 其实&#xff0c;网络信息空间安全已经成为海陆空之…

Ajax 黑马学习

Ajax 资源 数据是服务器对外提供的资源,通过 请求 - 处理 - 响应方式获取 请求服务器数据, 用到 XMLHttpRequest 对象 XMLHttpRequest 是浏览器提供的js成员, 通过它可以请求服务器上的数据资源 let xmlHttpRequest new XMLHttpRequest(); 请求方式 : get向服务器获取数据…

RNN架构解析——认识RNN模型

目录 RNN模型作用分类按照输入和输出的结构进行分类按照RNN的内部构造进行分类 RNN模型 RNN单层网络结构 作用 分类 按照输入和输出的结构进行分类 按照RNN的内部构造进行分类