skywalking本地启动和安装(MAC)

介绍

skyWalking是一个OAP(可观测分析平台)和APM系统(应用管理系统),它可以帮助我们理解系统行为,通过探针自动收集所需的指标,并进行分布式追踪。通过这些调用链路和指标,SkyWalkingAPM会感知应用间关系和服务间关系,并进行相应的指标统计。 以便发生故障的时候,能够快速定位和解决问题。

本文使用的是skywalking8.8.1版本 , skywalking-agent使用的是apache-skywalking-java-agent-8.8.0

开工

资源准备

  • 下载skywalking
  • 下载skywalking-agent

启动apo

修改配置
启动

启动skywalking-UI

修改配置
启动

编写skywalking-dubbo-provider项目

只提供关于skywalking上关的核心配置

  1. 引入依赖
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <dependency>
    <groupId>org.apache.skywalking</groupId>
    <artifactId>apm-toolkit-trace</artifactId>
    <version>8.7.0</version>
    </dependency>
    <!--skyWalking中的traceId记录到logback日志,我的skyWalking版本为8.5.0所以此处也选用了相同的版本-->
    <dependency>
    <groupId>org.apache.skywalking</groupId>
    <artifactId>apm-toolkit-logback-1.x</artifactId>
    <version>8.7.0</version>
    </dependency>

  2. 编写核心代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    /**
    * @author BK
    * @description: traceId test service
    * @date 2022/11/2 14:54
    */
    @DubboService
    public class TraceTestServiceImpl implements TraceTestService {
    private static final Logger LOGGER = LoggerFactory.getLogger(TraceTestServiceImpl.class);

    @Override
    public String invokeMethod(String name) {
    LOGGER.info("invokeMethod.receive.request:{}", name);
    return "result:" + TraceContext.traceId();
    }
    }
  3. 配置logback
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     <!--    控制台直播取tid变量即可-->
    <property name="CONSOLE_LOG_PATTERN" value="[%date{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%tid] [%thread] [%c{10}:%line] %msg%n%rEx"/>
    <!-- 文件中通过MDC获取变量-->
    <property name="MDC_LOG_PATTERN" value="[%date{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%X{tid}] [%thread] [%c{10}:%line] %msg%n%rEx"/>

    <appender name="stdoutAppender" 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.TraceIdPatternLogbackLayout">
    <pattern>${CONSOLE_LOG_PATTERN}</pattern>
    </layout>
    </encoder>
    </appender>

    <appender name="log_file" class="com.yili.marmot.log.ext.core.TraceIdSupportFileRollAppender">
    <File>${LOG_HOME}/warn.log</File>
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
    <level>WARN</level>
    <onMatch>ACCEPT</onMatch>
    <onMismatch>DENY</onMismatch>
    </filter>
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    <FileNamePattern>${LOG_HOME}/warn.%d{yyyy-MM-dd_HH}.%i.log.gz</FileNamePattern>
    <MaxHistory>72</MaxHistory>
    <maxFileSize>1GB</maxFileSize>
    <totalSizeCap>3GB</totalSizeCap>
    </rollingPolicy>
    <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
    <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout">
    <Pattern>${MDC_LOG_PATTERN}</Pattern>
    </layout>
    </encoder>
    </appender>
  4. 配置启动参数
  5. 启动项目

编写my-webapp

  1. 引入依赖
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <dependency>
    <groupId>org.apache.skywalking</groupId>
    <artifactId>apm-toolkit-trace</artifactId>
    <version>8.7.0</version>
    </dependency>
    <!--skyWalking中的traceId记录到logback日志,我的skyWalking版本为8.5.0所以此处也选用了相同的版本-->
    <dependency>
    <groupId>org.apache.skywalking</groupId>
    <artifactId>apm-toolkit-logback-1.x</artifactId>
    <version>8.7.0</version>
    </dependency>

  2. 配置logback
  3. 配置启动参数
  4. 启动项目

验证结果

  1. 访问url

查看日志

  • my-webapp

  • skywalking-dubbo-provider
    两个项目日志打印的traceId相同, 说明成功了

在本地搭建环境出现的问题

dubbo应用接入skywalking后追踪链路会断

最后统一了版本,就可以了应该是有些版本不兼容, 严格按照上述的版本琰搭建,会避免该问题

本文使用到的代码

git:

延伸阅读

https://skywalking.apache.org/zh/2022-08-30-pingan-jiankang/