跳至主要內容
版本:5.0

指標

RocketMQ 以 Prometheus 格式公開以下指標。您可以使用這些指標監控您的叢集。

  • 代理程式指標
  • 生產者指標
  • 消費者指標

版本支援:以下 RocketMQ 指標自 5.1.0 起導入,且僅支援代理程式。

指標詳細資料

指標類型

RocketMQ 中定義指標的標準符合開放原始碼 Prometheus 中定義指標的標準。RocketMQ 提供的指標類型包括計數器、量規和直方圖。如需更多資訊,請參閱 指標類型

代理程式指標

下表說明與 Apache RocketMQ 代理程式的訊息佇列相關的指標標籤。

  • 叢集:RocketMQ 叢集名稱。
  • node_type:服務節點類型,包括:proxy、broker、nameserver。
  • node_id:服務節點 ID。
  • topic:RocketMQ 的主題。
  • message_type:消息類型,包括:
    normal:普通消息;
    fifo:順序消息;
    transaction:事務消息;
    delay:定時或延遲消息。
  • consumer_group:消費者組 ID。
類型名稱單位說明標籤
計數器rocketmq_messages_in_total計數生產的消息數。cluster、node_type、node_id、topic、message_type
計數器rocketmq_messages_out_total計數消費的消息數。cluster、node_type、node_id、topic、consumer_group
計數器rocketmq_throughput_in_total位元組生產的寫入吞吐量。cluster、node_type、node_id、topic、message_type
計數器rocketmq_throughput_out_total位元組生產的讀取吞吐量。cluster、node_type、node_id、topic、consumer_group
直方圖rocketmq_message_size位元組消息大小分佈。此指標僅在發送消息時計數。以下是分佈範圍:
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
量規rocketmq_consumer_ready_messages計數就緒消息數。cluster、node_type、node_id、topic、consumer_group
量規rocketmq_consumer_inflight_messages計數傳輸中消息數。cluster、node_type、node_id、topic、consumer_group
量規rocketmq_consumer_queueing_latency毫秒就緒消息佇列延遲時間。cluster、node_type、node_id、topic、consumer_group
量規rocketmq_consumer_lag_latency毫秒消息消費的延遲時間。cluster、node_type、node_id、topic、consumer_group
計數器rocketmq_send_to_dlq_messages_total計數發送到死信佇列的消息數。cluster、node_type、node_id、topic、consumer_group
直方圖rocketmq_rpc_latency毫秒rpc 呼叫延遲時間。cluster、node_typ、node_id、protocol_type、request_code、response_code
量規rocketmq_storage_message_reserve_time毫秒消息保留時間。cluster、node_type、node_id
量規rocketmq_storage_dispatch_behind_bytes位元組未調度的消息大小。cluster、node_type、node_id
量規rocketmq_storage_flush_behind_bytes位元組未刷新消息大小。cluster、node_type、node_id
量規rocketmq_thread_pool_wartermark計數佇列在執行緒池中的任務數。cluster、node_type、node_id、name

生產者指標

下表說明了 Apache RocketMQ 中與生產者相關的指標標籤。

  • 叢集:RocketMQ 叢集名稱。
  • node_type:服務節點類型,包括:proxy、broker、nameserver。
  • node_id:服務節點 ID。
  • topic:Apache RocketMQ 的主題。
  • message_type:消息類型,包括:
    normal:普通消息;
    fifo:順序消息;
    transaction:事務消息;
    delay:定時或延遲消息。
  • client_id:客戶端 ID。
  • invocation_status:發送消息的 API 呼叫結果,包括成功和失敗。
類型名稱單位說明標籤
直方圖rocketmq_send_cost_time毫秒生產 API 呼叫時間的分布。以下顯示分布範圍
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

消費者指標

下表說明與 Apache RocketMQ 中的訊息佇列消費者相關的指標標籤。

  • topic:Apache RocketMQ 的主題。
  • consumer_group:消費者組 ID。
  • client_id:客戶端 ID。
  • invocation_status:發送消息的 API 呼叫結果,包括成功和失敗。
類型名稱單位說明標籤
直方圖rocketmq_process_time毫秒訊息處理時間的分布。以下顯示分布範圍
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
量規rocketmq_consumer_cached_messages訊息PushConsumer 本地緩衝佇列中的訊息數目。topic、consumer_group、client_id
量規rocketmq_consumer_cached_bytes位元組PushConsumer 本地緩衝佇列中訊息的總大小。topic、consumer_group、client_id
直方圖rocketmq_await_time毫秒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 根據以下業務場景定義指標。

訊息累積場景

rocketmq queue meesage stuatus
上圖顯示不同階段的訊息數目和持續時間。透過監控這些指標,您可以確定業務消耗是否異常。下表說明這些指標的意義以及用於計算這些指標的公式。

名稱說明公式
傳送中訊息消費者正在處理但尚未確認的訊息數目最新提取訊息的偏移量 - 最新提交訊息的偏移量
準備就緒的訊息準備好供消費的訊息數目。最大偏移量 - 最新提取訊息的偏移量
準備就緒時間一般訊息或已排序訊息:訊息儲存在代理伺服器上的時間。  
排程訊息:定時結束時間。
 交易訊息:交易提交時間。
--
準備就緒訊息佇列時間最早準備就緒的訊息的準備就緒時間與目前時間之間的時間間隔。此時間反映消費者提取訊息的時效性。當前時間 - 最早準備好的訊息的準備時間
消費者滯後時間最早未確認訊息的準備時間與當前時間之間的時間差。
此時間反映消費者完成訊息處理的時效性。
當前時間 - 最早未確認訊息的準備時間

PushConsumer 消費場景

在 PushConsumer 中,實時訊息處理功能是基於 SDK 內部的典型 Reactor 執行緒模型實現的。如下所示,SDK 內建長輪詢執行緒,將訊息非同步拉取到 SDK 內建的緩衝佇列中,然後單獨提交給消費者執行緒,觸發監聽器執行本地消費邏輯。
PushConsumer client
PushConsumer 場景中本地緩衝佇列的指標如下

  • 本地緩衝佇列中的訊息數量:本地緩衝佇列中的訊息總數。
  • 本地緩衝佇列中的訊息大小:本地緩衝佇列中所有訊息大小的總和。
  • 訊息等待時間:訊息暫時快取在本地緩衝佇列中等待處理的時間。

如何取得指標

目前支援兩種匯出器:gRPC OTLP 和 Prometheus。

gRPC OTLP 匯出器

gRPC OTLP 匯出器定期將指標報告給指定的 OpenTelemetry Collector。

先決條件:部署支援 GRPC OpenTelemetry 協定 的 OpenTelemetry Collector。

若要啟用 Broker 指標的 gRPC OTLP 匯出器,請執行下列操作

  1. metricsExporterType 設定為 OTLP_GRPC
  2. metricsGrpcExporterTarget 設定為 OpenTelemetry Collector 提供的端點。

選用設定

  1. metricsGrpcExporterHeader:以 key1:value1,key2:value2 的格式將要求標頭附加到 gRPC OTLP 匯出器。
  2. metricGrpcExporterTimeOutInMills:設定 gRPC OTLP 匯出器的要求逾時時間。
  3. metricGrpcExporterIntervalInMills:設定 gRPC OTLP 匯出器的報告間隔。

Prometheus 匯出器

Prometheus 匯出器僅支援拉取模式和累計聚合。如需更多資訊,請參閱 OpenTelemetry Metrics Exporter - Prometheus

若要啟用 Broker 指標的 Prometheus 匯出器,請執行下列操作

  1. metricsExporterType 設為 PROM

瀏覽 http://<broker-ip>:5557/metrics 查看指標。設定服務發現或在 Prometheus 中手動設定拉取工作以收集指標。

選用設定

  1. metricsPromExporterPort:Broker 公開指標服務的埠號。預設為 5557
  2. metricGrpcExporterTimeOutInMills:公開指標服務的主機名稱。預設為 Broker 向 NameServer 註冊的 IP,brokerIP1。