一.什么是skywalking?
 skywalking 是分布式系统的应用程序性能监视工具,专门为微服务,云原生架构何基于容器架构而设计。提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。

二.有哪些功能
 a.多种监控手段。可以通过语言探针和service mesh获取监控数据。
 b.多个语言自动探针
 c.轻量高效
 d.支持告警
 e.优秀的可视化解决方案

三、Skywalking与JDK版本的对应关系

下载APM 地址
    https://archive.apache.org/dist/skywalking/

下载Agent地址
    https://archive.apache.org/dist/skywalking/java-agent/

四、目前使用的jdk版本是8

SkyWalking APM 是什么?
全称:Application Performance Management,应用性能管理。1. 
功能:
• 分布式链路追踪(Trace)
• 服务拓扑图 & 依赖分析
• 指标监控(QPS、延迟、错误率)
• 告警与通知2. 
核心组件:
• OAP Server(Observability Analysis Platform):负责接收 Agent 数据、分析、存储、查询。
• UI(SkyWalking Rocketbot):前端可视化界面,默认端口 8080。
• 存储:支持 Elasticsearch、MySQL、TiDB、H2 等,生产环境一般用 ES。

下载APM 
  https://archive.apache.org/dist/skywalking/8.9.1/(其他版本:https://archive.apache.org/dist/skywalking)

SkyWalking AGENT 是什么?
本质:一个 Java 探针(jar 包),在应用启动时通过 -javaagent 挂载到 JVM。
作用:
• 自动埋点:拦截 HTTP、RPC、DB、MQ 等调用,生成 Trace、Metrics。
• 上报数据:把采集到的数据通过 gRPC 发送给 OAP Server(默认端口 11800)。
目录结构(解压后的 agent/ 目录示例):
agent/
 ├─ skywalking-agent.jar     # 入口 jar
 ├─ config/agent.config      # 主配置文件
 ├─ plugins/                 # 已激活的插件(*.jar)
 ├─ optional-plugins/        # 可选插件,需要时手动拷到 plugins/
 └─ logs/                    # 探针自身日志
 

下载Agent
https://archive.apache.org/dist/skywalking/java-agent/8.9.0/(其他版本:https://archive.apache.org/dist/skywalking/java-agent)

五.skywalking的数据存储方式

 默认h2,可根据实际需求选择

六.启动skywalking

windows下双击startup.sh(用管理员模式启动)

linux下用进入bin目录下执行./startup.sh 如果./startup.sh  没有执行权限可以通过chmod设置可执行权限  或者sh startup.sh

   七.配置修改
      Skywalking-Collector:追踪信息收集器,通过 gRPC/Http收集客户端的采集信息,gRPC默认端口11800/Http默认端口12800。 
    通过修改apache-skywalking-apm-8.9.1\apache-skywalking-apm-bin\config\application.yml

Skywalking-webapp :页面展示,修改端口通过修改apache-skywalking-apm-8.9.1\apache-skywalking-apm-bin\webapp\webapp.yml

八、springboot项目探针接入
启动加入参数
-javaagent:D:\newwork\skywalking\apache-skywalking-java-agent-8.9.0\skywalking-agent\skywalking-agent.jar  # SkyWalking Agent jar 地址。
-Dskywalking.agent.service_name=springboot-kafka    # 配置 Agent 名字。一般来说,我们直接使用 Spring Boot 项目的 `spring.application.name` 。
-Dskywalking.collector.backend_service=127.0.0.1:11800 # 配置 Collector 地址。
//这个可以不加
-Dskywalking.agent.span_limit_per_segment=2000 # 配置链路的最大 Span 数量。一般情况下,不需要配置,默认为 300 。主要考虑,有些新上 SkyWalking Agent 的项目,代码可能比较糟糕。

后台脚本启动
nohup java -javaagent:D:\newwork\skywalking\apache-skywalking-java-agent-8.9.0\skywalking-agent\skywalking-agent.jar 
-Dskywalking.agent.service_name=springboot-kafka
-Dskywalking.collector.backend_service=127.0.0.1:11800 
-Dskywalking.agent.span_limit_per_segment=2000 jar springboot-kafka.jar &

九、springboot启动调用接口
使用apifox调用接口查看skywalking接入情况。

仪表盘:

拓扑图:

追踪:

十.日志接入skywalking
    项目添加依赖

    <dependency>
      <groupId>org.apache.skywalking</groupId>
      <artifactId>apm-toolkit-logback-1.x</artifactId>
      <version>8.12.0</version>
    </dependency>

日志工具包对应的skywalking的版本
| apm-toolkit-logback-1.x 版本 | 对应 SkyWalking Java Agent 版本 |
| -------------------------- | --------------------------- |
| 8.1.0                      | 8.1.x                       |
| 8.3.0                      | 8.3.x                       |
| 8.4.0                      | 8.4.x                       |
| 8.5.0                      | 8.5.x                       |
| 8.8.0                      | 8.8.x                       |
| 8.11.0                     | 8.11.x                      |
| 8.12.0                     | 8.12.x                      |
| 8.14.0                     | 8.14.x                      |
| 8.16.0                     | 8.16.x                      |
| 9.0.0                      | 9.0.x                       |
| 9.4.0                      | 9.4.x                       |

springboot项目添加默认的日志配置logback-spring.yml放入项目的resource下面

<?xml version="1.0" encoding="UTF-8"?>
<configuration  debug="false">
    <contextName>springboot-kafka</contextName>
    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
    <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">
                <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
                <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>

    <!--文件日志, 按照每天生成日志文件 (由 Logger或者 LoggerFactory 记录的日志消息)-->
    <!--以下关于 日志文件的pattern 需要去掉颜色,防止出现 ANSI转义序列-->
    <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>
        <!--日志文件最大的大小-->
        <triggeringPolicy class="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>
        <appender-ref ref="FILE"><!-- 文件输出 --></appender-ref>
        <appender-ref ref="grpc"><!-- Skywalking GRPC 输出 --></appender-ref>
    </root>
</configuration>

启动项目调用接口可以看到

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐