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进行分类汇总。

 

 

 



posted @   王竹笙  阅读(291)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示