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

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
counterrocketmq_messages_in_totalcount消息生产数量。cluster,node_type,node_id,topic,message_type
counterrocketmq_messages_out_totalcount消息消费数量。cluster,node_type,node_id,topic, consumer_group
counterrocketmq_throughput_in_totalbyte消息生产流入服务端的吞吐量。cluster,node_type,node_id,topic,message_type
counterrocketmq_throughput_out_totalbyte消息消费从服务端流出的吞吐量。cluster,node_type,node_id,topic, consumer_group
histogramrocketmq_message_sizebyte消息大小的分布情况,发送成功时统计。分布区间如下:
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
gaugerocketmq_consumer_ready_messagescount已就绪消息量。cluster,node_type,node_id,topic, consumer_group
gaugerocketmq_consumer_inflight_messagescount处理中消息量。cluster,node_type,node_id,topic, consumer_group
gaugerocketmq_consumer_queueing_latencymillisecond已就绪消息排队延迟时间。cluster,node_type,node_id,topic, consumer_group
gaugerocketmq_consumer_lag_latencymillisecond消费处理延迟时间。cluster,node_type,node_id,topic, consumer_group
counterrocketmq_send_to_dlq_messages_totalcount转为死信状态的消息量。(变成死信状态指的是消息达到最大重投次数后不再投递)cluster,node_type,node_id,topic, consumer_group
histogramrocketmq_rpc_latencymillisecondrpc 调用耗时:
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
gaugerocketmq_storage_message_reserve_timemillisecond储存层消息保存时间(broker 硬盘上最早一条消息储存时间和当前时间作差)cluster,node_type,node_id
gaugerocketmq_storage_dispatch_behind_bytesbytedispatch 落后大小cluster,node_type,node_id
gaugerocketmq_storage_flush_behind_bytesbyte刷盘落后大小。cluster,node_type,node_id
gaugerocketmq_thread_pool_wartermarkcount线程池排队数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
Histogramrocketmq_send_cost_timemillisecond调用消息发送接口成功的耗时分布情况。分布区间如下::
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
Histogramrocketmq_process_timemillisecondPushConsumer 的消息处理耗时分布情况.分布区间如下:
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
gaugerocketmq_consumer_cached_messagesmessagePushConsumer 本地缓冲队列中的消息条数。topic,consumer_group,client_id
gaugerocketmq_consumer_cached_bytesbytePushConsumer 本地缓冲队列中消息的总大小。topic,consumer_group,client_id
Histogramrocketmq_await_timemillisecond消息在 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 队列消息状态


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

名称描述计算公式
处理中的消息(inflight messages)在消费者客户端正在处理,但客户端还未返回消费结果的消息。最晚一条拉取消息的位点-最晚一条提交消息的位点
已就绪消息(ready messages)消息在消息队列 RocketMQ 版服务端已就绪,对消费者可见可被消费的消息。最大消费位点-最晚一条拉取消息的位点
已就绪消息的就绪时间(ready time)普通消息、顺序消息:消息存储到服务端的时间。 
定时/延时消息:消息定时或延时结束的时间。
  事务消息:事务提交的时间。
--
已就绪消息的排队时间(ready message queue time)该时间反应消费者拉取消息的及时性。当前时间-最早一条就绪消息的就绪时间
消费处理滞后时间(consumer lag time)该时间反应消费者完成消息处理的及时性。当前时间-最早一条未提交消息的就绪时间

PushConsumer 消费场景​

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

PushConsumer client


在 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/51868.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centos 下扩容根目录

大体情况&#xff1a; 在VM虚拟机上安装了移动云的BCLinux镜像&#xff0c;磁盘设定为8G&#xff0c;但是用过一段时间之后根目录下磁盘已满&#xff0c;无法创建文件夹等操作&#xff0c;因此在VM上进行了磁盘扩容&#xff0c;扩容之后需要在系统上自行挂载&#xff0c;使用m…

DOS常见命令

DOS常见命令 DOS是什么如何打开DOScmd常见的命令集合 DOS是什么 DOC命令是我们浏览器中的终端 &#xff0c;但不同的是我们打开软件的方式 使用的是点击文件图标&#xff0c;点击图标的同时 我们也相当于使用一个命令 只是我们看不见而已 在电脑上操作的时候 通常都是使用命令…

Zoho CRM有哪些优势?

CRM能帮助企业管理客户信息、跟进销售机会、提高客户转化&#xff0c;显著提升企业的竞争力&#xff0c;是企业发展的重要工具。市场上有很多CRM品牌&#xff0c;企业该如何选型&#xff1f;这里给大家分享一个不错的CRM品牌 Zoho CRM有哪些优势&#xff1f; 功能全面&#x…

基于shell脚本对aliyun npm仓库(https://packages.aliyun.com)登录认证

文章目录 基于shell脚本对阿里云npm仓库&#xff08;https://packages.aliyun.com&#xff09;登录认证食用人群食用方式 基于shell脚本对阿里云npm仓库&#xff08;https://packages.aliyun.com&#xff09;登录认证 食用人群 由于一些安全的原因&#xff0c;某些企业可能会…

WebGL 缓冲区对象介绍,创建并使用缓冲区,使用缓冲区对象向顶点着色器传入多个顶点数据的所有步骤

目录 使用缓冲区对象 使用缓冲区对象向顶点着色器传入多个顶点的数据&#xff0c;需要遵循以下五个步骤。 创建缓冲区对象&#xff08;gl.createBuffer&#xff08;&#xff09;&#xff09; gl.createBuffer&#xff08;&#xff09;的函数规范 gl.deleteBuffer &#…

【rust语言】rust多态实现方式

文章目录 前言一、多态二、rust实现多态trait的静态方式还有一种方式可以通过动态分发&#xff0c;还以上面那段代码&#xff0c;比如dyn关键字 泛型方式枚举方式优点&#xff1a;缺点&#xff1a; 总结 前言 学习rust当中遇到了这个问题&#xff0c;记录一下&#xff0c;不对…

Java小项目|拼图小游戏|黑马

项目技术需求 Java基础 基本if、forio流File集合JFrame【看得懂就行】 项目素材以及打包exe&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1rPazJezTwS9O6e8BoYNIYA?pwd6666 项目运行截图 项目来源 哔哩哔哩-黑马程序员上 哔哩哔哩-黑马程序员下 项目介绍&…

线性代数(五) 线性空间

前言 《线性代数(三) 线性方程组&向量空间》我通过解线性方程组的方式去理解线性空间。此章从另一个角度去理解 空间是什么 大家较熟悉的&#xff1a;平面直角坐标系是最常见的二维空间 空间由无穷多个坐标点组成 每个坐标点就是一个向量 反过来&#xff0c;也可说&…

iptables的使用规则

环境中为了安全要限制swagger的访问&#xff0c;最简单的方式是通过iptables防火墙设置规则限制。 在测试服务器中设置访问swagger-ui.html显示如下&#xff0c;区分大小写&#xff1a; iptables设置限制访问9783端口的swagger字段的请求&#xff1a; iptables -A INPUT -p t…

云计算在线实训系统建设方案

一、 人工智能与云计算系统概述 人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;是一种模拟人类智能的科学和工程&#xff0c;通过使用计算机系统来模拟、扩展和增强人类的智能能力。人工智能涉及多个领域&#xff0c;包括机器学习、深度学习、自然…

HarmonyOS开发:超详细了解项目的工程结构

前言 系列文章目录&#xff1a; HarmonyOS开发第一步&#xff0c;熟知开发工具DevEco Studio 当我们熟练的掌握了DevEco Studio之后&#xff0c;就可以创建项目进行练习了&#xff0c;和市场上大多数IDE一样&#xff0c;DevEco Studio也给我们提供了很多的实例模板&#xff0c…

软考高级系统架构设计师系列论文九十二:论新技术的引进

软考高级系统架构设计师系列论文九十二:论新技术的引进 一、摘要二、正文三、总结一、摘要 根据国家税务总局对税务系统内所有系统进行集成与整合的需求,我所在的开发单位组织了全国金税工程防伪税控系统网络版的升级开发工作。该项目工程浩大,要求在具有严格的安全、可靠性…

uniapp-form表单

<template><view class"ptb-20 plr-30 bg min100"><view class"bg-white radius-20 pd-30"><view class"bold mt-30 mb-50 size-32">选择方式&#xff1a;</view><u--form labelPosition"left" :mod…

基于PIC单片机篮球计分计时器

一、系统方案 本设计采用PIC单片机作为主控制器&#xff0c;矩阵键盘控制&#xff0c;比分&#xff0c;计时控制&#xff0c;24秒&#xff0c;液晶12864显示。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 1、首先是系统初始化 2、液晶显示程序 /*************…

UNIAPP调用API接口

API&#xff1a;开发者可以通过这些接口与其它程序进行交互&#xff0c;获取所需数据或者执行指定操作。 网络请求 API: UniApp 中内置了网络请求 API&#xff0c;方便调用 uni.request uni.uploadFile uni.request 接口主要用于实现网络请求。GET 和 POST 是使用最普遍的两种…

系统架构合理性的思考 | 京东云技术团队

最近牵头在梳理部门的系统架构合理性&#xff0c;开始工作之前&#xff0c;我首先想到的是如何定义架构合理性&#xff1f; 从研发的角度来看如果系统上下文清晰、应用架构设计简单、应用拆分合理应该称之为架构合理。 基于以上的定义可以从以下三个方面来梳理评估&#xff1…

task.run()和 await task.run() 区别 await 运行机制

Task.Run() 和 await Task.Run() 都涉及异步编程&#xff0c;但它们在使用场景和效果上有一些区别。1. **Task.Run()&#xff1a;**- Task.Run() 是一个用于在后台线程上执行代码块的方法。它将指定的代码块包装在一个新的Task中&#xff0c;并在后台线程上运行。它不会阻塞调用…

Day02-Vue基础

文章目录 Day02-Vuejs基础一 Vue基础语法常用指令1 文本指令2 判断指令3 事件绑定指令4 属性动态绑定二 选项卡实战Day02-Vuejs基础 一 Vue基础语法 常用指令 v-html、v-textv-showv-if、v-else-if、v-elsev-onv-bindv-for1 文本指令 header.vue <template><div c…

完整的application.xml

<!-- 资源文件配置 --><beans profile"dev"><bean class"com.ningpai.util.CustomPropertyPlaceholderConfigurer"><property name"locations"><list><value>classpath:/com/ningpai/web/config/dev/jdbc.p…

从零学算法79

79.给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 单词必须按照字母顺序&#xff0c;通过相邻的单元格内的字母构成&#xff0c;其中“相邻”单元格是那些水平相邻或垂直…