APM
工具来分析系统中存在的各种性能指标问题以及调用关系。目前主流的APM工具有CAT
、Zipkin
、Pinpoint
以及SkyWalking
,本文主要简单介绍一下SkyWalking
的搭建。二、SkyWalking的组成
SkyWalking主要的几个组成模块。
1、Agent 主要负责从系统中采集各种指标,链路数据,发送给 oap服务。
2、oap服务接收Agent发送过来的数据,存储,执行分析,提供查询和报警功能。
3、Storage和UI负责存储数据以及查看数据。
总体架构
核心架构
告警平台
三、应用
1、错误数量监控
通过java agent拦截系统异常,可以方便的观察到某个时间范围内,应用内部的异常数量。skywalking自身也有服务error数量的统计,但这种统计维度是trace级的,很多时候即使服务请求内部出现了异常,也要通过一些容错方式,返回用户端请求成功,所以仅凭skywalking统计的trace error还不足够分析线上问题,所以我们开发了这个功能。
2、服务依赖关系
在实际的开发过程中,我们经常面临这样的一些问题:
- 某个服务的上下游服务是什么。
- 服务依赖了哪些基础设施,这些基础设施的运行状态如何。
为了解决这些问题,我们从skywalking后端存储中,周期性同步了trace增量数据,生成了服务拓扑关系,并使用cmdb管理服务与中间件的依赖关系。当选择一个服务后,可以看到这个服务的上下游依赖关系以及所关联中间件的运行状态。
选择一个服务,在右侧的资源信息中可以看到这个服务所使用中间件的列表,点击链接,可以跳转到prometheus+grafana建立的看板上,查看这些中间件的运行状态,通过这种方式把研发+运维的工作视角统一起来,这也是devops所强调的理念。
3、核心链路监控
由于系统的复杂性以及告警规则设置的差异性,线上告警是经常发生的,为了避免被告警轰炸,我们又开发了核心链路监控功能,仅关注核心链路请求响应时间、错误率两个指标,可以快速判断业务主流程是否正常。
一个好的apm系统能够帮助开发人员快速的定位线上问题,cat的problem视图也是一个非常实用的功能,可以对problem进行分类汇总。