一文上手skywalking【上】

news2024/9/28 23:31:21

一、skywalking预览

1.1 skywalking 概述


Apache SkyWalking, 适用于分布式系统的应用程序性能监控工具,专为微服务、云原生和基于容器的 (Kubernetes) 架构而设计。官方地址: https://skywalking.apache.org/
SkyWalking功能预览

  • 适用于分布式系统的应用程序性能监控工具,专为微服务、云原生和容器 (Kubernetes) 的架构而设计
  • 多数互联网公司里面用的技术,分布式架构下链路分析和性能定位最佳方案之一
  • 微服务架构下,链路性能和调用耗时分析是至关重要环节,Skywalking是必杀技之一
  • 在多数互联网公司中,Skywalking占有率很高,是近几年大量流行

1.2 为什么需要链路追踪?

观察下列链路调用关系,思考一下.
业务调用

  • 服务调用链路出现了问题怎么快速排查?
  • 服务调用链路耗时长怎么定位到是哪个服务?

分布式应用架构虽然满足了应用横向扩展的需求,但是运维和诊断的过程变得越来越复杂,例如会遇到接口诊断困难、应用性能诊断复杂、架构分析复杂等难题,传统的监控工具并无法满足,分布式链路系统由此诞生.

1.3 APM系统

Application Performance Management 【应用程序性能管理】, 简称APM系统.APM系统是可以对帮助系统的行为做性能分析的工具.APM系统,它是由谷歌公开的论文提到的,而到后面,许多的技术公司就基于这边论文的原理,开发出来很多出色的APM框架,比如:skywalking、zipkin等等.
skywalking是一款国产的开源框架,在2015年开源使用,在2017年的时候加入了Apache孵化器.skywalking是分布式应用程序的性能监控工具,专门是为了微服务(spring cloud)、云原生架构与容器架构(docker/k8s)而设计的.Skywalking作为APM工具,它具有分布式追踪、性能指标分析、应用和服务依赖分析等功能.
除了skywalking之外, Zipkin是由Twitter开源的链路分析分析工具,在springcloud sleuth得到了广泛的使用,具有轻量,部署简单的特点, 在实际开发当中也有着较为广泛的应用. 此次我们主要学习skywalking的基本用法.

二、skywalking环境搭建、配置

2.1 skywalking特点

skywalking具有多种监控手段,可以通过语言探针来获取监控数据.

  • 具有多种语言的自动探针。它包括了Java、net、node等
  • 具有轻量有高效的特点,不占用大量的服务器资源
  • 清晰的模块化,UI、存储、集群管理都有许多种机制供选择
  • 支持告警,具有优秀的可视化解决方案
  • 可以在多种环境下运行,例如:像注册中心Eureka和RPC dubbo等

2.2 skywalking整体架构

  • 注: 下图来源于官网
    skywalking架构
    整个架构分库四个部分,上下左右,这里考虑到描述更加简单直观,所以舍弃掉了Mtrics性能指标相关的东西,只关注Tracing链路相关功能.
  • 相关概念
  • skywalking-agent: 主要负责从应用程序中收集链路信息,然后把链路信息发送给skywalking OAP处理.OAP是指Observability Analysis Platform 即【可观测性分析平台】
  • skywalking OAP: 负责接收从skywalking-agent发送过来的Tracing数据信息,然后把数据信息给Analysis Core进行分析,把分析到的数据存储到外部的存储器当中,最后面把数据信息给Query Core提供查询数据的功能.
  • skywalking ui: 负责给用户查看链路等信息.
  • 上部分 Agent :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器。目前支持 SkyWalking、Zikpin、Jaeger 等提供的 Tracing 数据信息。而我们目前采用的是,SkyWalking Agent 收集 SkyWalking Tracing 数据,传递给服务器。
  • 下部分 SkyWalking OAP :负责接收 Agent 发送的 Tracing 数据信息,然后进行分析(Analysis Core) ,存储到外部存储器( Storage ),最终提供查询( Query )功能。
  • 右部分 Storage :Tracing 数据存储。目前支持 ES、MySQL、Sharding Sphere、TiDB、H2 多种存储器。而我们目前采用的是 ES ,主要考虑是 SkyWalking 开发团队自己的生产环境采用 ES 为主。
  • 左部分 SkyWalking UI :负责提供控台,查看链路等等。

2.3 组件介绍

  • 数据存储,可以使用h2、mysql、es等
  • skywalking-OAP-server, 安装到服务器
  • skywalking ui
  • skywalking-agent 【由项目引入】

相关操作环境为centos7,也可以考虑使用虚拟机.

2.4 安装ES7

  • centos7
  • docker
mkdir -p /mydata/es/config
mkdir -p /mydata/es/data
chmod 777 -R /mydata/es
echo "http.host: 0.0.0.0" >> /mydata/es/config/elasticsearch.yml

docker run -d --name rj_es7 -p 9200:9200 -p 9300:9300 \
  -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms256m -Xmx256m" \
  -v /mydata/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
  -v /mydata/es/data:/usr/share/elasticsearch/data \
  -v /mydata/es/plugins:/usr/share/elasticsearch/plugins elasticsearch:7.6.2

参数说明:

  • -e "discovery.type=single-node" 表示设置为设单节点启动
  • -e ES_JAVA_OPTS="-Xms128m -Xmx128m" 设置ES的初始内存和最大内存,如果云服务器内存足够大的情况下,可忽略,如果云服务器内存不宽裕,设置一下,防止ES启不来

安装成功之后,可以访问

http://your ip/_cat/nodes?v=true&pretty

es

2.5 安装skywalking-OAP-server

直接通过docker安装即可,如下所示:

docker run --name rj_oap --restart always -d -e TZ=Asia/Shanghai -p 12800:12800 -p 11800:11800 --link rj_es7 -e SW_STORAGE=elasticsearch7 -e SW_STORAGE_ES_CLUSTER_NODES=rj_es7:9200 apache/skywalking-oap-server:8.5.0-es7

参数说明

  • --link <name or id>:alias ,添加到另一个容器的链接,可以添加别名或者不加
  • --link后面的参数和elasticsearch容器名一致
  • SW_STORAGE=elasticsearch7 是固定写法,使用es7;
  • SW_STORAGE_ES_CLUSTER_NODES:rj-es7也可改为es服务器部署的Ip地址,比如ip:9200
  • 对于rj-es7这个容器名称,如果跟本文不同,则要修改为自己的es的容器名称

2.6 安装skywalking-ui

基于docker进行安装即可.

docker run -d --name rj_skywalking_ui \
--restart=always \
-e TZ=Asia/Shanghai \
-p 8080:8080 \
--link rj_oap \
-e SW_OAP_ADDRESS=rj_oap:12800 \
apache/skywalking-ui:8.5.0
  • 这里需要注意的是容器名称, 必须跟我们安装的oap容器名称匹配上.

安装完成之后,直接访问即可: ip:8080
skywalking-ui
查看es全部索引

http://ip:9200/_cat/indices?v=true&pretty

es索引

三、skywalking常见概念、性能指标说明

3.1 概念说明

示例图

  • 服务【service】

    • 就是服务,譬如说商品微服务
  • 实例【Instance】

    • 就是部署微服务的机器: 192.168.200.112
  • 端点【Endpoint】

    • 微服务对外提供的接口: /api/v1/user/list就是端点

3.2 性能指标

  • 用户的满意程度【service apdex】

    • 全称 Application Performance Index,最大值就是 1, 是一个不断优化的方向.
  • 分3个指标,T 值代表着用户对应用性能满意的响应时间界限或者说是期望值,假如T是0.5秒
  • 【满意】: 这样的响应时间让用户感到很愉快,响应时间少于 T 秒钟, 即 0.5秒内;
  • 【容忍】: 慢了一点,但还可以接受,继续这一应用过程,响应时间 T~4T 秒,即0.5~2秒内;
  • 【失望】: 太慢了,受不了了,用户决定放弃这个应用,响应时间超过 4T 秒,即大于2秒;
  • SLA
    • 服务等级协议,全称:service level agreement,为保障服务的性能和可用性
      • 9越多代表全年服务可用时间越长服务更可靠,候机时间越短
1= 365= 8760小时
99.9 = 8760 * 0.1% = 8760 * 0.001 = 8.76小时
99.99 = 8760 * 0.0001 = 0.876小时 = 0.876 * 60 = 52.6分钟
99.999 = 8760 * 0.00001 = 0.0876小时 = 0.0876 * 60 = 5.26分钟
根据以上的计算来看,只有全年停机5.26分钟,才能达到99.999%
  • CPM

    • 全称: call per minutes, 是吞吐量【throughput】指标, 每分钟请求调用的次数
  • RT

    • Response Time 表示请求响应时间,对于用户来说,响应时间最好不要超过2秒
  • Percent Response 百分位数统计

    • 表示采集样本中某些值的占比,skywalking 有 “p50、p75、p90、p95、p99” 等一系列值
    • 举例说明: “p99:360” 表示 99% 请求的响应时间在360ms以内

四、skywalking rocketbot ui介绍

4.1 skywalking ui控制栏

  • 仪表盘:查看被监控服务的运行状态
  • 拓扑图:以拓扑图的方式展现服务的关系
  • 追踪:以接口的形式查看调用链路
  • 性能剖析:对端点进行采样分析,分析性能瓶颈
  • 日志:可查看服务日志,包括我们自己打印的日志
  • 告警:触发告警的告警列表,包括了服务的失败率,超时等待
  • ui控制栏

4.2 Global

global

  • Services load:服务每分钟请求数
  • Slow Services:慢响应服务,单位ms
  • Un-Health services(Apdex): Apdex性能指标,1为满分
  • Slow Endpoint:慢响应端点,单位是ms
  • Global Response Latency:百分比响应延时,不同百分比的延时时间,单位ms
  • Global Heatmap:服务响应时间热力分布图,根据时间段内不同响应时间的数量显示颜色深度

4.3 Service

service

  • Service Apdex(数字):当前服务的性能评分
  • Service Apdex(折线图):不同时间的Apdex评分
  • Service Avg Response Times:平均响应延时,单位是ms
  • Service Response Time Percentile:百分比响应延时
  • Successful Rate(数字):请求成功率
  • Successful Rate(折线图):不同时间的请求成功率
  • Servce Load(数字):每分钟请求数
  • Servce Load(折线图):不同时间的每分钟请求数
  • Servce Instances Load:每个服务实例的每分钟请求数

4.4 Instance

instance

  • Service instance load:当前实例的每分钟请求数
  • Service Instance Successful Rate:当前实例的请求成功率
  • Service Instance Latency:当前实例的响应延时
  • JVM CPU:JVM占用CPU的百分比
  • JVM Memory:JVM内存占用大小,单位M
  • JVM GC Time:JVM垃圾回收时间,包含YGC和OGC
  • JVM GC Count:JVM垃圾回收次数,包含YGC和OGC
  • JVM Thread Count:JVM线程数量

监控CPU、内存等,Promethus是个更好的选择哦.

4.5 EndPoint

EndPoint

  • Endpoint Load in Current Service:每个端点的每分钟请求数
  • Slow Endpoints in Current Service:每个端点的最慢请求时间,单位ms【毫秒】
  • Successful Rate in Current Service:每个端点的请求成功率
  • Endpoint Load:当前端点每个时间段的请求数据
  • Endpoint Avg Response Time:当前端点每个时间段的请求行响应时间
  • Endpoint Response Time Percentile:当前端点每个时间段的响应时间占比
  • Endpoint Successful Rate:当前端点每个时间段的请求成功率

4.6 拓扑图

拓扑图

此页面当中,必须得有服务和数据之后才能查看到结果.

4.7 链路追踪

链路追踪

这里先提供数据之后才能展示出相关的结果.

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

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

相关文章

从密码学看盲拍合约:智能合约的隐私与安全新革命!

文章目录 前言一、什么是盲拍合约&#xff1f;二、盲拍合约的优势1.时间压力的缓解2.绑定与秘密的挑战 三、盲拍合约的工作原理1.提交盲出价2.披露出价3.结束拍卖4.退款机制 四、代码示例总结 前言 随着区块链技术的发展&#xff0c;智能合约在各种场景中的应用越来越广泛。盲…

番外篇 | 复现AC-YOLOv5,进行自动化织物缺陷检测

前言:Hello大家好,我是小哥谈。我们提出了一种基于AC-YOLOv5的新型纺织缺陷检测方法。将空洞空间金字塔池化(ASPP)模块引入YOLOv5主干网络中,提出了squeeze-and-excitation(CSE)通道注意力模块,并将其引入到YOLOv5主干网络中。🌈 目录 🚀1.基础概念 🚀2.添…

【d54_2】【Java】【力扣】142.环形链表

思路 关于判断是否重复的就hashSet&#xff0c;这种有主动去重性质的类 新建一个hashSet 遍历链表并放进hashSet&#xff0c; 如果不能放&#xff0c;说明这个遍历过&#xff0c;这个就是环的地方 如果最后到遍历到null&#xff0c;说明没环 代码 /*** Definition for s…

5.3 克拉默法则、逆矩阵和体积

本节是使用代数而不是消元法来求解 A x b A\boldsymbol x\boldsymbol b Axb 和 A − 1 A^{-1} A−1。所有的公式都会除以 det ⁡ A \det A detA&#xff0c; A − 1 A^{-1} A−1 和 A − 1 b A^{-1}\boldsymbol b A−1b 中的每个元素都是一个行列式除以 A A A 的行列式。…

基于微信小程序的网上商城+ssm(lw+演示+源码+运行)

摘 要 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;微信小程序被用户普遍使用&#xff0c;为方便用户能够可以…

STM32F407单片机编程入门(二十七)以太网接口详解及实战含源码

文章目录 一.概要二.单片机以太网系统基本结构1.OSI 七层模型2.单片机实现以太网功能组成 三.STM32F407VET6单片机以太网内部结构1.MII接口介绍2.RMII接口介绍 四.LWIP TCP/IP协议栈介绍五.PHY收发器LAN8720介绍1.LAN8720内部框图2.LAN8720应用电路3.LAN8720以太网模块 六.Cube…

在公司网络环境下,无法访问公共网络时,可在插件端配置网络代理后使用通义灵码

在公司网络环境下&#xff0c;无法访问公共网络时&#xff0c;可在插件端配置网络代理后使用通义灵码。 通义灵码插件下载&#xff1a;通义灵码_智能编码助手_AI编程-阿里云 配置网络代理 公司网络通常使用 HTTP 代理服务器在网络流量发送到目标位置之前进行拦截&#xff0c;以…

6--苍穹外卖-SpringBoot项目中菜品管理 详解(二)

目录 菜品分页查询 需求分析和设计 代码开发 设计DTO类 设计VO类 Controller层 Service层接口 Service层实现类 Mapper层 功能测试 删除菜品 需求设计和分析 代码开发 Controller层 Service层接口 Service层实现类 Mapper层 功能测试 修改菜品 需求分析和设…

Spring--boot自动配置原理案例--阿里云--starter

Spring–boot自动配置原理案例–阿里云–starter 定义这个starter的作用是它可以将阿里云的工具类自动放入IOC容器中&#xff0c;供人使用。 我们看一看构建starter的过程&#xff0c;其实就是在atuoconfigure模块中加入工具类&#xff0c;然后写一个配置类在其中将工具类放入…

【ChromeDriver安装】爬虫必备

以下是安装和配置 chromedriver 的步骤&#xff1a; 1. 确认 Chrome 浏览器版本 打开 Chrome 浏览器&#xff0c;点击右上角的菜单按钮&#xff08;三个点&#xff09;&#xff0c;选择“帮助” > “关于 Google Chrome”。 2. 下载 Chromedriver 根据你的 Chrome 版本&…

【研赛A题成品论文】24华为杯数学建模研赛A题成品论文+可运行代码丨免费分享

2024华为杯研究生数学建模竞赛A题精品成品论文已出&#xff01; A题 风电场有功功率优化分配 一、问题分析 A题是一道工程建模与优化类问题&#xff0c;其目的是根据题目所给的附件数据资料分析风机主轴及塔架疲劳损伤程度&#xff0c;以及建立优化模型求解最优有功功率分配…

哪些AI软件能轻松搞定你的文案、总结、论文、计划书?

大家好&#xff01;在我们每天紧张忙碌的生活中&#xff0c;有时候一天结束时&#xff0c;我们还有一堆事情等着处理。 图片 但别担心&#xff0c;今天我要为大家介绍几款AI软件&#xff0c;它们可以在你忙碌的一天结束后&#xff0c;成为你的得力助手&#xff0c;帮你轻松管…

初识Tomcat

Tomcat是一款可以运行javaWebAPP的服务器软件。 一个服务器想要执行java代码&#xff0c;则需要JRE&#xff08;jvm、java运行环境等&#xff09;&#xff0c;但是需要执行javaWEB项目则还需要服务器软件&#xff0c;Tomacat就是其中很流行的一款。因为一个javaWEB项目会有很多…

Accelerate单卡,多卡config文件配置

依赖库 from accelerate import Accelerator from accelerate import DistributedDataParallelKwargs ddp_kwargs DistributedDataParallelKwargs(find_unused_parametersTrue) accelerator Accelerator(kwargs_handlers[ddp_kwargs]) 代码中删除所有的.cuda() 或者to(devic…

Xshell连接服务器

一、Xshell-7.0.0164p、Xftp 7下载 1.1、文件下载 通过网盘分享的文件&#xff1a;xshell 链接: https://pan.baidu.com/s/1qc0CPv4Hkl19hI9tyvYZkQ 提取码: 5snq –来自百度网盘超级会员v2的分享 1.2、ip连接 下shell和xftp操作一样&#xff1a;找到文件—》新建—》名称随…

【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,1-1

文件下载与邀请翻译者 学习英特尔开发手册&#xff0c;最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。 讲解下载英特尔开发手册的文章 翻译英特尔开发手册&#xff0c;会是一件耗时费力的工作。如果有愿意和我一起来做这件事的&#xff0c;那么&#xff…

论文不同写作风格下的ChatGPT提示词分享

学境思源&#xff0c;一键生成论文初稿&#xff1a; AcademicIdeas - 学境思源AI论文写作 在学术论文写作中&#xff0c;不同的写作风格能显著影响文章的表达效果与读者的理解。无论是描述性、分析性、论证性&#xff0c;还是批判性写作风格&#xff0c;合理选择和运用恰当的写…

生成模型小结

突然发现之前整理的makedown有必要放在博客里面,这样不同的设备之间可以直接观看达到复习的效果. GAN G和D不断的博弈提高自己。GAN的优点是保真度比较高&#xff0c;缺点是多样性比较低。 (auto-encoder)AE&#xff0c;DAE、VAE、VQVAE 输入x&#xff0c;经过编码器生成&…

Elasticsearch学习笔记(2)

索引库操作 在Elasticsearch中&#xff0c;Mapping是定义文档字段及其属性的重要机制。 Mapping映射属性 type&#xff1a;字段数据类型 1、字符串&#xff1a; text&#xff1a;可分词的文本&#xff0c;适用于需要全文检索的情况。keyword&#xff1a;用于存储精确值&am…

二阶低通滤波器(Simulink仿真)

1、如何将S域传递函数转为Z域传递函数 传递函数如何转化为差分方程_非差分方程转成差分方程-CSDN博客文章浏览阅读4.1k次,点赞4次,收藏50次。本文介绍了如何将传递函数转化为差分方程,主要适用于PLC和嵌入式系统。通过MATLAB的系统辨识工具箱获取传递函数,并探讨了离散化方…