当前位置: 首页 > news >正文

2025-skywalking组件

历史版本下载地址:Apache Archive Distribution Directory

官网:Apache SkyWalking

目录

. webapp: UI前端(web 监控页面)的jar包和配置文件;
. oap-libs:后台应用的jar包,以及它的依赖jar包,里边有一个server-starter-*.jar就是启动程序;. config:启动后台应用程序的配置文件,是使用的各种配置
. bin:各种启动脚本,一般使用脚本startup.*来启动web页面和对应的后台应用;

    . oapService.*:默认使用的后台程序的启动脚本;(使用的是默认模式启动,还支持其他模式,各模式区别见启动模式)
    . oapServicelnit.*:使用init模式启动;在此模式下,OAP服务器启动以执行初始化工作,然后退出
    . oapServiceNolnit.*:使用no init模式启动;在此模式下,OAP服务器不进行初始化。
    . webappService.*: UI前端的启动脚本;
    . startup.*:组合脚本,同时启动oapService.*:、webappService.*脚本;

修改端口: apache-skywalking-apm-es7-8.5.0\apache-skywalking-apm-bin-es7\webapp

启动 

启动两个窗口  成功

启动成功后会启动两个服务,一个是skywalking-oap-server,一个是skywalking-web-ui

skywalking-oap-server服务启动后会暴露11800 和 12800 两个端口,分别为收集监控数据的端口11800和接受前端请求的端口12800,修改端口可以修改config/applicaiton.yml

默认端口是 8080   这里我改成 8868了 访问地址: 127.0.0.1:8868

注意、注意、注意 服务启动需要有 Gateway  网关服务,如没网关这里会没有数据的

idea 配置skywalking 

# skywalking‐agent.jar的本地磁盘的路径
-javaagent:C:\Users\xu\Desktop\daima\apache-skywalking-apm-es7-8.5.0\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar
# 在skywalking上显示的服务名
-DSW_AGENT_NAME=gateway-service
# skywalking的collector服务的IP及端口
-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800

 手动复制 gateway 网关依赖包

注意:此处存在bug,追踪链路不显示gateway

解决方案:拷贝agent/optional-plugins目录下的gateway插件和webflux插件到agent/plugins目录

使用带 网关 的服务

注意 这里 启动服务后 需要等一会才能注册到 skywalking 服务里面

但是此时这里还没有数据,因为 skywalking 是懒加载的,需求通过网关请求一个接口

随便请求一个地址  

此时就出现数据了,请求的url地址也出现了(如果没有数据 多等一会,这会有延迟)

 有时候手动刷新 或者 F5 不生效 ,点击右上角的自动刷新  就出来了

注意版本问题,如果版本不对,会报错,类似如下

Error for HTTP POST "/auth/login"
java.lang.NullPointerException: null
	at org.apache.skywalking.apm.plugin.spring.cloud.gateway.v21x.HttpClientFinalizerResponseConnectionInterceptor$1.apply(HttpClientFinalizerResponseConnectionInterceptor.java:42)
	Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
Error has been observed at the following site(s):
	*__checkpoint ⇢ org.springframework.cloud.gateway.filter.WeightCalculatorWebFilter [DefaultWebFilterChain]
	*__checkpoint ⇢ org.springframework.boot.actuate.metrics.web.reactive.server.MetricsWebFilter [DefaultWebFilterChain]
	*__checkpoint ⇢ HTTP POST "/auth/login" [ExceptionHandlingWebHandler]
Original Stack Trace:
		at org.apache.skywalking.apm.plugin.spring.cloud.gateway.v21x.HttpClientFinalizerResponseConnectionInterceptor$1.apply(HttpClientFinalizerResponseConnectionInterceptor.java:42)
		at org.apache.skywalking.apm.plugin.spring.cloud.gateway.v21x.HttpClientFinalizerResponseConnectionInterceptor$1.apply(HttpClientFinalizerResponseConnectionInterceptor.java:37)
		at reactor.netty.http.client.HttpClientFinalizer.lambda$responseConnection$4(HttpClientFinalizer.java:101)
		at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.onNext(MonoFlatMapMany.java:163)
		at reactor.core.publisher.SerializedSubscriber.onNext(SerializedSubscriber.java:99)
		at reactor.core.publisher.FluxRetryWhen$RetryWh

刚开始使用的 是 8.5版本,会报错,错误信息 如上所示,

更换8.7版本 可以正常使用,报错是因为 gateway的版本问题

  使用 apm-spring-cloud-gateway-2.1.x-plugin-8.7.0 报错

  使用 apm-spring-cloud-gateway-3.x-plugin-8.7.0 不报错,

  可以将这个 apm-spring-cloud-gateway-3.x-plugin-8.7.0 插件复制到 8.5 版本里面测试,这样也可以,说明网关插件问题

注意idea 的配置 jar 路径,如果切换 skywalking的版本,idea 也要更新

-javaagent:C:\Users\xu\Desktop\daima\apache-skywalking-apm-es7-8.7.0\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar
-DSW_AGENT_NAME=user-service
-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800

 将这个 apm-spring-cloud-gateway-3.x-plugin-8.7.0 插件复制到 8.5 版本里面测试

 访问成功

linux环境部署

准备一个springboot程序,打成可执行jar包,写一个shell脚本,在启动项目的Shell脚本上,通过 -javaagent 参数进行配置SkyWalking Agent来追踪微服务;

startup.sh脚本:

#!/bin/sh
# SkyWalking Agent配置
export SW_AGENT_NAME=springboot-skywalking-demo #Agent名字,一般使用`spring.application.name`
export SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800 #配置 Collector 地址。
export SW_AGENT_SPAN_LIMIT=2000 #配置链路的最大Span数量,默认为 300。
export JAVA_AGENT=-javaagent:/root/skywalking-agent/skywalking-agent.jar
java $JAVA_AGENT -jar springboot-skywalking-demo-0.0.1-SNAPSHOT.jar #jar启动

等同于

java -javaagent:/root/skywalking-agent/skywalking-agent.jar 
-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800 
-DSW_AGENT_NAME=springboot-skywalking -jar springboot-skywalking-0.0.1-SNAPSHOT.jar

skywalking 持久化

修改配置文件

新建数据库  表结构不需要创建,启动 skywalking 时会自动创建表

此时启动失败

只启动一个服务,另外一个服务 skywalking-oap-server 自动关闭了

需要查询日志

查看日志 

缺少mysql的驱动

去项目里面找个mysql的驱动

将驱动复制到oap-libs里面

重新启动,两个服务都启动成功

 数据库开始创建表  供创建了146张表

重启springboot 的服务后 随便请求某个接口,请求成功

重启 skywalking的 服务

springboot 服务没启动

skywalking的数据还都存在,说明持久化成功

自定义SkyWalking链路追踪

引入依赖

<!-- SkyWalking 工具类 -->
<dependency>
    <groupId>org.apache.skywalking</groupId>
    <artifactId>apm-toolkit-trace</artifactId>
    <version>8.5.0</version>
</dependency>

在 services 层添加注解  @Trace,   @Trace将方法加入追踪链路

如果一个业务方法想在ui界面的跟踪链路上显示出来,只需要在业务方法上加上@Trace注解即可

 

加入@Tags或@Tag

        我们还可以为追踪链路增加其他额外的信息,比如记录参数和返回信息。实现方式:在方法上增加@Tag或者@Tags。 
@Tag 注解中 key = 方法名 ; value = returnedObj 返回值 arg[0] 参数

注意、注意、注意 实体类需要重写 toString() 方法,否则打印的是对象的地址

打印参数

注意、注意、注意   如果使用 Tag或者 Tags 注解,必须使用 @Trace注解 

 @Tags({@Tag(key = "param", value = "arg[0]"), @Tag(key = "SysLogs", value = "returnedObj")})

 继承父类

 使用 @Tag

 @Tag(key = "selectIPage", value = "returnedObj")

性能剖析

新建任务, 选择服务  指定url(断点名称)  然后点击左下角的新建任务

然后开始请求接口,多请求几次,这里我设置的是默认值 5 (最大采样数)

在services 睡眠 2 秒钟

 可以看到 这里 打印的时间

点击分析  可以分析出来哪个地方的代码有问题

Skywalking集成日志框架

引入依赖  skywalking 和  logback 整合的依赖包

        <!--  skywalking 和  logback 整合的依赖包   -->
        <dependency>
            <groupId>org.apache.skywalking</groupId>
            <artifactId>apm-toolkit-logback-1.x</artifactId>
            <version>8.5.0</version>
        </dependency>
 

配置  logback-spring.xml  日志文件  配置  [%tid] 

打印出tid

 根据TID查询 

通过 grpc 上传日志到 skywalking

    <!-- 通过grpc上报日志到skywalking oap-->
    <appender name="grpc-log" 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.TraceIdPatternLogbackLayout">
                <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%n</Pattern>
            </layout>
        </encoder>
    </appender>
<!--系统操作日志-->
<root level="info">
    <appender-ref ref="console"/>
    <appender-ref ref="file_info"/>
    <appender-ref ref="file_error"/>
    <appender-ref ref="grpc-log"/>
</root>

重启服务  然后 请求接口

如果不显示数据  修改下查询时间范围 

随便点击某个字段  就可以查看某一行的日志数据

注意、 注意、 注意、  如果skywalking 是部署到远程服务器的话,日志 就不能上报成功,需要修改配置文件 到 远程服务器skywalking 的信息

打开agent/config/agent.config配置文件,添加如下配置信息:

去官网里面获取以下信息

skywalking/docs/en/setup/service-agent/java-agent/Application-toolkit-logback-1.x.md at v8.5.0 · apache/skywalking · GitHub

 配置如下

plugin.toolkit.log.grpc.reporter.server_host=${SW_GRPC_LOG_SERVER_HOST:127.0.0.1}
plugin.toolkit.log.grpc.reporter.server_port=${SW_GRPC_LOG_SERVER_PORT:11800}
plugin.toolkit.log.grpc.reporter.max_message_size=${SW_GRPC_LOG_MAX_MESSAGE_SIZE:10485760}
plugin.toolkit.log.grpc.reporter.upstream_timeout=${SW_GRPC_LOG_GRPC_UPSTREAM_TIMEOUT:30}

 在文件的最后  配置

Skywalking告警通知 此处省略后续补充

相关文章:

  • 软件工程SE
  • Qt/C++项目积累:3.日志管理系统 - 3.1 项目介绍
  • netty十八罗汉之——挖耳罗汉(Decoder)
  • PostgreSQL vs MongoDB:优劣分析及适用场景
  • 【C语言】(二)变量与常量
  • 滤波器的设计案例
  • Pytorch使用手册-音频重采样(专题十九)
  • BGP分解实验·19——BGP选路原则之起源
  • 深度学习-126-LangGraph之基础知识(三)添加记忆和Human_in_the_loop的聊天机器人
  • 解决每次 Maven Rebuild 后 Java 编译器版本变为 1.5
  • 微信小程序 - 自定义实现分页功能
  • 特辣的海藻!2
  • 达梦数据库学习笔记@1
  • 05C语言——数组
  • 开源工具推荐:监控工具NetData
  • 【NLP算法面经】本科双非,头条+腾讯 NLP 详细面经(★附面题整理★)
  • 【java】类声明的两种形式
  • 7777777777
  • ChatGPT各模型版本对比分析
  • 《论基于构件的软件开发方法及其应用》审题技巧 - 系统架构设计师
  • 民生银行一季度净利127.42亿降逾5%,营收增7.41%
  • 华夏银行一季度营收降逾17%、净利降逾14%,公允价值变动损失逾24亿
  • 江西省公安厅警务保障部原主任辛卫平主动交代问题,正接受审查调查
  • 阿里千问3系列发布并开源:称成本大幅下降,性能超越DeepSeek-R1
  • 十四届全国人大常委会第十五次会议继续审议民营经济促进法草案
  • 新经济与法|如何治理网购刷单与控评?数据合规管理是关键