SkyWalking原理与实践

文章目录

  • 前言
    • 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/
中文文档地址:https://skyapm.github.io/document-cn-translation-of-skywalking/

如下图:
SkyWalking原理与实践_第1张图片

整体架构如下:

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

Skywalking 启动与配置

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

解压如下图:
SkyWalking原理与实践_第2张图片

  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

集群模式

SkyWalking原理与实践_第3张图片
集群模式默认是:standalone单例,可以通过修改selector:中的模式。
模式支持:standalone、zookeeper、kubernetes、consul、etcd、nacos

数据存储

SkyWalking原理与实践_第4张图片
selector:表示选取哪个作为数据存储介质,默认的是h2。可以根据自己实际需求来进行选择。
支持的存储介质:elasticsearch、h2、mysql、tidb、influxdb、postgresql、iotdb、zipkin-elasticsearch。

核心

SkyWalking原理与实践_第5张图片
设置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://:
            # - uri: http://:

SkyWalking Agent

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

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

解压后如下图:
SkyWalking原理与实践_第6张图片

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}

你可能感兴趣的:(架构与规范,skywalking,linux,数据库)