作者:文婷、不周
引言: 本篇文章次要介绍 RocketMQ 的可观测性工具在线上生产环境的最佳实际。RocketMQ 的可观测性能力当先业界同类产品,RocketMQ 的 Dashboard 和音讯轨迹等性能为业务外围链路保驾护航,有效应对线上大规模生产应用过程中遇到的容量布局、音讯收发问题排查以及自定义监控等场景。
音讯队列简介
进入主题之前,首先简要介绍下什么是阿里云的音讯队列?
阿里云提供了丰盛的音讯产品家族,音讯产品矩阵涵盖了互联网、大数据、物联网等各个业务场景的畛域,为云上客户提供了多维度可选的音讯解决方案。无论哪一款音讯队列产品,外围都是帮忙用户解决业务和零碎的异步、解耦以及应答流量洪峰时的削峰填谷,同时具备分布式、高吞吐、低提早、高可扩大等个性。
然而不同的音讯产品在面向客户业务的利用中也有不同的偏重。简略来做,音讯队列 RocketMQ 是业务畛域的首选音讯通道;Kafka 是大数据畛域不可或缺的音讯产品;MQTT 是物联网畛域的音讯解决方案;RabbitMQ 侧重于传统业务音讯畛域;云原生的产品集成和事件流通道是通过音讯队列 MNS 来实现;最初事件总线 EventBridge 是一个阿里云上的一个事件枢纽,对立构建事件核心。
本篇次要讲的是业务畛域的音讯首选通道:音讯队列 RocketMQ。RocketMQ 诞生于阿里的电商零碎,具备高性能、低提早、削峰填谷等能力,并且提供了丰盛的在业务和音讯场景上应答刹时流量洪峰的性能,被集成在用户的外围业务链路上。
作为一个外围业务链路上的音讯,就要求 RocketMQ 具备十分高的可观测性能力,用户能通过可观测性能力及时的监控定位异样稳定,同时对具体的业务数据问题进行排查。由此,可观测性能力逐渐成为音讯队列 RocketMQ 的外围能力之一。
那么什么是可观测能力呢?上面简略对可观测能力进行介绍。
可观测能力
提到可观测能力,大家可能最先想到的是可观测的三要素:Metrics(指标)、Tracing(追踪)和 Logging(日志)。
联合音讯队列的了解,可观测能力三要素的细化解释如下:
Metrics:Dashborad 大盘
1)指标涵盖丰盛: 蕴含音讯量、沉积量、各个阶段耗时等指标,每个指标从实例、Topic、生产 GroupID 多维度做聚合和展现;
2)音讯团队最佳实际模板: 为用户提供最佳模板,特地是在简单的生产音讯场景,提供了丰盛的指标帮忙疾速定位问题,并继续迭代更新;
3)Prometheus + Grafana: Prometheus 规范数据格式、利用 Grafana 展现,除了模板,用户也能够自定义展现大盘。
Tracing:音讯轨迹
1)OpenTelemetry tracing 规范: RocketMQ tracing 规范曾经合并到 OpenTelemetry 开源规范,标准和丰盛 messaging tracing 场景定义;
2)音讯畛域定制化展现: 依照音讯维度从新组织形象的申请 span 数据,展现一对多的生产,屡次生产信息,直观、不便了解;
3)可连接 tracing 链路上下游: 音讯的 tracing 可继承调用上下文,补充到残缺调用链路中,音讯链路信息串联了异步链路的上游和上游链路信息。
Logging:客户端日志标准化
1)Error Code 标准化: 不同的谬误有惟一的 error code;
2)Error Message 残缺: 蕴含残缺的错误信息和排序所须要的资源信息;
3)Error Level 标准化: 细化了各种不同错误信息的日志级别,让用户依据 Error、Warn 等级别配置更适合和监控告警。
理解音讯队列和可观测能力的根底概念,让咱们来看看当音讯队列 RocketMQ 遇到可观测,会产生什么样的火花?
RocketMQ 的可观测性工具的概念介绍
从上文的介绍中能够看到 RocketMQ 的可观测能力可能帮忙用户依据错误信息排查音讯在生产和生产过程中哪些环节出了问题,为了帮忙大家更好的了解性能的利用,先简要介绍下音讯生产生产流程过程中的一些概念。
音讯生产和生产流程概念
首先咱们先明确以下几个概念:
- Topic:音讯主题,一级音讯类型,通过 Topic 对音讯进行分类;
- 音讯(Message):音讯队列中信息传递的载体;
- Broker:音讯直达角色,负责存储音讯,转发音讯;
- Producer:音讯生产者,也称为音讯发布者,负责生产并发送音讯;
- Consumer:音讯消费者,也称为音讯订阅者,负责接管并生产音讯。
音讯生产和生产的流程简略来说就是生产者将音讯发送到 topic 的 MessageQueue 上进行存储,而后消费者去生产这些 MessageQueue 上的音讯,如果有多个消费者,那么一个残缺的一次音讯生产产生的生命周期是什么样子的?
这里咱们以定时音讯为例,生产者 Producer 发送音讯通过肯定的耗时达到 MQ Server,MQ 将音讯存储在 MessageQueue,这时队列中有一个存储工夫,如果是定时音讯,还须要通过肯定的定时工夫之后能力被消费者生产,这个工夫就是音讯就绪的工夫;通过定时的工夫后消费者 Consumer 开始生产,消费者从 MessageQueue 中拉取音讯,而后通过网络的耗时之后达到消费者客户端,这时候不是低码进行生产的,会有一个期待消费者资源线程的过程,等到消费者的线程资源后才开始进行真正的业务音讯解决。
从下面的介绍中能够看出,业务音讯有肯定的耗时解决,实现之后才会向服务端返回 ack 的后果,在整个生产和生产的过程中,最简单的便是生产的过程,因为耗时等起因,会常常有音讯沉积的场景,上面来重点看一下在音讯沉积场景下各个指标示意的含意。
音讯沉积场景
如上图,音讯队列中,灰色局部的音讯示意是已实现的音讯量,就是消费者已解决实现并返回 ack 的音讯;橙色局部的音讯示意这些音讯曾经被拉取到消费者客户端,正在被解决中,然而还没有返回处理结果的音讯,这个音讯其实有一个十分重要的指标,就是音讯解决耗时;最初绿色的音讯示意这些音讯在曾经产生的 MQ 队列中已存储实现,并且曾经是可被消费者生产的一个状态,称为已就绪的音讯。
已就绪音讯量(Ready messages):
含意:已就绪音讯的音讯的条数。
作用:音讯量的大小反映还未被生产的音讯规模,在消费者异常情况下,就绪音讯量会变多。
音讯排队工夫(Queue time)
含意:最早一条就绪音讯的就绪工夫和以后时间差。
作用:这个工夫大小反映了还未被解决音讯的时间延迟状况,对于工夫敏感的业务来说是十分重要的度量指标。
RocketMQ 的可观测性工具的性能介绍
联合上文介绍的音讯队列 RocketMQ 可观测概念,上面具体对 RocketMQ 的可观测性工具的两个外围性能进行介绍。
可观测性能介绍 – Dashboard
Dashboard 大盘能够依据各种参数查看指定的指标数据,次要的指标数据蕴含上面三点:
1)Overview(概览):
- 查看实例据总的音讯收发量、TPS、音讯类型散布状况。
- 查看是的各个指标以后的散布和排序状况:发送音讯量最多的 Topic、生产音讯量最多的 GroupID、沉积音讯量最多的 GroupID、排队工夫最长的 GroupID 等。
2)Topic(音讯发送):
- 查看指定 Topic 的发送音讯量曲线图。
- 查看指定 Topic 的发送成功率曲线图。
- 查看指定 Topic 的发送耗时曲线图。
3)GroupID(音讯生产):
- 查看指定 Group 订阅指定 Topic 的音讯量曲线图。
- 查看指定 Group 订阅指定 Topic 的生产成功率。
- 查看指定 Group 订阅指定 Topic 的生产耗时等指标。
- 查看指定 Group 订阅指定 Topic 的音讯沉积相干指标。
可观测性能介绍 – 音讯轨迹
在 Tracing 方面提供了音讯轨迹性能,次要蕴含以下三方面能力:
1)便捷的查问能力: 可依据音讯根本信息查问相干的轨迹;二期还能够依据后果状态、耗时时长来过滤查问,过滤出无效轨迹疾速定位问题。
2)具体的 tracing 信息: 除了各个生命周期的工夫和耗时数据,还蕴含了生产者、消费者的账号和机器信息。
3)优化展现成果: 不同的音讯类型轨迹;多个生产 GroupID 的场景;同个生产 GroupID 多次重投的场景等。
最佳实际
场景一:问题排查
1)指标: 音讯生产生产衰弱状况
2)准则
- 一级指标:用来报警的指标,公认的没有异议的指标。
- 二级指标:一级指标发生变化的时候,通过查看二级指标,可能疾速定位问题的起因所在。
- 三级指标:定位二级指标稳定起因。依据各自业务的特点和教训增加。
基于指标和准则,生产者用户和消费者用户问题排查和剖析形式如下:
场景二:容量布局
容量布局场景下只有解决上面三个问题:
1)问题一:怎么评估实例容量?
解决办法:
- 实例详情页》查看指定实例数据统计,能够看到所选时间段内的最大音讯收发的 TPS 峰值。
- 铂金版实例能够依据这个数据来增加报警监控和判断业务。
2)问题二:怎么查看标准版实例的耗费
解决办法:
- 能够查看概览总音讯量模块
3)问题三:有哪些已下线,须要清理资源?
解决办法:
- 指定一段时间内(例如近一周),按 Topic 的音讯发送量由小到大排序,查看是否有音讯发送量为 0 的 Topic,这些 Topic 相干的业务或者已下线。
- 指定一段时间内(例如近一周),按 GroupID 的音讯消费量由小到大排序,查看是否有音讯消费量为 0 的 GroupID,这些 GroupID 相干的业务或者已下线。
场景三:业务布局
业务布局场景下次要解决以下三个问题:
1)问题一:如何查看业务峰值散布状况?
解决办法:
- 查看 Topic 音讯接管量的每天的顶峰时间段。
- 查看 Topic 音讯接管量周末和非周某的音讯量差异。
- 查看 Topic 音讯接管量节假日的变动状况。
2)问题二:如何判断目前哪些业务有回升趋势?
解决办法:
- 查看音讯量辅助判断业务量变化趋势。
3)问题三:怎么优化消费者零碎性能?
解决办法:
- 查看音讯解决耗时,判断是否在正当范畴内有晋升的空间。
本篇文章通过音讯队列、可观测能力、RocketMQ 可观测概念及性能和最佳实际的介绍,出现了 RocketMQ 的可观测性工具在业务外围链路上的可视化能力,心愿给大家在日常的线上的一些问题排查和运维过程中带来一些帮忙。
点击 此处 ,体验 RocketMQ 的可观测性工具。