前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式链路追踪 Skywalking:告警和度量架构设计

分布式链路追踪 Skywalking:告警和度量架构设计

作者头像
35岁程序员那些事
发布2020-09-01 15:39:07
1.1K0
发布2020-09-01 15:39:07
举报

SkyWalking 是一个开源 APM 系统,包括针对 Cloud Native 体系结构中的分布式系统的监视、跟踪、诊断功能。核心功能如下:

- 服务、服务实例、端点指标分析

- 根本原因分析,在运行时分析代码

- 服务拓扑图分析

- 服务,服务实例和端点依赖性分析

- 检测到慢速服务和端点

- 性能优化

- 分布式跟踪和上下文传播

- 数据库访问指标。检测慢速数据库访问语句(包括 SQL 语句)

- 报警

SkyWalking 目前是 Apache 顶级项目,作为这么优秀的开源项目,它的架构设计理念肯定会有很多值得我们借鉴。

Skywalking 告警模块设计

Skywalking 的告警模块设计的非常完美,具体代码结构如下:

AlarmModuleProvider 主要功能:

- prepare() 方法,主要用于读取 alarm-settings.yml 里面的告警配置信息;注册告警规则监听器 AlarmRulesWatcher;初始化 NotifyHandler 通知回调处理器;绑定度量 service 服务 MetricsNotify 和通知回调处理器 NotifyHandler。

- start() 方法,主要用于开启模块化的动态配置中心,当然可以是 Skywalking 支持的任何配置中心,具体可以参考我的另外一篇文章(分布式链路追踪 SkyWalking:配置管理设计);将 AlarmRulesWatcher 和动态配置服务绑定,完成告警规则的实时动态刷新;告警数据持久化类的初始化,AlarmStandardPersistence,方便 Skywalking UI 的查询。

AlarmRulesWatcher 主要功能:

- 通过构造函数传入从配置文件中读取的默认告警规则参数,并完成一次告警规则变更的通知。

- 通知变更事件 EventType 主要分为 ADD、MODIFY、DELETE。

- AlarmRulesWatcher 继承 ConfigChangeWatcher,它是 Skywalking 的分布式配置中心的核心 API。

- notify 方法会被 ConfigWatcherRegister 触发,这个是分布式配置中心实现动态刷新的核心类,这样整个告警模块就实现了动态刷新。

NotifyHandler 主要功能:

- NotifyHandler 继承 MetricsNotify。

- MetricsNotify 指标通知服务应由报警模块提供者提供,并由存储核心驱动,接收指标值。报警模块提供商可以选择是否报警或如何报警。同时,存储核心会为生成的报警提供标准的持久性服务,如果报警引擎希望在 UI 中显示报警,需要继承这个类并实现方法 notify,完成保存。

- NotifyHandler 是整个度量指标系统和告警指标系统桥接的核心类,上层调用方是 AlarmEntrance.forward(Metrics metrics)

- 从度量数据 Metrics 中获取到元数据,并解析和构造 MetaInAlarm 数据。

- 从告警核心 AlarmCore 中获取到内存中正在运行的告警规则,当然是通过度量规则的名称来匹配告警规则,所以这就是为什么要在告警规则中要求度量名称要和度量规则名称保持一致的原因。

- 遍历规则和告警元数据,生成告警信息,完成通知。

- NotifyHandler 目前支持三种类型的回调,AlarmStandardPersistence、WebhookCallback 和 GRPCCallback。

- 整个回调的初始化在 AlarmCore 中完成,会调用 `start(List<AlarmCallback> allCallbacks)`,完成所有的回调的初始化。会在 NotifyHandler 的 init 方法中完成。

- 如何注册服务 registerServiceImplementation,因为 Skywalking 整个平台都是采用服务化设计,每个服务都会归属于一个服务类型,然后通过插件化完成同一个服务类型的不同实现的灵活切换,这个是核心模块的核心原理。

综上所述告警模块整体架构设计如下:

原创不易,欢迎支持原创,能够给作者一定的打赏,也是作者持续输出优秀文章的动力。欢迎关注作者的gitchat账户和原文链接:

分布式链路追踪 Skywalking:告警和度量架构设计

https://gitbook.cn/new/gitchat/activity/5f0f1c95f257a6295caf208d

往期文章精选:

分布式链路追踪 Skywalking:插件化和模块化架构设计

分布式链路追踪Skywalking Skywalking 存储客户端设计

源码分析-分布式链路追踪:Skywalking存储插件能力-elasticsearch

游侠-一名对技术、管理、架构和业务孜孜不倦的高级码农

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 架构随笔录 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
微服务引擎 TSE
微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档