SkyWalking原理与实践


前言

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

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

SkyWalking下载地址

下载地址:https://skywalking.apache.org/downloads/
中文文档地址:https://skyapm.github.io/document-cn-translation-of-skywalking/

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

整体架构如下:

  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发过来的数据,根据
可观测性分析平台(Observability Analysis Platform,简称 OAP)

修改主要配置文件: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-route
          uri: lb://oap-service
          predicates:
            - Path=/graphql/**
    discovery:
      client:
        simple:
          instances:
            oap-service: #oap后台服务地址,对应restPort
              - uri: http://127.0.0.1:12800
            # - uri: http://<oap-host-1>:<oap-port1>
            # - uri: http://<oap-host-2>:<oap-port2>

SkyWalking Agent

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

使用 -javaagent 命令行参数在运行期间对代码进行操作, 操作 一词表示修改并注入用户代码.

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

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}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Skywalking是一个分布式系统的跟踪和监控解决方案。它使用无侵入的字节码增强技术,通过在应用程序中插入代码来收集和监控分布式系统的各个组件之间的调用关系和性能指标。其原理可以通过以下引用内容进行说明。 根据引用,Skywalking的设计和应用简单,利用无侵入的字节码增强技术,可以方便地对Java程序进行分布式监控。它通过在代码中插入特定的代码片段来追踪方法调用和性能指标,从而实现对分布式系统的跟踪和监控。 另外,引用提到了Apollo和Apache Skywalking原理图,尽管具体内容不明确,但可以推测Skywalking可能是基于Apollo和Apache Skywalking的一种实现方法或扩展。 综合来看,Skywalking原理是通过无侵入的字节码增强技术,插入代码来追踪分布式系统中各个组件之间的调用关系和性能指标,从而实现对系统进行监控和分析。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Apollo&&Apache Skywalking原理图](https://download.csdn.net/download/jz1993/85266760)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [开源框架APM工具--SkyWalking原理与应用](https://blog.csdn.net/ww2651071028/article/details/129683687)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值