• SkyWalking环境搭建与使用


    一、SkyWalking简介

    SkyWalking是一个国产开源框架,b并加入Apache孵化器。简介来自官方文档。

    SkyWalking是 一个开源的可观测平台,用于从服务和云原生基础设施收集,分析,聚合及可视化数据。

    SkyWalking 提供了一种简便的方式来清晰地观测分布式系统,甚至横跨多个云平台。SkyWalking 更是一个现代化的应用程序性能监控(Application Performance Monitoring)系统,尤其专为云原生、基于容器的分布式系统设计。

    1、为什么要使用 SkyWalking?

    在许多不同的场景下,,SkyWalking 为观察和监控分布式系统提供了解决方案。首先是像传统的方式那样,SkyWalking 为服务提供了自动打点的代理,如 Java, C# , Node.js , Go , PHP 以及 Nginx LUA(包括 Python 和 C++ 调用的 SDK 捐献)。对于多数语言,持续部署环境,云原生基础设施正变得更加强大,但也更加复杂。

    Skywalking 的服务网格接收器可以让 Skywalking 接收来自服务网格框架(例如 Istio , Linkerd)的遥测数据,以帮助用户理解整个分布式系统。

    总之,SkyWalking 为 服务(service),服务实例(service instance)以及 端点(endpoint) 提供了可观测能力。服务(Service), 实例(Instance) 以及 端点(Endpoint) 等概念在如今随处可见,所以先了解一下他们在 SkyWalking 中都表示什么意思:

    • 服务(Service): 表示对请求提供相同行为的一组工作负载。在使用打点代理或 SDK 的时候,你可以定义服务的名字。SkyWalking 还可以使用在 Istio 等平台中定义的名称。
    • 服务实例(Service Instance): 一组工作负载(服务组)中的每一个工作负载称为一个实例。就像 Kubernetes 中的 pods 一样,服务实例未必就是操作系统上的一个进程。但当你在使用打点代理的时候,一个服务实例实际就是操作系统上的一个真实进程。
    • 端点(Endpoint): 对于特定服务所接收的请求路径,如 HTTP 的 URI 路径和 gRPC 服务的类名 + 方法签名。

    使用 SkyWalking 时,用户可以看到服务与端点之间的拓扑结构,每个服务/服务实例/端点的性能指标,还可以设置报警规则。

    从 v9 开始,SkyWalking 引入了新的核心概念Layer。层代表计算机科学中的一个抽象框架,例如操作系统(OS_LINUX 层)、Kubernetes(k8s 层)。所有检测到的实例都属于一个层来表示该实例的运行环境,服务将根据其实例具有一个或多个层定义。

    2、整体架构

    在这里插入图片描述
    SkyWalking 逻辑上分为四部分:探针(Probes),平台后端(Platform backend),存储(Storage)和用户界面(UI)。

    • 探针(Probes): 基于不同的来源可能是不一样的,但作用都是收集数据,将数据格式化为 SkyWalking 适用的格式。
    • 平台后端(Platform backend): 支持数据聚合, 数据分析以及驱动数据流从探针到用户界面的流程。分析包括 Skywalking 原生追踪和性能指标以及第三方来源,包括 Istio 及 Envoy telemetry , Zipkin 追踪格式化等。 你甚至可以使用 Observability Analysis Language 对原生度量指标 和 用于扩展度量的计量系统 自定义聚合分析。
    • 存储(Storage): 通过开放的插件化的接口存放 SkyWalking 数据。你可以选择一个既有的存储系统,如 ElasticSearch, H2 或 MySQL 集群(Sharding-Sphere 管理),也可以选择自己实现一个存储系统。
    • 用户界面(UI): 一个基于接口高度定制化的Web系统,用户可以可视化查看和管理 SkyWalking 数据。

    二、SkyWalking环境搭建

    官方下载:http://skywalking.apache.org/downloads/

    在这里插入图片描述

    1、搭建SkyWalking APM服务

    SkyWalking APM服务中包含 OAP服务和 UI服务。

    bin目录中包含两个服务的启动脚本。

    • startup.bat:同时启动 OAP和 UI服务。
      在这里插入图片描述

    1.1 启动服务

    下面在 windows中启动。点击 bin/startup.bat脚本。会启动两个服务:

    1.1.1 skywalking-oap-server服务

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

    在这里插入图片描述

    1.1.2 skywalking-web-ui服务

    SkyWalking UI界面的数据是通过请求SkyWalking OAP服务来获得。

    skywalking-web-ui服务会占用 8080 端口, 可以在webapp/webapp.yml 修改端口。

    在这里插入图片描述

    • server.port:SkyWalking UI服务端口,默认是8080;
    • spring.cloud.discovery.client.simple.instances.oap-service:SkyWalking OAP服务地址数组(可以配置多个 OAP服务)。

    日志信息存储在 logs目录:

    在这里插入图片描述

    启动成功之后,访问 Skywalking UI界面:http://127.0.0.1:8080/

    在这里插入图片描述

    三、SkyWalking快速使用

    搭建好了 SkyWalking服务,接下来在项目中接入SkyWalking的 Java Agent来追踪服务。

    SkyWalking对接入端无代码侵入。所以在启动项目时,通过 - javaagent 参数进行配置SkyWalking Agent来追踪服务就可以了。

    下面直接在 IDEA中使用 SkyWalking 。

    1、在IDEA中使用SkyWalking

    在运行的程序配置 jvm参数:

    在这里插入图片描述

    -javaagent:D:\OpenResoure\SkyWalking\apache-skywalking-java-agent-8.12.0\skywalking-agent\skywalking-agent.jar
    -DSW_AGENT_NAME=springboot-mybatis-demo
    -DSW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800
    
    • 1
    • 2
    • 3

    参数说明:

    • ‐javaagent:skywalking-agent的路径
    • ‐DSW_AGENT_NAME:SW_AGENT自定义服务名
    • ‐DSW_AGENT_COLLECTOR_BACKEND_SERVICES:连接OAP服务信息

    然后运行项目,随便访问几个接口,然后在SkyWalking UI界面查询追踪信息。

    在这里插入图片描述

    2、Skywalking集成日志框架

    Skywalking提供了很多可插播的功能组件。这里我们集成 logback日志框架。

    官方文档:https://skywalking.apache.org/docs/skywalking-java/latest/en/setup/service-agent/java-agent/application-toolkit-logback-1.x/

    1)引入logback依赖

        
        <dependency>
          <groupId>org.apache.skywalkinggroupId>
          <artifactId>apm-toolkit-logback-1.xartifactId>
          <version>8.12.0version>
        dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2)添加 lobback日志文件

    在项目的 resources下添加 logback-spring.xml文件,并配置 %tid 占位符

    
    <configuration>
    
        <appender name="console" 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>%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%nPattern>
                layout>
            encoder>
        appender>
    
        
        <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%nPattern>
                layout>
            encoder>
        appender>
    
        
        <root level="INFO">
            <appender-ref ref="console"/>
            <appender-ref ref="grpc-log"/>
        root>
    
    configuration>
    
    • 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

    重启项目,查看 Skywalking UI界面:

    在这里插入图片描述

    日志信息对我们追踪信息,特别是错误信息非常有帮助。

    – 求知若饥,虚心若愚。

  • 相关阅读:
    Simhash算法及python实现
    快速集成Skywalking 9(Windows系统、JavaAgent、Logback)
    擎创技术流 | ClickHouse实用工具—ckman教程(1)部署安装
    Spring_day03
    EfficientFormer:高效低延迟的Vision Transformers
    el-select 下拉树封装
    uniapp 微信小程序 canvas 问题
    研究生学姐给计算机专业萌新的10个建议
    羚数智能入选 IDC关于中国制造执行系统(MES)的市场2021年度份额报告
    FlinkModule加载HiveModule异常
  • 原文地址:https://blog.csdn.net/qq_42402854/article/details/126920266