指標
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 根據以下業務場景定義指標。
訊息累積場景
上圖顯示不同階段的訊息數目和持續時間。透過監控這些指標,您可以確定業務消耗是否異常。下表說明這些指標的意義以及用於計算這些指標的公式。
名稱 | 說明 | 公式 |
---|---|---|
傳送中訊息 | 消費者正在處理但尚未確認的訊息數目 | 最新提取訊息的偏移量 - 最新提交訊息的偏移量 |
準備就緒的訊息 | 準備好供消費的訊息數目。 | 最大偏移量 - 最新提取訊息的偏移量 |
準備就緒時間 | 一般訊息或已排序訊息:訊息儲存在代理伺服器上的時間。 排程訊息:定時結束時間。 交易訊息:交易提交時間。 | -- |
準備就緒訊息佇列時間 | 最早準備就緒的訊息的準備就緒時間與目前時間之間的時間間隔。此時間反映消費者提取訊息的時效性。 | 當前時間 - 最早準備好的訊息的準備時間 |
消費者滯後時間 | 最早未確認訊息的準備時間與當前時間之間的時間差。 此時間反映消費者完成訊息處理的時效性。 | 當前時間 - 最早未確認訊息的準備時間 |
PushConsumer 消費場景
在 PushConsumer 中,實時訊息處理功能是基於 SDK 內部的典型 Reactor 執行緒模型實現的。如下所示,SDK 內建長輪詢執行緒,將訊息非同步拉取到 SDK 內建的緩衝佇列中,然後單獨提交給消費者執行緒,觸發監聽器執行本地消費邏輯。
PushConsumer 場景中本地緩衝佇列的指標如下
- 本地緩衝佇列中的訊息數量:本地緩衝佇列中的訊息總數。
- 本地緩衝佇列中的訊息大小:本地緩衝佇列中所有訊息大小的總和。
- 訊息等待時間:訊息暫時快取在本地緩衝佇列中等待處理的時間。
如何取得指標
目前支援兩種匯出器:gRPC OTLP 和 Prometheus。
gRPC OTLP 匯出器
gRPC OTLP 匯出器定期將指標報告給指定的 OpenTelemetry Collector。
先決條件:部署支援 GRPC OpenTelemetry 協定 的 OpenTelemetry Collector。
若要啟用 Broker 指標的 gRPC OTLP 匯出器,請執行下列操作
- 將
metricsExporterType
設定為OTLP_GRPC
。 - 將
metricsGrpcExporterTarget
設定為 OpenTelemetry Collector 提供的端點。
選用設定
metricsGrpcExporterHeader
:以 key1:value1,key2:value2 的格式將要求標頭附加到 gRPC OTLP 匯出器。metricGrpcExporterTimeOutInMills
:設定 gRPC OTLP 匯出器的要求逾時時間。metricGrpcExporterIntervalInMills
:設定 gRPC OTLP 匯出器的報告間隔。
Prometheus 匯出器
Prometheus 匯出器僅支援拉取模式和累計聚合。如需更多資訊,請參閱 OpenTelemetry Metrics Exporter - Prometheus。
若要啟用 Broker 指標的 Prometheus 匯出器,請執行下列操作
- 將
metricsExporterType
設為PROM
。
瀏覽 http://<broker-ip>:5557/metrics
查看指標。設定服務發現或在 Prometheus 中手動設定拉取工作以收集指標。
選用設定
metricsPromExporterPort
:Broker 公開指標服務的埠號。預設為5557
。metricGrpcExporterTimeOutInMills
:公開指標服務的主機名稱。預設為 Broker 向 NameServer 註冊的 IP,brokerIP1。