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

应用性能管理工具-SkyWalking

  • 前言

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

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

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

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

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

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

  1. SkyWalking

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

  1. Zipkin

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

  1. Cat

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

  • 埋点方式

名称

埋点方式

入侵性

pinpoint

探针

skywalking

探针

zipkin

http拦截器

cat

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

  • 数据存储

名称

存储方式

pinpoint

hbase

skywalking

es/mysql/tidb/h2/sharding sphere

zipkin

mysql/es/cassandra

cat

本地/hdfs/mysql

  • 最终选型(SkyWalking)

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

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

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

  • 架构组成

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

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

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

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

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

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

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

  • 异常请求堆栈信息打印

  • 部署&使用

版本说明:

SkyWalking:

apache-skywalking-apm-9.0.0

Agent:

apache-skywalking-java-agent-8.9.0

  • 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的连接器

  • agent配置

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

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

agent配置SkyWalking服务端地址

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

  • 本地调试

-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. Dockerfile中指定agent路径
    2. 将agent打入到基础镜像中

相关文章:

  • 目前最好用的爬虫软件是那个?
  • C++游戏
  • 追梦无Bug的软件世界
  • Web3.0 应用项目
  • Conda虚拟环境配置常见问题记录
  • 微服务sentinel解析部署使用全流程
  • 《RabbitMQ篇》Centos7安装RabbitMQ
  • window java17改成java 8
  • 关于TreeWidget在界面上显示规定小数位数的数据,在后台从界面上读取原始数据的方法
  • 【深度学习】(7)--神经网络之保存最优模型
  • 每日一题|1845. 座位预约管理系统|最小堆操作、优先队列
  • Linux系统中命令wc
  • 用css实现改变图片滤镜
  • Ubuntu20.04安装ros2
  • 2024必读NLP书籍!《自然语言处理:基于预训练模型的方法》附PDF!
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • Centos6.8 使用rpm安装mysql5.7
  • LeetCode算法系列_0891_子序列宽度之和
  • mockjs让前端开发独立于后端
  • text-decoration与color属性
  • 对JS继承的一点思考
  • 对超线程几个不同角度的解释
  • 删除表内多余的重复数据
  • 我是如何设计 Upload 上传组件的
  • 一个JAVA程序员成长之路分享
  • 云大使推广中的常见热门问题
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • 如何在招聘中考核.NET架构师
  • ​​​​​​​​​​​​​​Γ函数
  • #1015 : KMP算法
  • #考研#计算机文化知识1(局域网及网络互联)
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)关于pipe()的详细解析
  • 、写入Shellcode到注册表上线
  • .net core 连接数据库,通过数据库生成Modell
  • .NET Standard 的管理策略
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • @antv/g6 业务场景:流程图
  • @Import注解详解
  • @Transactional注解下,循环取序列的值,但得到的值都相同的问题
  • [ 代码审计篇 ] 代码审计案例详解(一) SQL注入代码审计案例
  • [1]-基于图搜索的路径规划基础
  • [120_移动开发Android]008_android开发之Pull操作xml文件
  • [ABC294Ex] K-Coloring
  • [BZOJ 3680]吊打XXX(模拟退火)
  • [BZOJ2281][SDOI2011]黑白棋(K-Nim博弈)
  • [C# 开发技巧]如何使不符合要求的元素等于离它最近的一个元素
  • [C#学习笔记]LINQ
  • [C/C++]数据结构 循环队列
  • [C++] 深入理解面向对象编程特性 : 继承
  • [CF494C]Helping People
  • [Day 44] 區塊鏈與人工智能的聯動應用:理論、技術與實踐