一、APM介绍
APM(Application Performance Management)应用性能管理,通过各种探针采集并上报数据,收集关键指标,同时搭配数据展示以实现对应用程序性能管理和故障管理的系统化解决方案。
目前主要的一些 APM 工具有: Cat、Zipkin、Pinpoint、SkyWalking,这里主要介绍 SkyWalking ,它是一款优秀的国产 APM 工具,包括了分布式追踪、性能指标分析、应用和服务依赖分析等。
Zabbix、Premetheus、open-falcon等监控系统主要关注服务器硬件指标与系统服务运行状态等,而APM系统则更重视程序内部执行过程指标和服务之间链路调用情况的监控,APM更有利于深入代码找到请求响应"慢"的根本问题,与Zabbix之类的监控是互补关系。
二、分布式链路追踪
常见的微服务的框架,4 个实例,2 个 MySQL、1 个 Redis。实际上它有两次完全不同的请求进来:有一次的一个请求会访问 Redis,再去访问 MySQL;另外一个可能走到另外的服务上,然后直接去 MySQL。整个分布式追踪的目的是什么?是为了让我们最终在页面上、UI上、和数据上能够复现这个过程。我们要拿到整个完整的链路,包括精确的响应时间,访问的方法、访问的 circle,访问的 Redis 的 key等,这些是我们在做分布式追踪的时候需要展现的一个完整的信息。
三、Apache Skywalking(Incubator)简介
分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。
Apache Skywalking(Incubator)专门为微服务架构和云原生架构系统而设计并且支持分布式链路追踪的APM系统。Apache Skywalking(Incubator)通过加载 探针-非侵入式 的方式收集应用调用链路信息,并对采集的调用链路信息进行分析,生成应用间关系和服务间关系以及服务指标。Apache Skywalking (Incubating)目前支持多种语言,其中包括Java,.Net Core,Node.js和Go语言。另外社区还发展出了一个叫OpenTracing的组织,旨在推进调用链监控的一些规范和标准工作。
Skywalking支持从6个可视化维度剖析分布式系统的运行情况。
- 总览视图(Global view)是应用和组件的全局视图,其中包括组件和应用数量,应用的告警波动,慢服务列表以及应用吞吐量;
- 拓扑图(topology view)从应用依赖关系出发,展现整个应用的拓扑关系;
- 应用视图从单个应用的角度,展现应用的上下游关系,TopN的服务和服务器,JVM的相关信息以及对应的主机信息。
- 服务视图关注单个服务入口的运行情况以及此服务的上下游依赖关系,依赖度,帮助用户针对单个服务的优化和监控;
- 追踪(trace)展现了调用的单次请求经过的所有埋点以及每个埋点的执行时长;
- 告警视图(alarm)根据配置阈值针对应用、服务器、服务进行实时告警。