SkyWalking 介绍及部署

news2024/12/24 20:28:25

  • 1、SkyWalking简介
  • 2、SkyWalking的搭建
    • 2.1 部署Elasticsearch
    • 2.2 部署SkyWalking-Server
    • 2.3 部署SkyWalking-UI
  • 3、应用接入
    • 3.1 jar包部署方式
    • 3.2 dockerfile方式
    • 3.3 DockerFile示例
  • 4、SkyWalking UI 界面说明
    • 4.1 仪表盘
      • 4.1.1 APM
        • (1)全局维度
        • (2)服务维度
        • (3)实例维度
        • (4)端点维度
      • 4.1.2 数据库
      • 4.1.3 Istio、SelfObservability 、WebBrowser
    • 4.2 拓扑图
    • 4.3 追踪
    • 4.4 性能剖析
    • 4.5 日志
    • 4.6 告警
  • 5、其他相关的配置
    • 5.1 数据清理机制
    • 5.2 数据存储和写入优化(针对ES)
    • 5.3 链路过长问题
  • 6、参考文档:

随着微服务架构的流行,一些微服务架构下的问题也会越来越突出,比如一个请求会涉及多个服务,而服务本身可能也会依赖其他服务,整个请求路径就构成了一个网状的调用链,而在整个调用链中一旦某个节点发生异常,整个调用链的稳定性就会受到影响。

面对以上情况, 我们就需要一些可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题,这时候 APM(Application Performance Management应用性能管理)工具就该闪亮登场了。

1、SkyWalking简介

  • 官方网站
  • SkyWalking 文档中文版(社区提供)
  • 官方demo网站 (账号:skywalking 密码:skywalking

SkyWalking 它是一款优秀的国产 APM 工具,包括了分布式追踪、性能指标分析、应用和服务依赖分析等。

SkyWalking架构分为三部分:

   - skyWalking-collector:链路数据归集器,相当于Skywalking的服务端

   - skyWalking-ui:SkyWalking的web可视化平台

   - skyWalking-agent:探针,与应用容器绑定在一起,启动时通过javaagent进行JVM级别的AOP,收集和发送数据到归集器

SkyWalking 的核心是数据分析和度量结果的存储平台,通过 HTTP 或 gRPC 方式向 SkyWalking Collecter 提交分析和度量数据,SkyWalking Collecter 对数据进行分析和聚合,存储到 Elasticsearch、H2、MySQL、TiDB 等。

说明: SkyWalking 的核心是数据分析和度量结果的存储平台,通过 HTTP 或 gRPC 方式向 SkyWalking Collecter 提交分析和度量数据,SkyWalking Collecter 对数据进行分析和聚合,

存储到 Elasticsearch、H2、MySQL、TiDB 等其一即可,最后我们可以通过 SkyWalking UI 的可视化界面对最终的结果进行查看。Skywalking 支持从多个来源和多种格式收集数据:多种语言的 Skywalking Agent 、Zipkin v1/v2 、Istio 勘测、Envoy 度量等数据格式。

整体架构看似模块有点多,但在实际上还是比较清晰的,主要就是通过收集各种格式的数据进行存储,然后展示。

所以搭建 Skywalking 服务我们需要关注的是 SkyWalking Collecter、SkyWalking UI 和 存储设备,SkyWalking Collecter、SkyWalking UI 官方下载安装包内已包含,最终我们只需考虑存储设备即可。

2、SkyWalking的搭建

2.1 部署Elasticsearch

注意:版本与SkyWalking版本对应

 展开源码

docker run --name elasticsearch -p 9200:9200  -p 9300:9300 \
 -e "discovery.type=single-node" \
 -e ES_JAVA_OPTS="-Xms1g -Xmx1g" \
 --restart always \
 -v /home/docker/elastic/elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
 -v /home/docker/elastic/elasticsearch/data:/usr/share/elasticsearch/data \
 -v /home/docker/elastic/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
 --net network_network \
 -d elasticsearch:7.17.0

2.2 部署SkyWalking-Server

apache-skywalking-apm-es7-8.3.0.tar.gz 下载地址

  • 拉取镜像

 展开源码

docker pull apache/skywalking-oap-server:8.3.0-es7

  • 运行 skywalking-oap-server 容器     SW_STORAGE:数据存储配置,支持H2,MySQL、ES等,这里改为 elasticsearch7

          配置文件路径:apache-skywalking-apm-bin-es7/config/application.yml

SkyWalking 默认使用12800作为Rest API通信端口,11800为gRPC API端口

 展开源码

docker run -d --name skywalking-oap \
-e TZ=Asia/Shanghai \
-p 12800:12800 -p 11800:11800 \
--link elasticsearch:elasticsearch \
--net network_network \
-e SW_STORAGE=elasticsearch7 \
-e SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200 \
apache/skywalking-oap-server:8.3.0-es7
 

2.3 部署SkyWalking-UI

配置文件路径:apache-skywalking-apm-bin-es7/webapp/webapp.yml

  • 拉取镜像

 展开源码

docker pull apache/skywalking-ui:8.3.0
  • 运行 skywalking-ui 容器

 展开源码

docker run -d --name skywalking-ui \
-e TZ=Asia/Shanghai \
-p 8088:8080 \
--link skywalking-oap:skywalking-oap \
--net network_network \
-e SW_OAP_ADDRESS=skywalking-oap:12800 \
apache/skywalking-ui:8.3.0

3、应用接入

注意:agent 中指定服务名(SW_AGENT_NAME),不同的服务用不同的服务名区分。如果服务名相同,相当于是多个实例。

3.1 jar包部署方式

  • 将skywalking安装包下的agent整个目录(apache-skywalking-apm-bin-es7/agent),拷贝到应用机器所在的目录,如:/home/docker/

  • 在启动的脚本上添加 skywalking-agent配置:

配置参数

描述

-javaagent

配置skywalking-agent.jar位置,确保这个参数在-jar参数之前

-DSW_AGENT_NAME

配置应用名称,用于区分不用的服务

-DSW_AGENT_COLLECTOR_BACKEND_SERVICES

配置server的服务地址

 展开源码

java -javaagent:/home/docker/agent/skywalking-agent.jar
-DSW_AGENT_NAME=gateway
-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800
-Dserver.port=9999 -Xmx128m -Xms128m -XX:MaxMetaspaceSize=128m
-jar gateway.jar 

3.2 dockerfile方式

  • 将skywalking安装包下的agent整个目录(apache-skywalking-apm-bin-es7/agent),拷贝到应用机器所在的目录,如:/home/docker/

  • docker-compose.yml

docker-compose.yml 展开源码

  # skywalking-aop
  skywalking-oap:
    image: apache/skywalking-oap-server:8.3.0-es7
    container_name: skywalking-oap
    links:
      - elasticsearch:elasticsearch
    restart: always
    ports:
      - 11800:11800
      - 12800:12800
    environment:
      TZ: Asia/Shanghai
      SW_STORAGE: elasticsearch7
      SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
      JAVA_OPTS: "-Xms512m -Xmx512m"
    networks:
      - network

  # skywalking-ui
  skywalking-ui:
    image: apache/skywalking-ui:8.3.0
    container_name: skywalking-ui
    links:
      - skywalking-oap:skywalking-oap
    restart: always
    ports:
      - 8088:8080
    environment:
      TZ: Asia/Shanghai
      SW_OAP_ADDRESS: skywalking-oap:12800
    networks:
      - network
 

4、SkyWalking UI 界面说明

4.1 仪表盘

4.1.1 APM

APM 应用性能管理,分为全局维度、服务维度、实例维度、端点维度

(1)全局维度
  • Service Load:服务每分钟请求数
  • Slow Services:慢响应服务,服务耗时最长的一次耗时时间
  • Un-Health Services(Apdex):服务性能健康指数,0~1
  • Slow EndPoints:慢响应的端点
  • Global Response Latency:不同百分比的响应延时时间
  • Global Heatmap:热力图

(2)服务维度
  • Service Apdex:服务性能指数
  • Service Apdex(折线图):
  • Service Avg Response Time:平均响应时间
  • Global Response Time Percentile:百分比的响应时间
  • Successful Rate:请求成功率
  • Successful Rate(折线图):不同时间的请求的成功率
  • Service Load:每分钟请求数
  • Service Load(折线图):不同时间的每分钟请求数
  • Service Instances Load:每个服务实例的每分钟请求数
  • Slow Service Instances:服务实例的最大延时
  • Service Instances Successful Rate:服务实例的请求成功率

(3)实例维度
  • Service Instances Load:服务实例的每分钟请求数
  • Service Instances Successful Rate:服务实例的请求成功率
  • Service Instances Latency:服务实例的响应延时
  • JVM CPU:占用CPU的百分比
  • JVM Memory:内存占用大小
  • JVM GC Time:垃圾回收时间,包括Young GC 和 Old GC
  • JVM GC Count:垃圾回收次数
  • JVM Thread Count:JVM 创建线程数量
  • CLR xxx:

(4)端点维度
  • EndPoint Load in Current Service:每个端点的每分钟请求数
  • Slow Endpoints in Current Service:每个端点的最慢请求时间
  • Successful Rate in Current Service:每个端点的请求成功率
  • Endpoint Load:当前端点每个时间段的请求数据
  • Endpoint Avg Response Time:端点请求的平均响应时间
  • Endpoint Response Time Percentile:当前端点每个时间段的响应时间占比
  • Endpoint Successful Rate:当前端点每个时间段的请求成功率

4.1.2 数据库

展示数据库的响应时间、响应时间分布、吞吐量、SLA、慢SQL等详细信息,便于直观展示数据库状态

  • Database Avg Response Time:数据库平均响应时间
  • Database Access Successful Rate:数据库的访问成功率
  • Database Traffic:数据库每分钟请求数
  • Database Access Latency Percentile:数据库不同比例的响应时间
  • Slow Statements:前N个慢查询
  • All Database Loads:所有数据库中的每分钟请求数排名
  • Un-Health Databas:所有数据库的请求成功率排名

4.1.3 Istio、SelfObservability 、WebBrowser

这几个比较次用,用得不多,不详细介绍

  • Istio:结合Istio,适配容器、采集容器信息
  • SelfObservability:监控SkyWalking自身信息
  • WebBrowser:8.2.0 版本新增的浏览器,提供PV、UV等数据。需结合 Skywalking-Client-js 使用

SkyWalking自监控(SelfObservability)的配置:

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

修改内容:

Prometheus-fetcher 的selector修改为:default

telemetry的selector修改为:prometheus

SelfObservability:

4.2 拓扑图

服务之间的调用关系。每条连线的颜色反应了服务之间的调用延迟情况,可以非常直观的看到服务与服务之间的调用状态,连线中间的点能点击,可显示两个服务之间链路的平均响应时间、吞吐率以及SLA等信息

4.3 追踪

显示请求的代码内部执行情况,一个完整的请求都经过了哪些服务、执行了哪些代码方法、每个方法的执行时间、执行状态等详细信息,快速定位代码问题

  • 左侧:端点信息列表(API接口列表),红色——异常请求;蓝色——正常请求
  • 右侧:请求追踪列表,请求中连接各端点的先后顺序和时间

4.4 性能剖析

  • 服务:需要分析的服务
  • 端点:链路监控中的端点名称(可以在链路追踪中查看端点信息)
  • 监控时间:采集数据的开始时间
  • 监控持续时间:采集数据的时间长度
  • 起始监控时间:多少毫秒后开始进行采集
  • 监控间隔:多少毫秒采集一次
  • 最大采样数:最大采集多少样本

4.5 日志

参考:微服务链路追踪 Skywalking 生成 Trace ID 以及 logback 日志归集-CSDN博客

在应用代码中添加依赖

 展开源码

<!--skywalking trace工具包-->
<dependency>
  <groupId>org.apache.skywalking</groupId>
  <artifactId>apm-toolkit-trace</artifactId>
  <version>${skywalking.version}</version>
</dependency>

4.6 告警

参考:Skywalking-告警功能实践_from(endpoint.*).filter(responsecode in [404,500,5-CSDN博客

5、其他相关的配置

5.1 数据清理机制

配置文件路径:apache-skywalking-apm-bin-es7/config/application.yml

 展开源码

core:
  selector: ${SW_CORE:default}
  default:
        # 数据清理机制的开关,默认开启
    enableDataKeeperExecutor: ${SW_CORE_ENABLE_DATA_KEEPER_EXECUTOR:true}
        # 数据清理定时器周期,默认5,单位分钟
    dataKeeperExecutePeriod: ${SW_CORE_DATA_KEEPER_EXECUTE_PERIOD:5}
        # 明细记录数据的有效期,默认3天
    recordDataTTL: ${SW_CORE_RECORD_DATA_TTL:3} # Unit is day
        # 指标数据的有效期,默认7天
    metricsDataTTL: ${SW_CORE_METRICS_DATA_TTL:7} # Unit is day

5.2 数据存储和写入优化(针对ES)

主要是进行bulk 批量写入调整,buffer 优化等,具体参见《elasticsearch写入速度优化》

5.3 链路过长问题

往往就是循环中调用其他服务 或 循环操作数据库;或者 定时任务重跑批处理

方案:

1、不加入链路追踪,直接ignore url 配置忽略

2、业务代码处理,数据库批量更新操作

6、参考文档:

【1】Skywalking分布式追踪与监控(Skywalking分布式追踪与监控)

【2】破解 Java Agent 探针黑科技 (破解 Java Agent 探针黑科技)

【3】elasticsearch 写入速度优化 (elasticsearch 写入速度优化)

【4】SkyWalking 数据清理机制 (SkyWalking 数据清理机制)

【5】开启Apache SkyWalking的自监控 (开启Apache SkyWalking的自监控)

【6】Skywalking-告警功能实践 (Skywalking-告警功能实践

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1704268.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

clickhouse——ck目录介绍

一、ck目录 1、/etc/clickhouse-server: 服务端的配置文件目录&#xff0c;包括全局配置config.xml和用户配置users.xml等。 2、/var/lib/clickhouse 默认的数据存储目录&#xff08;通常会修改默认路径配置&#xff0c;将数据保存到大容量磁盘挂载的路径&#xff09; 3、/var…

电脑不能远程桌面连接不上,电脑无法建立远程桌面连接如何解决?

电脑无法建立远程桌面连接的问题&#xff0c;通常涉及到多个层面的因素&#xff0c;包括但不限于网络设置、系统配置、防火墙设置以及服务状态等。以下是一些专业性的解决方案&#xff0c;以帮助您解决这一问题。 首先&#xff0c;我们需要检查网络连接。远程桌面连接需要稳定的…

【数据库】通过一个实例来认识数据流图DFD

导读&#xff1a;通过一个实例&#xff08;数据中台&#xff09;说明数据流图DFD的作用、介绍了常见的数据流图元素及其标准符号以及如何画数据流图。数据流图主要被分析师、系统设计师、流程优化专家、系统管理员以及与系统开发和维护相关的人员查看和使用。对于刚考完2024年5…

怎样在网上赚点零花钱?推荐十个正规的赚钱兼职平台

今天要和大家探讨一个激动人心的话题——网络赚钱。在这个互联网日新月异的时代&#xff0c;网络赚钱已经变成了触手可及的现实。如果你正打算在网上赚取一些额外收入&#xff0c;那么这篇文章绝对值得一读&#xff01; 在这个信息泛滥的时代&#xff0c;网络赚钱的机遇随处可…

redis数据操作相关命令

1.list操作 1.1 rpush rpush&#xff1a;新的元素添加到list最右边 #从右边依次往List添加1,2,3 RPUSH name 1 RPUSH name 2 RPUSH name 3#查看列表&#xff1a;返回 1,2,3 LRANGE name 0 -1结果如下&#xff1a; 1.2 lpush lpush&#xff1a;新加的元素在list最左边 #从…

U8G2移植到STM32,SSD13XXXOLED(硬件SPI DMA通讯)

文章目录 一、前言1.1 U8g2的特点1.2 U8G2的优势1.3 U8G2的下载地址1.4 U8g2支持的显示控制器 二、STM32Cubexm SPI DMA配置2.1 SPI设置为半双工模式2.2 SPI DMA设置2.3 oled其他引脚配置 三、移植U8G2框架3.1 精简U8G2库文件3.2 去掉csrc文件夹中无用的驱动文件3.3 文件移动到…

【Java reentrantlock源码解读】

今天学习一下Java中lock的实现方式aqs 直接上图这是lock方法的实现类、分为公平锁和非公平锁两种。 先看非公平的实现方法、很暴力有木有&#xff0c;上来直接CAS&#xff08;抢占锁的方法&#xff0c;是一个原子操作&#xff0c;没有学过的同学自行百度哦&#xff09;&#…

香橙派 Kunpeng Pro使用教程:从零开始打造个人私密博客

一、引言 在这个日益互联的世界中&#xff0c;单板计算机已经成为创新和个性化解决方案的重要载体。而在单板计算机领域&#xff0c;香橙派 Kunpeng Pro凭借其强大的性能和灵活的应用潜力&#xff0c;正逐渐吸引着全球开发者和技术爱好者的目光。 作为一款集成了华为的鲲鹏处…

蓝牙模块、WiFi模块等无线通信模块使用规范

在当今的科技时代&#xff0c;无线通信模块已经广泛应用于各类电子设备中。特别是蓝牙模块、WiFi模块等无线模块&#xff0c;它们为设备间的通信提供了便利&#xff0c;使得我们的生活更加便捷和高效。然而&#xff0c;为了确保这些无线模块正常工作并避免可能的安全隐患&#…

I.MX6ULL的蜂鸣器实验-GPIO输出实验

系列文章目录 I.MX6ULL的蜂鸣器实验 I.MX6ULL的蜂鸣器实验 系列文章目录一、前言二、有源蜂鸣器简介三、硬件原理分析四、程序编写4.1程序编写前提工作4.2程序编写 五、编译下载验证5.1编写 Makefile 和链接脚本5.2编译下载 一、前言 在 I.MX6U-ALPHA 开发板上有一个有源蜂鸣器…

MYSQL框架结构

MYSQL框架结构 通过解析器和预处理生成解析树&#xff0c;预处理判断是否合法&#xff0c;如果合法则调用优化器去进行优化。

PYQT5点击Button执行多次问题解决方案(亲测)

PYQT5点击Button却执行多次问题 使用pyqt5时遇到问题&#xff0c;UI上按钮点击一次&#xff0c;对应的槽函数却执行了3遍 首先&#xff0c;确认函数名无冲突&#xff0c;UI button名无命名冲突&#xff0c;下图是简单的示例程序&#xff1a; 运行后&#xff0c;点击按钮&#…

探秘萤瓴优选短视频带货软件,开启新时代的电商创业方式

探秘萤瓴优选短视频带货软件&#xff0c;开启新时代的电商创业方式 随着移动互联网的飞速发展&#xff0c;电商行业迎来了前所未有的变革。短视频带货作为一种新兴的电商模式&#xff0c;以其直观、生动、互动性强的特点&#xff0c;迅速成为市场的新宠。在这个背景下&#xf…

银行软件测试有哪些测试点?一般银行的软件测试工作流程有哪些?

银行测试行业前景广阔&#xff0c;随着金融科技的快速发展和银行业务的不断创新&#xff0c;银行对软件测试的需求也在持续增长。软件测试在确保银行系统软件的稳定性、安全性和可靠性方面起着至关重要的作用&#xff0c;因此&#xff0c;银行测试岗位一直受到广泛的关注和重视…

TIM(Timer)简介

TIM&#xff08;Timer&#xff09;定时器介绍 定时器可以对输入的时钟进行计数&#xff0c;并在计数值达到设定值时触发中断16位计数器、预分频器、自动重装寄存器的时基单元&#xff0c;在72MHz计数时钟下可以实现最大59.65s的定时不仅具备基本的定时中断功能&#xff0c;而且…

基于香橙派 Ai Pro的ROS Qt人机交互软件部署指南

一&#xff0c;前言 最近收到了CSDN的邀请,对香橙派新出的Ai Pro进行测评: 说来也巧&#xff0c;其实香橙派本人对其映像挺深刻的,在2017年左右,本人刚上大学,当时是在淘宝购买树莓派&#xff0c;发现有个叫香橙派的国产板子&#xff0c;性能跟树莓派差不多吧&#xff0c;但是…

不是从APP store下载的APP在mac上一直提示有损坏,打不开怎么办?

1.点击设置 2.安全与隐私 3.通用看看允许从以下位置下载的APP是否有任何来源 4.如果没有&#xff0c;mac桌面点击&#x1f50d;输入终端或Terminal 命令行输入下述代码&#xff1a; sudo spctl --master-disable 5.回车&#xff0c;输入mac开机密码。注意&#xff1a;此时密…

探索循环逻辑:for逻辑分支与容器遍历的深度剖析

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;for逻辑与循环体的奥秘 二、for逻辑与循环体的结合使用 1. 函数与循环…

Spring-Cloud-OpenFeign源码解析-04-调用流程分析

在Spring-Cloud-OpenFeign源码解析-03-FeignClientFactoryBean分析到&#xff0c;通过Autowired或者Resource注入FeignClient实例的时候&#xff0c;实际上返回的是JDK动态代理对象&#xff0c;具体的实现逻辑在InvocationHandler的invoke方法中 回看ReflectiveFeign.newInsta…

Tower for Mac——高效版本控制的得力助手

在编程的世界里&#xff0c;版本控制是每一个开发者都离不开的工具。Tower for Mac&#xff0c;就是这样一款高效、易用的版本控制软件。 Tower for Mac拥有直观易用的界面&#xff0c;无论是提交代码、创建分支还是解决冲突&#xff0c;都能让开发者轻松应对。它支持多仓库管…