SkyWalking环境搭建与使用

本文介绍SkyWalking的使用方法,包括环境搭建、服务追踪和日志集成。SkyWalking是一款强大的可观测平台,适用于分布式系统的监控和追踪。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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

参数说明:

  • ‐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依赖

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

2)添加 lobback日志文件

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

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <!-- 日志的格式化,配置 %tid 占位符 -->
        <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>

    <!-- 通过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>

    <!-- 设置 Appender -->
    <root level="INFO">
        <appender-ref ref="console"/>
        <appender-ref ref="grpc-log"/>
    </root>

</configuration>

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

在这里插入图片描述

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

– 求知若饥,虚心若愚。

### Apache SkyWalking 搭建教程使用指南 #### 一、概述 Apache SkyWalking 是一款开源的应用程序性能监控 (APM) 工具,支持分布式系统的跟踪、度量收集以及可视化展示。它可以帮助开发者和运维人员更深入地理解应用的行为并提高其稳定性。 #### 二、环境准备 在开始搭建之前,请确保满足以下条件: - JDK 版本需为 8 或更高版本[^4]。 - 需要安装 Docker 和 Kubernetes(如果计划通过容器化方式运行)[^3]。 #### 三、下载安装 1. **获取官方安装包** 推荐从官方网站下载最新稳定版的 SkyWalking 安装包。对于大多数用户来说,直接使用官方发布的预构建包即可完成基本功能的需求。 2. **解压文件** 将下载好的压缩包解压至指定目录下,并进入该路径执行后续操作。 #### 四、启动 OAP Server OAP (Observability Analysis Platform) 是整个系统的核心组件之一,负责接收来自探针的数据流并对其进行处理分析。 ```bash # 启动命令示例 nohup ./bin/startup.sh > skywalking.log 2>&1 & ``` #### 五、配置 UI 前端服务 UI 提供了一个图形化的界面让用户查看所有的监测信息。可以通过内置 Jetty WebServer 来访问,默认监听地址为 `http://localhost:8080`[^5]。 #### 六、集成 Java Agent 到业务项目中 为了实现自动采集调用链数据,在目标 JVM 应用启动参数里加入如下选项: ```properties -javaagent:/path/to/skywalking-agent.jar -Dskywalking.agent.service_name=your_service_name -Dskywalking.collector.backend_service=<oap_server_ip>:<port> ``` 其中 `/path/to/` 替换为你实际放置 agent jar 文件的位置;而 `<oap_server_ip>` 和 `<port>` 对应于上文中提到的服务端 IP 地址及开放端口号[^1]。 #### 七、高级设置——启用 BanyanDB 存储引擎 当面对大规模生产环境下的海量观测型数据时,可能需要考虑引入专门针对此类场景优化过的数据库解决方案——BanyanDB。具体步骤包括但不限于修改 configuration.yaml 中的相关字段来适配新后端存储类型。 ```yaml storage: nameSpace: default pluginName: banyandb ``` --- ### 示例代码片段 以下是用于测试目的的一段简单 Spring Boot 程序入口类定义: ```java @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` 上述例子展示了如何创建一个基础框架实例以便进一步扩展成为被监控的目标对象。 ---
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值