当前位置: 首页 > article >正文

应用性能管理工具-SkyWalking

  • 前言

随着微服务架构的流行,一次请求往往需要涉及到多个服务,因此服务性能监控和排查就变得更复杂,因此,就需要一些可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题。

而链路追踪的出现正是为了解决这种问题,它可以在复杂的服务调用中定位问题,还可以在新人加入后台团队之后,让其清楚地知道自己所负责的服务在哪一环。

除此之外,如果某个接口突然耗时增加,也不必再逐个服务查询耗时情况,我们可以直观地分析出服务的性能瓶颈,方便在流量激增的情况下精准合理地扩容。

这就是APM(应用性能管理)系统,全称:Application Performance Management tools。

  • 常用APM工具对比
  1. 基本信息
  1. Pinpoint

Pinpoint专注于链路和性能监控,韩国研发团队开源,埋点无侵入UI功能较强

  1. SkyWalking

SkyWalking是一个国产的开源框架,2015年有吴晟个人开源,2017年加入Apache孵化器,国人开源的产品,主要开发人员来自于华为。Skywalking专注于链路和性能监控,埋点无侵入,UI功能较强。能够加入Apache孵化器,设计思想及代码得到一定认可,后期应该也会有更多的发展空间及研发人员投入。目前使用厂商最多。版本更新较快。

  1. Zipkin

Zipkin由Twitter开源,调用链分析工具,基于spring-cloud-sleuth得到广泛使用,非常轻量使用部署简单

  1. Cat

CAT是一个更综合性的平台,提供的监控功能最全面,国内几个大厂生产也都在使用。但研发进度及版本更新相对较慢

  1. 埋点方式

名称

埋点方式

入侵性

pinpoint

探针

skywalking

探针

zipkin

http拦截器

cat

代码埋点(拦截器/注解/过滤器)

  1. 数据存储

名称

存储方式

pinpoint

hbase

skywalking

es/mysql/tidb/h2/sharding sphere

zipkin

mysql/es/cassandra

cat

本地/hdfs/mysql

  • 最终选型(SkyWalking)

综合考虑工具的使用人数、维护能力以及对项目本身的侵入性,最终决定采用Skywalking作为项目的APM工具。

  1. SkyWalking采用探针的方式对服务进行监控,即在代码层面对项目零侵入性。
  2. 使用人群多,社区活跃度高,版本更新快。
  3. UI功能较强,管理界面可直接观察多个指标参数。
  1. 简介

SkyWalking 是一个开源的分布式系统跟踪和性能监控工具,旨在帮助开发人员和运维团队监视、诊断和优化分布式系统的性能和行为。它提供了端到端的分布式跟踪、性能指标收集、报告和可视化能力。

  1. 架构组成

SkyWalking本身逻辑上分为四部分: 探针, 平台后端, 存储和用户界面。再加上监控的客户端应用服务,一套完整的监控体系最终可分为五个组成部分。

  1. 探针(agent 基于不同的来源可能是不一样的, 但作用都是收集数据, 将数据格式化为 SkyWalking 适用的格式。
  2. 平台后端 支持数据聚合, 数据分析以及驱动数据流从探针到用户界面的流程。分析包括 Skywalking 原生追踪和性能指标以及第三方来源,包括 Istio 及 Envoy telemetry , Zipkin 追踪格式化等。
  3. 存储 通过开放的插件化的接口存放 SkyWalking 数据。可以选择一个既有的存储系统, 如 ElasticSearch, H2 或 MySQL 集群(Sharding-Sphere管理)。
  4. UI 一个基于接口高度定制化的Web系统,用户可以可视化查看和管理 SkyWalking 数据。
  5. 应用服务 即被SkyWalking监控的客户端服务。
  1. 功能展示
  1. 展示微服务与其他应用及中间件交互关系,包括微服务间调用逻辑(naocs RPC调用、Http调用),各个微服务连接的中间件(MySQL、MongoDB、Redis、MQ)关系。

(某时间段内的调用网络)

  1. 展示被监控应用服务各项指标状态

  1. 展示所有请求记录,包括并不限于正常http业务请求

  1. 请求链路追踪,完整记录一次请求从开始到结束经过的每一步及每一步耗时时间

(服务间调用、请求外部系统、数据库交互)

  1. 异常请求堆栈信息打印

  1. 部署&使用

版本说明:

SkyWalking:

apache-skywalking-apm-9.0.0

Agent:

apache-skywalking-java-agent-8.9.0

  1. SkyWalking部署

SkyWalking本身的部署可以分为两个部分:Web UI (UI界面)+ OAP Server(后端服务)。

/webapp/application.yml可以修改Web UI服务的相关配置,其中包括UI服务本身端口和连接OAP服务的配置信息。

Skywaling-apm目录下/config/application.yml可以修改OAP Server的相关配置。

数据源配置

OAP Server需要配置一个数据源,用于服务本身的数据存储,默认提供了多种数据源实现:elasticsearch、mysql、h2、tidb、postpresql等等

选择其中一种作为服务的数据源

若选择mysql作为数据源,还需在/oap-libs目录下添加mysql的连接器

  1. agent配置

agent作为“探针”的功能,起到连接应用服务和SkyWalking的作用。

在启动应用服务时,启动参数加入指定值,即可将此应用服务接入SkyWalking服务端的监控。

agent配置SkyWalking服务端地址

Skywalking-agent目录下/config/agent.config

  1. 本地调试

-javaagent:/Users/renchen/develop/skywalking/agent/skywalking-agent-8.15.0/skywalking-agent.jar (指定agent探针位置)

-Dskywalking.agent.service_name=test-name(指定注册到SkyWalking服务端后该应用的名称)

-Dskywalking.agent.namespace=test-namespace(指定命名空间)

  1. 测试机部署

启动脚本配置参数

  1. 容器化部署
    1. Dockerfile中指定agent路径
    2. 将agent打入到基础镜像中

http://www.kler.cn/news/324819.html

相关文章:

  • 精通Maven:多模块项目中的依赖管理
  • 支付宝沙箱环境 支付
  • 18.Linux-配置DNF仓库
  • 15分钟学 Python 第29天 : 数据库基础
  • 【Linux】防火墙
  • 《马力欧+疯狂兔子 星耀之愿》风灵月影修改器秘籍:轻松征服星辰大海
  • 数据结构——顺序表(基础代码题)
  • 【chrome 插件】初窥
  • JAVA基础:AtomicInteger
  • 解锁高效工作的秘密武器
  • 足底筋膜炎怎么治疗才能彻底除根
  • 学习之什么是装饰器
  • 【django】django项目使用https访问+ssl证书
  • Java基于easyExcel的自定义表格格式
  • 租界服务器跑深度学习(一)服务器租用
  • vue3+AntvS2基本使用与导出excel
  • Golang | Leetcode Golang题解之第436题寻找右区间
  • 长文本溢出,中间位置显示省略号
  • 基于Node.js+Express+MySQL+VUE新闻网站管理系统的设计与实现
  • 小程序原生-地理定位功能介绍和实现
  • Service和Endpoints
  • 使用C#,MSSQL开发的钢结构加工系统
  • 如何在iPad上用Chrome实现无痕浏览
  • Acwing 快速幂
  • 力扣 简单 876.链表的中间结点
  • Leetcode面试经典150题-383.赎金信
  • 2024年【电工(高级)】考试题及电工(高级)考试内容
  • ISO 21434车辆网络安全风险评估的全面流程解析
  • 小柴冲刺软考中级嵌入式系统设计师系列二、嵌入式系统硬件基础知识(3)嵌入式系统的存储体系
  • 大模型落地需要一把“梯子”