应用性能管理工具-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打入到基础镜像中
相关推荐
洒满阳光的午后1 天前
我做了一个“能理解业务语义”的可观测性 MCP Server:统一接入 Prometheus、OpenObserve 和 SkyWalking
人工智能·ai·prometheus·skywalking·openobserve·mcp
梵得儿SHI1 天前
SpringCloud 实战落地:可观测性建设(SkyWalking + Prometheus + Grafana)从 0 到 1 生产级部署
grafana·prometheus·springcloud·skywalking·微服务可观测性·线上问题排查
Jinkxs3 天前
SkyWalking - Spring Cloud Alibaba 全链路追踪实战
skywalking
烛之武4 天前
Skywalking服务链路追踪与Jemeter压力测试
压力测试·skywalking
鬼先生_sir4 天前
Spring Cloud 微服务监控实战:SkyWalking + Prometheus+Grafana 全栈解决方案
运维·spring cloud·grafana·prometheus·skywalking
dgvri10 天前
Skywalking介绍,Skywalking 9.4 安装,SpringBoot集成Skywalking
spring boot·后端·skywalking
rOuN STAT11 天前
Skywalking介绍,Skywalking 9.4 安装,SpringBoot集成Skywalking
spring boot·后端·skywalking
危笑ioi11 天前
helm部署skywalking链路追踪 java
java·开发语言·skywalking
MmeD UCIZ12 天前
Skywalking介绍,Skywalking 9.4 安装,SpringBoot集成Skywalking
spring boot·后端·skywalking
专注API从业者12 天前
淘宝 API 调用链路追踪实战:基于 SkyWalking/Pinpoint 的全链路监控搭建
大数据·开发语言·数据库·skywalking