SkyWalking 分布式追踪系统

一、背景
随着微服务的越来越流行,我们服务之间的调用关系就显得越来越复杂,我们急需一个APM工具来分析系统中存在的各种性能指标问题以及调用关系。目前主流的APM工具有CATZipkinPinpoint以及SkyWalking,本文主要简单介绍一下SkyWalking的搭建。
 

二、SkyWalking的组成
SkyWalking主要的几个组成模块。
1、Agent 主要负责从系统中采集各种指标,链路数据,发送给 oap服务。
2、oap服务接收Agent发送过来的数据,存储,执行分析,提供查询和报警功能。
3、Storage和UI负责存储数据以及查看数据。

总体架构

核心架构

 告警平台

 

三、应用

1、错误数量监控

通过java agent拦截系统异常,可以方便的观察到某个时间范围内,应用内部的异常数量。skywalking自身也有服务error数量的统计,但这种统计维度是trace级的,很多时候即使服务请求内部出现了异常,也要通过一些容错方式,返回用户端请求成功,所以仅凭skywalking统计的trace error还不足够分析线上问题,所以我们开发了这个功能。

2、服务依赖关系

在实际的开发过程中,我们经常面临这样的一些问题:

  1. 某个服务的上下游服务是什么。
  2. 服务依赖了哪些基础设施,这些基础设施的运行状态如何。

为了解决这些问题,我们从skywalking后端存储中,周期性同步了trace增量数据,生成了服务拓扑关系,并使用cmdb管理服务与中间件的依赖关系。当选择一个服务后,可以看到这个服务的上下游依赖关系以及所关联中间件的运行状态。

选择一个服务,在右侧的资源信息中可以看到这个服务所使用中间件的列表,点击链接,可以跳转到prometheus+grafana建立的看板上,查看这些中间件的运行状态,通过这种方式把研发+运维的工作视角统一起来,这也是devops所强调的理念。

3、核心链路监控

由于系统的复杂性以及告警规则设置的差异性,线上告警是经常发生的,为了避免被告警轰炸,我们又开发了核心链路监控功能,仅关注核心链路请求响应时间、错误率两个指标,可以快速判断业务主流程是否正常。

一个好的apm系统能够帮助开发人员快速的定位线上问题,cat的problem视图也是一个非常实用的功能,可以对problem进行分类汇总。



原文地址:https://www.cnblogs.com/edeny/p/15694988.html