SkyWalking原理与实践
创始人
2025-06-01 13:44:39

文章目录

  • 前言
    • SkyWalking下载地址
  • Skywalking
    • SkyWalking oap
      • 集群模式
      • 数据存储
      • 核心
    • SkyWalking webapp
  • SkyWalking Agent
    • Tomcat启动Agent
    • jar启动skywalking-agent.jar
    • Jetty启动skywalking-agent.jar
    • 修改SkyWalking Agent配置
      • 设置应用名称
      • 修改后台服务地址


前言

在分布式系统中会出现服务间的相互调用,且服务数量众多。一般会出现如下异常

  1. 请求出现异常,需要定位定位具体是哪个服务器发生异常,需要对这个请求链路一步一步调试才能确定那个服务出现异常。出现定位异常服务难的问题。
  2. 请求时间过长,需要定位定位具体是哪个服务器请求缓慢,需要对这个请求链路一步一步调试并添加对应日志才能确定那个服务比较缓慢。出现缓慢服务难以定位。

SkyWalking下载地址

下载地址:https://skywalking.apache.org/downloads/

如下图:
在这里插入图片描述

整体架构如下:

  1. 探针(Agent) 负责收集数据,包含了 Tracing 和 Metrics 的数据,agent 会将数据上传到后台服务器上,以方便数据的获取。
  2. 可观测性分析平台 (OAP) 接收来自探针的数据,分析数据并存到到ES、Mysql、h2、tidb、influxdb、postgresql、iotdb。
  3. 可视化平台通过查询OAP中的数据,进行数据展示。

Skywalking

提供功能:
分布式链路追踪和上下文传输
应用、实例、服务性能分析

解压如下图:
在这里插入图片描述

  1. bin
    这里存放的是脚本程序sh是Linux启动脚本,bat是Windows启动脚本。
    oapService: 后台程序启动脚本
    startup: 后台程序和UI程序启动脚本
    webappService: UI程序启动脚本
  2. config
    后台启动时候所有jar需要用到的配置文件,都在这个文件夹中。
  3. oap-libs
    后台启动时候所有jar都在这个文件夹中
  4. tools
  5. webapp
    可视化程序启动的包在这个文件夹中。

SkyWalking oap

后台服务:主要功能收集来自Agent发过来的数据,根据

修改主要配置文件:apache-skywalking-apm-bin/config/application.yml

集群模式

在这里插入图片描述
集群模式默认是:standalone单例,可以通过修改selector:中的模式。
模式支持:standalone、zookeeper、kubernetes、consul、etcd、nacos

数据存储

在这里插入图片描述
selector:表示选取哪个作为数据存储介质,默认的是h2。可以根据自己实际需求来进行选择。
支持的存储介质:elasticsearch、h2、mysql、tidb、influxdb、postgresql、iotdb、zipkin-elasticsearch。

核心

在这里插入图片描述
设置HTTP端口
通过HTTP连接OAP后台服务设置的端口
对应是可视化界面查询数据的端口

restPort: ${SW_CORE_REST_PORT:12800}

设置gRPC端口
通过gRPC连接OAP后台服务设置的端口
对应是Agent传输数据到服务器的端口

gRPCPort: ${SW_CORE_GRPC_PORT:11800}

SkyWalking webapp

可视化界面,通过连接OAP(后台服务)来查询数据,展示在可视化界面中。
所在文件路径:apache-skywalking-apm-bin/webapp中
配置文件:webapp.yml
修改启动端口:

server:port: 18080#port: 8080  默认端口

修改OAP链接地址:

spring:cloud:gateway:routes:- id: oap-routeuri: lb://oap-servicepredicates:- Path=/graphql/**discovery:client:simple:instances:oap-service: #oap后台服务地址,对应restPort- uri: http://127.0.0.1:12800# - uri: http://:# - uri: http://:

SkyWalking Agent

使用了Java Agent技术,使得在使用的时候做到代码无侵入。相当于在对应的程序外面套了一层如AOP功能类似,只是它作用于的是JVM层级。

解压后如下图:
在这里插入图片描述

Tomcat启动Agent

Linux系统Tomcat版本:Tomcat 7, Tomcat 8, Tomcat 9
修改tomcat/bin/catalina.sh的第一行如下:

CATALINA_OPTS="$CATALINA_OPTS -javaagent:/path/to/skywalking-agent/skywalking-agent.jar"; export CATALINA_OPTS

Windows系统Tomcat版本:Tomcat 7, Tomcat 8, Tomcat 9
修改tomcat/bin/catalina.bat的第一行如下:

set "CATALINA_OPTS=-javaagent:/path/to/skywalking-agent/skywalking-agent.jar"

jar启动skywalking-agent.jar

当应用是jar包,启动

java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar -jar yourApp.jar

Jetty启动skywalking-agent.jar

修改jetty.sh,在启动应用程序的命令行中添加-javaagent参数。如:

export JAVA_OPTIONS="${JAVA_OPTIONS} -javaagent:/path/to/skywalking-agent/skywalking-agent.jar"

修改SkyWalking Agent配置

修改文件路径:skywalking-agent/config/agent.config

设置应用名称

# 设置应用名称, 如:订单服务
# agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}
agent.service_name=${SW_AGENT_NAME:ORDER}

修改后台服务地址

# 后台服务地址,默认是127.0.0.1:11800
# 传输方式是gRPC
# Backend service addresses.
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}

相关内容

热门资讯

国家发改委肖渭明:加快出台实施... 经济观察网 据人民财讯消息,12月13日,中国国际经济交流中心举办2025—2026中国经济年会。国...
懂保汇创始人陆敏:AI将成寿险... 本报(chinatimes.net.cn)记者吴敏 北京报道12月12日,由华夏时报社主办的第十九届...
金融活水润宜昌固本兴新谱华章 (来源:中国银行保险报网)转自:中国银行保险报网“十四五”期间,邮储银行宜昌市分行始终胸怀“国之大者...
寒冬至,“泳”者出!这份科学“... 转自:新华社新华社银川12月13日电(记者谢建雯)塞上寒冬,气温骤降。当大多数人裹紧棉衣、追寻暖气时...
参赛选手可免费游石燕湖景区,跳...   长沙晚报掌上长沙12月13日讯(全媒体记者 赵紫名)12月27日9时30分,长沙市第三届乡村欢乐...