首页 > 其他分享 >RocketMQ-(7-1)-可观测-Metrics

RocketMQ-(7-1)-可观测-Metrics

时间:2023-09-13 10:38:17浏览次数:48  
标签:node le 观测 Metrics 消息 ms consumer RocketMQ


RocketMQ 以 Prometheus 格式公开以下指标。您可以使用这些指标监视您的集群。

  • 服务端 Metrics 指标
  • 生产者 Metrics 指标
  • 消费者 Metrics 指标

版本支持:以下指标 Metrics 是从 5.1.0 版本开始支持。

Metrics 指标详情

Metric types

消息队列 RocketMQ 版定义的 Metrics 完全兼容开源 Prometheus 的标准,提供的 Metrics 的类型为 Counter、Gauge 和 Histogram。更多信息,请参见 METRIC TYPES

服务端 Metrics 指标

消息队列 RocketMQ 版服务端相关 Metrics 指标中 Label 的说明如下:

  • cluster: RocketMQ 集群名称。
  • node_type: 服务节点类型。枚举值包含 proxy、broker、nameserver。
  • node_id: 服务节点 ID。
  • topic: 消息队列 RocketMQ 的主题。
  • message_type: 消息类型。有以下类型:
    Normal:普通消息;
    FIFO:顺序消息;
    Transaction:事务消息;
    Delay:定时/延时消息.
  • consumer_group: 消费者 ID。

Metrics 类型

Metrics name

单位

指标说明

Label

counter

rocketmq_messages_in_total

count

消息生产数量。

cluster,node_type,node_id,topic,message_type

counter

rocketmq_messages_out_total

count

消息消费数量。

cluster,node_type,node_id,topic, consumer_group

counter

rocketmq_throughput_in_total

byte

消息生产流入服务端的吞吐量。

cluster,node_type,node_id,topic,message_type

counter

rocketmq_throughput_out_total

byte

消息消费从服务端流出的吞吐量。

cluster,node_type,node_id,topic, consumer_group

histogram

rocketmq_message_size

byte

消息大小的分布情况,发送成功时统计。分布区间如下:

le_1_kb: ≤ 1 KB

le_4_kb: ≤ 4 KB

le_512_kb: ≤ 512 KB

le_1_mb: ≤ 1 MB

le_2_mb: ≤ 2 MB

le_4_mb: ≤ 4 MB

le_overflow: > 4 MB

cluster,node_type,node_id,topic,message_type

gauge

rocketmq_consumer_ready_messages

count

已就绪消息量。

cluster,node_type,node_id,topic, consumer_group

gauge

rocketmq_consumer_inflight_messages

count

处理中消息量。

cluster,node_type,node_id,topic, consumer_group

gauge

rocketmq_consumer_queueing_latency

millisecond

已就绪消息排队延迟时间。

cluster,node_type,node_id,topic, consumer_group

gauge

rocketmq_consumer_lag_latency

millisecond

消费处理延迟时间。

cluster,node_type,node_id,topic, consumer_group

counter

rocketmq_send_to_dlq_messages_total

count

转为死信状态的消息量。(变成死信状态指的是消息达到最大重投次数后不再投递)

cluster,node_type,node_id,topic, consumer_group

histogram

rocketmq_rpc_latency

millisecond

rpc 调用耗时:

le_1_ms

le_3_ms

le_5_ms

le_10_ms

le_100_ms

le_1_s

le_3_s

le_overflow

cluster,node_typ,node_id,protocol_type,request_code,response_code

gauge

rocketmq_storage_message_reserve_time

millisecond

储存层消息保存时间(broker 硬盘上最早一条消息储存时间和当前时间作差)

cluster,node_type,node_id

gauge

rocketmq_storage_dispatch_behind_bytes

byte

dispatch 落后大小

cluster,node_type,node_id

gauge

rocketmq_storage_flush_behind_bytes

byte

刷盘落后大小。

cluster,node_type,node_id

gauge

rocketmq_thread_pool_wartermark

count

线程池排队数

cluster,node_type,node_id,name

生产者 Metrics 指标

消息队列 RocketMQ 版生产者相关 Metrics 指标中 Label 的说明如下:

  • cluster: RocketMQ 集群名称。
  • node_type: 服务节点类型。枚举值包含 proxy、broker、nameserver。
  • node_id: 服务节点 ID。
  • topic: 消息队列 RocketMQ 的主题。
  • message_type: 消息类型。有以下类型:
    Normal:普通消息;
    FIFO:顺序消息;
    Transaction:事务消息;
    Delay:定时/延时消息.
  • client_id: 客户端 ID。
  • invocation_status: 消息发送接口调用结果,枚举值包含 success 和 failure。

Metrics 类型

Metrics name

单位

指标说明

Label

Histogram

rocketmq_send_cost_time

millisecond

调用消息发送接口成功的耗时分布情况。分布区间如下::

le_1_ms

le_5_ms

le_10_ms

le_20_ms

le_50_ms

le_200_ms

le_500_ms

le_overflow

topic,client_id,invocation_status

消费者 Metrics 指标

消息队列 RocketMQ 版消费者相关 Metrics 指标中 Label 的说明如下:

  • topic: 消息队列 RocketMQ 的主题。
  • consumer_group: 消费者分组 ID。
  • client_id: 客户端 ID。
  • invocation_status: 消费结果, 枚举值包含 success 和 failure。

Metrics 类型

Metrics name

单位

指标说明

Label

Histogram

rocketmq_process_time

millisecond

PushConsumer 的消息处理耗时分布情况.分布区间如下:

le_1_ms

le_5_ms  

le_10_ms

le_100_ms

le_10000_ms

le_60000_ms

le_overflow

topic,consumer_group,client_id,invocation_status

gauge

rocketmq_consumer_cached_messages

message

PushConsumer 本地缓冲队列中的消息条数。

topic,consumer_group,client_id

gauge

rocketmq_consumer_cached_bytes

byte

PushConsumer 本地缓冲队列中消息的总大小。

topic,consumer_group,client_id

Histogram

rocketmq_await_time

millisecond

消息在 PushConsumer 本地缓冲队列中的排队时间的分布情况:

le_1_ms

le_5_ms

le_20_ms

le_100_ms

le_1000_ms

le_5000_ms

le_10000_ms

le_overflow

topic,consumer_group,client_id

指标业务场景

消息队列 RocketMQ 版主要基于以下业务场景定义 Metrics 指标.

消息堆积场景

RocketMQ-(7-1)-可观测-Metrics_消息队列

上图表示指定主题的某一队列中各消息的状态,消息队列 RocketMQ 版将处于不同处理阶段的消息数量和耗时进行统计,这些指标可直接反映队列中消息的处理速率和堆积情况,通过观察这些指标可初步判断业务的消费是否异常。具体的指标含义和计算公式如下:

名称

描述

计算公式

处理中的消息(inflight messages)

在消费者客户端正在处理,但客户端还未返回消费结果的消息。

最晚一条拉取消息的位点-最晚一条提交消息的位点

已就绪消息(ready messages)

消息在消息队列 RocketMQ 版服务端已就绪,对消费者可见可被消费的消息。

最大消费位点-最晚一条拉取消息的位点

已就绪消息的就绪时间(ready time)

普通消息、顺序消息:消息存储到服务端的时间。 

定时/延时消息:消息定时或延时结束的时间。

  事务消息:事务提交的时间。

--

已就绪消息的排队时间(ready message queue time)

该时间反应消费者拉取消息的及时性。

当前时间-最早一条就绪消息的就绪时间

消费处理滞后时间(consumer lag time)

该时间反应消费者完成消息处理的及时性。

当前时间-最早一条未提交消息的就绪时间

PushConsumer 消费场景

在 PushConsumer 类型中,消息的实时处理能力是基于 SDK 内部的典型 Reactor 线程模型实现的。如下图所示,SDK 内置了一个长轮询线程,先将消息异步拉取到 SDK 内置的缓存队列中,再分别提交到消费线程中,触发监听器执行本地消费逻辑。
 

RocketMQ-(7-1)-可观测-Metrics_消息队列_02

在 PushConsumer 消费场景下,本地缓冲队列相关指标如下:

  • 本地缓冲队列中的消息量:本地缓冲队列中的消息总条数。
  • 本地缓冲队列中的消息大小:本地缓冲队列中所有消息大小的总和。
  • 消息等待处理时间:消息暂存在本地缓冲队列中的时间。

Metrics 指标获取方式

目前支持 gRPC OTLP 和 Prometheus 两种 exporter

gRPC OTLP exporter

gRPC OTLP exporter 会周期性地向指定的 OpenTelemetry Collector 上报 metrics

前置条件:需要部署支持 GRPC OpenTelemetry Protocol 的 OpenTelemetry Collector

开启 Broker metrics 的 gRPC OTLP exporter 需要进行以下配置:

  1. 将 metricsExporterType 设置为 OTLP_GRPC
  2. 将 getMetricsGrpcExporterTarget 设置为 OpenTelemetry Collector 提供的 endpoint

可选配置:

  1. metricsGrpcExporterHeader:为 gRPC OTLP exporter 附加请求头,格式为 key1:value1,key2:value2
  2. metricGrpcExporterTimeOutInMills:设置 gRPC OTLP exporter 的请求超时时间
  3. metricGrpcExporterIntervalInMills:设置 gRPC OTLP exporter 的上报间隔

Prometheus exporter

Prometheus exporter 仅支持 Pull 模式和 Cumulative 聚合,详见 OpenTelemetry Metrics Exporter - Prometheus

开启 Broker metrics 的 Prometheus exporter 需要进行以下配置:

  1. 将 metricsExporterType 设置为 PROM

访问 http://<broker-ip>:5557/metrics 来查看 metrics,在 Prometheus 中配置服务发现或手动配置拉取任务即可采集 metrics

可选配置:

  1. metricsPromExporterPort:Broker 暴露 metrics 服务的端口号,默认为 5557
  2. metricsPromExporterHost:暴露 metrics 服务的主机名,默认为 Broker 向 NameServer 注册的地址,即 brokerIP1

标签:node,le,观测,Metrics,消息,ms,consumer,RocketMQ
From: https://blog.51cto.com/ratelcloud/7452245

相关文章

  • RocketMQ教程-(6-2)-运维部署-Admin Tool
    执⾏命令⽅法:./mqadmin{command}{args}⼏乎所有命令都需要配置-n表⽰NameServer地址,格式为ip:port⼏乎所有命令都可以通过-h获取帮助如果既有Broker地址(-b)配置项又有clusterName(-c)配置项,则优先以Broker地址执⾏命令,如果不配置Broker地址,则对集群中所有主机执⾏命令......
  • RocketMQ教程-(5)-功能特性-消费者分类
    ApacheRocketMQ支持PushConsumer、SimpleConsumer以及PullConsumer这三种类型的消费者,本文分别从使用方式、实现原理、可靠性重试和适用场景等方面为您介绍这三种类型的消费者。背景信息ApacheRocketMQ面向不同的业务场景提供了不同消费者类型,每种消费者类型的集成方式和......
  • RocketMQ-(8-1)-EventBridge-EventBridge 核心概念
    RocketMQEventBridge核心概念理解EventBridge中的核心概念,能帮助我们更好的分析和使用EventBridge。本文重点介绍下EventBridge中包含的术语:EventSource:事件源。用于管理发送到EventBridge的事件,所有发送到EventBridge中的事件都必须标注事件源名称信息,对应CloudEvent事件体中的s......
  • RocketMQ-(9-1)-MQTT-EventBridge概述
    RocketMQMQTT概览传统的消息队列MQ主要应用于服务(端)之间的消息通信,比如电商领域的交易消息、支付消息、物流消息等等。然而在消息这个大类下,还有一个非常重要且常见的消息领域,即IoT类终端设备消息。近些年,我们看到随着智能家居、工业互联而兴起的面向IoT设备类的消息正在呈爆炸式......
  • RocketMQ教程-(6-5)-运维部署-Promethus Exporter
    介绍Rocketmq-exporter 是用于监控RocketMQbroker端和客户端所有相关指标的系统,通过 mqAdmin 从broker端获取指标值后封装成87个cache。警告过去版本曾是87个concurrentHashMap,由于Map不会删除过期指标,所以一旦有label变动就会生成一个新的指标,旧的无用指标无法......
  • RocketMQ教程-(5)-功能特性-事务消息
    事务消息为ApacheRocketMQ中的高级特性消息,本文为您介绍事务消息的应用场景、功能原理、使用限制、使用方法和使用建议。事务消息为ApacheRocketMQ中的高级特性消息,本文为您介绍事务消息的应用场景、功能原理、使用限制、使用方法和使用建议。以电商交易场景为例,用户支付订单......
  • RocketMQ教程-(5)-功能特性-顺序消息
    顺序消息为ApacheRocketMQ中的高级特性消息,本文为您介绍顺序消息的应用场景、功能原理、使用限制、使用方法和使用建议。应用场景在有序事件处理、撮合交易、数据实时增量同步等场景下,异构系统间需要维持强一致的状态同步,上游的事件变更需要按照顺序传递到下游进行处理。在这类......
  • RocketMQ教程-(4)-领域模型-消费者(Consumer)
    本文介绍ApacheRocketMQ中消费者(Consumer)的定义、模型关系、内部属性、行为约束、版本兼容性及使用建议。定义消费者是ApacheRocketMQ中用来接收并处理消息的运行实体。消费者通常被集成在业务系统中,从ApacheRocketMQ服务端获取消息,并将消息转化成业务可理解的信息,供业务......
  • RocketMQ教程-(4)-领域模型概述
    ApacheRocketMQ是一款典型的分布式架构下的中间件产品,使用异步通信方式和发布订阅的消息传输模型。通信方式和传输模型的具体说明,请参见下文通信方式介绍和消息传输模型介绍。ApacheRocketMQ产品具备异步通信的优势,系统拓扑简单、上下游耦合较弱,主要应用于异步解耦,流量削峰填......
  • RocketMQ教程-安装和配置
    Linux系统安装配置64位操作系统,推荐Linux/Unix/macOS64位JDK1.8+Maven3.0yum安装jdk8yum安装maven1.下载安装ApacheRocketMQRocketMQ的安装包分为两种,二进制包和源码包。点击这里 下载ApacheRocketMQ5.1.3的源码包。你也可以从这里 下载到二进制包。二进制包是已......