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

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告警通知 此处省略后续补充


http://www.kler.cn/a/558725.html

相关文章:

  • 基于Springboot学生宿舍水电信息管理系统【附源码】
  • JavaScript函数-arguments的使用
  • ESP32S3:解决RWDT无法触发中断问题,二次开发者怎么才能使用内部RTC看门狗中断RWDT呢?
  • Protobuf proto3 语法讲解(1)
  • x安全服务 y安全体系 z网络安全模型 网络安全体系设计
  • 12.重复内容去重|添加日志|部署服务到Linux上(C++)
  • 如何用Python 3自动打开exe程序
  • TCP函数
  • vscode settings(二):文件资源管理器编辑功能主题快捷键
  • [Windows] 通达信MPV1.23绿色免安装,整合DeepSeek版
  • STM32基础篇(二)------GPIO(最详细版本!!!!!!)
  • Android 实现 RTMP 推流:快速集成指南
  • 神经网络——梯度下溢
  • mysql -DQL语句和DCL语句
  • 蓝桥杯刷题25.2.22|打卡
  • Redis面试宝典【刷题系列】
  • pWnOS v2.0
  • SQL ①-数据库 || MySQL
  • 马士兵java面试八股文及答案
  • 欢乐力扣:单词规律