儀表盤
借助于阿里云ARMS Prometheus監(jiān)控服務和Grafana的指標存儲和展示能力,云消息隊列 RocketMQ 版提供儀表盤功能。該功能可幫助您一站式、全方位、多維度地統(tǒng)計和觀測指標,進而快速了解業(yè)務的運行狀態(tài)。本文介紹儀表盤的應用場景、業(yè)務背景、指標詳情、計費說明和查詢方式。
應用場景
場景一:線上消息消費有異常,消息不能及時被處理,需要及時收到報警,并快速定位問題。
場景二:線上某些訂單狀態(tài)有異常,需要排查對應的消息鏈路環(huán)節(jié)是否正常發(fā)送消息。
場景三:需要分析消息流量變化趨勢、流量分布特點或消息體量,進而進行業(yè)務趨勢分析規(guī)劃。
場景四:需要查看和分析應用上下游依賴拓撲情況,進行架構升級優(yōu)化或改造。
業(yè)務背景
云消息隊列 RocketMQ 版的消息收發(fā)流程中,隊列的堆積情況、緩沖情況以及消息處理各環(huán)節(jié)的耗時等,會直接反映當前業(yè)務處理的性能和服務端運行的狀態(tài)。因此,云消息隊列 RocketMQ 版的重點指標主要涉及以下業(yè)務場景。
消息堆積場景
如下圖所示,表示指定主題的某一隊列中各消息的狀態(tài):
上圖表示指定主題的某一隊列中各消息的狀態(tài),云消息隊列 RocketMQ 版將處于不同處理階段的消息數(shù)量和耗時進行統(tǒng)計,這些指標可直接反映隊列中消息的處理速率和堆積情況,通過觀察這些指標可初步判斷業(yè)務的消費是否異常。具體的指標含義和計算公式如下:
分類 | 指標 | 定義 | 計算公式 |
消息數(shù)量指標 | 處理中的消息(inflight messages) | 在消費者客戶端正在處理,但客戶端還未返回消費結果的消息。 | 最晚一條拉取消息的位點-最晚一條提交消息的位點 |
已就緒的消息(ready messages) | 消息在云消息隊列 RocketMQ 版服務端已就緒,對消費者可見可被消費的消息。 | 最大消息位點-最晚一條拉取消息的位點 | |
消息堆積量(consumer lag) | 所有未處理完成的消息量。 | 處理中消息量+已就緒消息量 | |
消息耗時指標 | 已就緒消息的就緒時間(ready time) |
| 不涉及 |
已就緒消息的排隊時間(ready message queue time) | 最早一條就緒消息的就緒時間和當前時刻的時間差。 該時間反映消費者拉取消息的及時性。 | 當前時間-最早一條就緒消息的就緒時間 | |
消費處理滯后時間(comsumer lag time) | 最早一條未消費完成的消息的就緒時間和當前時刻的時間差。 該時間反映消費者完成消息處理的及時性。 | 當前時間-最早一條未提交消息的就緒時間 |
PushConsumer消費場景
在PushConsumer類型中,消息的實時處理能力是基于SDK內(nèi)部的典型Reactor線程模型實現(xiàn)的。如下圖所示,SDK內(nèi)置了一個長輪詢線程,先將消息異步拉取到SDK內(nèi)置的緩存隊列中,再分別提交到消費線程中,觸發(fā)監(jiān)聽器執(zhí)行本地消費邏輯。
具體原理,請參見PushConsumer。
在PushConsumer消費場景下,本地緩沖隊列相關指標如下:
本地緩沖隊列中的消息量:本地緩沖隊列中的消息總條數(shù)。
本地緩沖隊列中的消息大小:本地緩沖隊列中所有消息大小的總和。
消息等待處理時間:消息暫存在本地緩沖隊列中的時間。
Metrics指標詳情
所有消息收發(fā)TPS、消息收發(fā)次數(shù)或消息條數(shù)的相關指標,在計算時以消息大小4 KB和普通消息類型為基準,在其基礎上需要乘以消息大小倍數(shù)和高級消息類型倍數(shù)。具體計算規(guī)則,請參見計算規(guī)格說明。
Metrics指標中相關字段說明如下:
字段 | 取值 |
Metrics類型 |
|
Label |
|
服務端Metrics指標
Metrics類型 | Metrics name | 單位 | 指標說明 | Label |
Gauge | rocketmq_instance_requests_max | count/s | 實例每分鐘消息收發(fā)TPS的最大值(不包含被限流的請求)。 取值規(guī)則:以1分鐘為周期,每秒鐘采樣一次,取這60次采樣的最大值。 |
|
Gauge | rocketmq_instance_requests_in_max | count/s | 實例每分鐘消息發(fā)送TPS的最大值(不包含被限流的請求)。 取值規(guī)則:以1分鐘為周期,每秒鐘采樣一次,取這60次采樣的最大值。 |
|
Gauge | rocketmq_instance_requests_out_max | count/s | 實例每分鐘消息消費TPS的最大值(不包含被限流的請求)。 取值規(guī)則:以1分鐘為周期,每秒鐘采樣一次,取這60次采樣的最大值。 |
|
Gauge | rocketmq_topic_requests_max | count/s | 實例每分鐘向Topic發(fā)送消息TPS的最大值(不包含被限流的請求)。 取值規(guī)則:以1分鐘為周期,每秒鐘采樣一次,取這60次采樣的最大值。 |
|
Gauge | rocketmq_group_requests_max | count/s | 實例中消費組每分鐘消息消費TPS的最大值(不包含被限流的請求)。 取值規(guī)則:以1分鐘為周期,每秒鐘采樣一次,取這60次采樣的最大值。 |
|
Gauge | rocketmq_instance_requests_in_threshold | count/s | 實例消息發(fā)送的限流閾值。 |
|
Gauge | rocketmq_instance_requests_out_threshold | count/s | 實例消息消費的限流閾值。 |
|
Gauge | rocketmq_throttled_requests_in | count | 消息發(fā)送的限流次數(shù)。 |
|
Gauge | rocketmq_throttled_requests_out | count | 消息消費的限流次數(shù)。 |
|
Gauge | rocketmq_instance_elastic_requests_max | count/s | 實例消息收發(fā)TPS的最大彈性值。 |
|
Counter | rocketmq_requests_in_total | count | 消息發(fā)送相關API的調(diào)用次數(shù)。 |
|
Counter | rocketmq_requests_out_total | count | 消息消費相關API的調(diào)用次數(shù)。 |
|
Counter | rocketmq_messages_in_total | message | 生產(chǎn)者發(fā)送到服務端的消息數(shù)量。 |
|
Counter | rocketmq_messages_out_total | message | 服務端投遞給消費者的消息數(shù)量,其中包含消費者處理中、處理成功和處理失敗的消息。 |
|
Counter | rocketmq_throughput_in_total | byte | 生產(chǎn)者發(fā)送到服務端的消息吞吐量。 |
|
Counter | rocketmq_throughput_out_total | byte | 服務端投遞給消費者的消息吞吐量,其中消息數(shù)量包含消費者處理中、處理成功和處理失敗的消息。 |
|
Counter | rocketmq_internet_throughput_out_total | byte | 消息收發(fā)所使用的公網(wǎng)下行流量。 |
|
Histogram | rocketmq_message_size | byte | 消息大小的分布情況,發(fā)送成功時統(tǒng)計。 分布區(qū)間如下:
|
|
Gauge | rocketmq_consumer_ready_messages | message | 已就緒消息量。 在服務端已就緒,可以被消費者消費的消息數(shù)量。 指標反映還未被消費者開始處理的消息規(guī)模。 |
|
Gauge | rocketmq_consumer_inflight_messages | message | 處理中消息量。 在消費者客戶端正在處理,但客戶端還未返回消費結果的消息的總量。 |
|
Gauge | rocketmq_consumer_queueing_latency | ms | 已就緒消息排隊時間。 最早一條就緒消息的就緒時間和當前時間差。 該時間反映消費者拉取消息的及時性。 |
|
Gauge | rocketmq_consumer_lag_latency | ms | 消費處理延遲時間。 最早一條未消費完成的消息的就緒時間和當前時刻的時間差。 該時間反映消費者完成消息處理的及時性。 |
|
Counter | rocketmq_send_to_dlq_messages | message | 每分鐘轉為死信狀態(tài)的消息量。 變成死信狀態(tài)指的是消息達到最大重投次數(shù)后不再投遞。 這些不再投遞的消息會根據(jù)Group的死信策略配置保存至指定Topic或被丟棄。 |
|
Gauge | rocketmq_storage_size | byte | 實例所使用的存儲空間大小,包含所有文件的大小。 |
|
生產(chǎn)者Metrics指標
Metrics類型 | Metrics name | 單位 | 指標說明 | Label |
Histogram | rocketmq_send_cost_time | ms | 調(diào)用消息發(fā)送接口成功的耗時分布情況。 分布區(qū)間如下:
|
|
消費者Metrics指標
Metrics類型 | Metrics name | 單位 | 指標說明 | Label |
Histogram | rocketmq_process_time | ms | PushConsumer的消息處理耗時分布情況,包含處理成功和處理失敗。
分布區(qū)間如下:
|
|
Gauge | rocketmq_consumer_cached_messages | message | PushConsumer本地緩沖隊列中的消息條數(shù)。 |
|
Gauge | rocketmq_consumer_cached_bytes | byte | PushConsumer本地緩沖隊列中消息的總大小。 |
|
Histogram | rocketmq_await_time | ms | 消息在PushConsumer本地緩沖隊列中的排隊時間的分布情況。
分布區(qū)間如下:
|
|
計費說明
云消息隊列 RocketMQ 版的儀表盤指標在阿里云ARMS Prometheus監(jiān)控服務中屬于基礎指標,基礎指標不收取費用。因此,使用儀表盤功能不收取費用。
前提條件
創(chuàng)建服務關聯(lián)角色
角色名稱:AliyunServiceRoleForOns
角色策略名稱:AliyunServiceRolePolicyForOns
權限說明:允許云消息隊列 RocketMQ 版使用該角色訪問您的服務(云監(jiān)控和ARMS服務)以完成監(jiān)控報警和儀表盤相關功能。
具體文檔說明:服務關聯(lián)角色。
查看儀表盤
云消息隊列 RocketMQ 版支持通過以下入口查看儀表盤:
儀表盤頁面:支持查看實例所有Topic和Group的各個指標。
實例詳情頁面:主要展示指定實例的生產(chǎn)者概覽信息、計費相關指標以及限流相關指標。
Topic 詳情頁面:主要展示指定Topic的生產(chǎn)相關指標以及生產(chǎn)者客戶端相關指標。
Group 詳情頁面:主要展示指定Group的消費堆積相關指標以及消費者客戶端相關指標。
登錄云消息隊列 RocketMQ 版控制臺,在左側導航欄單擊實例列表。
在頂部菜單欄選擇地域,如華東1(杭州),然后在實例列表中,單擊目標實例名稱。
選擇以下任一方式查看儀表盤。
實例詳情頁面:在實例詳情頁單擊儀表盤頁簽。
儀表盤頁面:在左側導航欄單擊儀表盤。
Topic 詳情頁面:在左側導航欄單擊Topic 管理,在Topic列表中單擊目標Topic名稱,然后在Topic 詳情頁面單擊儀表盤頁簽。
Group 詳情頁面:在左側導航欄單擊Group 管理,在Group列表中單擊目標Group名稱,然后在Group 詳情頁面單擊儀表盤頁簽。
儀表盤常見問題
如何獲取儀表盤指標數(shù)據(jù)?
使用主賬號登錄ARMS控制臺。
在左側導航欄單擊接入中心。
在接入中心頁面的搜索文本框輸入
RocketMQ
,并單擊搜索圖標。在搜索的結果中,選擇需要接入的云服務(如阿里云 RocketMQ(5.0) 服務)。接入的具體操作,請參見步驟一:接入云服務監(jiān)控數(shù)據(jù)。
接入成功后,在左側導航欄單擊接入管理。
在云服務區(qū)域環(huán)境列表中,單擊目標環(huán)境名稱進入云服務環(huán)境詳情頁面。
在組件管理頁簽的基本信息區(qū)域,單擊默認指標存儲后的云服務地域。
在設置頁簽上,可以獲取不同的數(shù)據(jù)訪問方式。
如何將DashBoard的指標數(shù)據(jù)接入自建Grafana?
云消息隊列 RocketMQ 版的所有指標數(shù)據(jù)已保存到您的阿里云可觀測監(jiān)控 Prometheus 版中,您可以參照如何獲取儀表盤指標數(shù)據(jù)?中的步驟,接入云服務并獲取環(huán)境名稱和HTTP API地址后,通過API將云消息隊列 RocketMQ 版的儀表盤的指標數(shù)據(jù)接入到本地自建Grafana中。具體操作,請參見使用HTTP API地址對接Grafana或自建應用中接入Prometheus數(shù)據(jù)。
如何理解實例的TPS Max值?
TPS Max值:以1分鐘為統(tǒng)計周期,每秒采樣一次,統(tǒng)計結果取這60個采樣值的最大值。
具體示例如下:
假設某實例在1分鐘內(nèi)生產(chǎn)60條消息(均為普通消息、每條4 KB大小),則該實例的生產(chǎn)速率為60條/分鐘。
如果這60條消息在第1秒發(fā)送完成,則該實例在這1分鐘內(nèi)每秒的TPS分別為60、0、0……0。
實例TPS Max值=60 TPS。
如果這60條消息在第1秒發(fā)送了40條,第2秒發(fā)送了20條,則該實例在這1分鐘內(nèi)每秒的TPS分別為40、20、0、0……0。
實例TPS Max值=40 TPS。