2.1:APM概述

APM系统:即应用性能管理。

早期APM工具功能比较单一,主要监控CPU使用率,I/O,内存资源,网速等网络基础设施,后来随着中间件技术不断发展,APM也开始监控缓存,数据库,MQ等各种基础设施性能。

微服务兴起后,系统功能被模块化,再加上k8s与容器化的兴起及应用数量爆炸增长,各模块和服务的调用链路,响应时间,负载越来越不好通过传统的工具进行监控和统计,此时APM系统诞生。

2.2:APM开源产品

1、CAT

由国内美团点评开源的,基于java语言开发,目前提供java, c/c++,nodejs,ptrhon,go等语言的客户端,监控数据会全量统计,国内很多公司再用,例如美团点评,携程,拼多多。CAT需要开发人员手动在应用程序中埋点,对代码侵入性比较强。

2、Zipkin

由Twitter公司开发并开源,基于JAV语言实现,侵入性相对于CAT要低一点,需要对web.xml等相关配置文件修改,但依然对系统有一定侵入性,Zipkin可以轻松与sparing ckloud进行集成,也是spring cloud推荐的APM系统。

3、Jaeger

是Uber推出的一款开源分布式追踪系统,主要使用go语言开发,对业务代码侵入性较少。

4、Pinpoint

韩国团队开源的APM产品,运用了字节码增强技术,只需要在启动时添加启动参数可实现APM功能。

5、SkyWalking

是国人开发,2017年skywalking成为Apache国内个人孵化项目,2019年skywalking从Apache毕业成为顶级项目,目前skywalking支持java,go,python等探针,数据存储支持MYSQL,ElasticSearch等。对业务代码无侵入。

6、开源的piwik

https://piwik.com/

7、商业:

百度统计/growingio等

8、APM对比

在这里插入图片描述

2.3:skywalking简介

2.3.1:特点

1、实现从请求追踪,指标收集和日志记录的完整信息记录。

2、多语言自动探针,支持Java,GO,PHP等客户端

3、内置服务网格可观察性,支持从Istio+Envoy Service mesh收集和分析数据

4、模块化架构,存储,集群管理,使用插件集合都可以进行自由选择。

5、支持告警。

6、优秀的可视化效果

2.3.2:组件

OAP平台(observability Analysis Platform,可观测性分析平台)或OAP server: 是一个高度件化的轻量级分析程序,兼容各种探针receiver,流失分析内核和查询内核三部分组成。

探针:基于无侵入式的收集,并通过HTTP或者GRPC方式发送数据到OAP Server

存储实现:支持多种存储并且提供了标准接口,可支持不同的存储后端。

UI:通过标准的GraphQL(Facebook在2012开源)协议进行统计数据查询和展示。

在这里插入图片描述

2.3.3:协议设计模式

面向协议设计:面向协议设计是skywalking从5.X开始严格遵守的首要设计原则,组件之间使用标准的协议进行数据交互。协议有探针协议和查询协议。

2.3.3.1:探针协议
探针上报协议: 协议包括语言探针的注册,metrics数据上报,Tracing数据上报等标准,Java,Go等探针都需要严格遵守此协议的标准。

探针交互协议:因为分布式追踪环境,探针间需要借助HTTP header,MQ header在应用之间进行通信和交互,探针交互协议定义了交互的数据格式。

Service Mesh协议:是skywalking对service mesh抽象的专有协议,任何mesh类的服务都可以通过此协议直接上传指标数据,用于计算服务的指标数据和绘制拓扑图。

第三方协议:对大型的第三方开源项目,尤其是service mesh核心平台Istio和Envoy,提供核心协议适配,支持针对Istio+Envoy Service Mesh进行无缝对接。
2.3.3.2:数据查询协议
元数据查询:查询在skywalking注册的服务,服务实例,Endpoint等元数据信息;

拓扑关系查询:查询全局,或者单个服务,endspoint的拓扑图及依赖关系

Metrics指标查询:查询指标数据

聚合指标查询:区间范围均值查询及Top N排名数据查询等

Trace查询:追踪数据的明细查询

告警查询:基于表达式,判断指标数据是否超出阈值。

2.3.4:skywalking设计

模块化设计:
   探针负责收集数据
   前端负责展示数据
   OAP Server负责从后端存储读写数据
   后端存储负责持久化数据
   
轻量化设计:
   skywalking在设计之初提出了轻量化设计理念,skywalking使用了最轻量级的jar包模式,实现了强大的数据处理和分析能力,可扩展能力和模块化能力。

2.3.5:优势

兼容性好:
支持传统的微服务部署架构dubbo和spring cloud,也支持云原生中的istio和envoy.

易于部署和后期维护:
组件化,可以自定义部署,后期横向扩容简单

高性能:
每天数T的数据无压力

易于二次开发:
标准的http和grpc协议,开源的项目,企业可以自主二次开发
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐