ApsaraMQ for RocketMQ は、Managed Service for Prometheus および Grafana を活用した組み込みダッシュボードを提供します。これらのダッシュボードにより、メッセージスループット、コンシューマーラグ、処理遅延、クライアント側パフォーマンスをリアルタイムで可視化でき、異常の検出、配信問題のトラブルシューティング、容量計画を単一のビューから行えます。
ダッシュボードのメトリックは ARMS Prometheus Service の基本メトリックとして分類され、無料でご利用いただけます。
利用シーン
消費の異常を検出:メッセージが蓄積し、コンシューマーが遅れています。コンシューマーラグおよび準備完了メッセージキュー時間にアラートを設定して、問題を早期に検知してください。
メッセージ配信をトレース:注文ステータスが更新されません。プロデューサーがメッセージを送信したか、コンシューマーが処理したかを、生成および消費メトリックを通じて確認します。
トラフィック傾向を分析:時間経過に伴うメッセージ量、スループット、サイズ分布を確認し、必要な容量を予測して成長に備えてください。
アプリケーション依存関係をマッピング:プロデューサーおよびコンシューマーの上流・下流トポロジーを調査し、アーキテクチャ変更の判断材料としてください。
前提条件
作業を開始する前に、以下の項目を確認してください。
必要なサービスリンクロールを作成済みであること:詳細については、「サービスリンクロール」をご参照ください。
プロパティ 値 ロール名 AliyunServiceRoleForOns ポリシー名 AliyunServiceRolePolicyForOns 権限 ApsaraMQ for RocketMQ が CloudMonitor および ARMS にアクセスして、モニタリング、アラート機能、ダッシュボード機能を利用できるようにする権限
メッセージ蓄積の仕組み
次の図は、トピックキューにおけるメッセージのライフサイクルを示しています。

ApsaraMQ for RocketMQ は、各処理段階におけるメッセージ数およびメッセージの経過時間を追跡します。これらのメトリックにより、コンシューマーが受信メッセージに追いついているかどうかを把握できます。
メッセージ数メトリック
| メトリック | 定義 | 計算式 |
|---|---|---|
| インフライトメッセージ | 現在コンシューマーによって処理中で、まだ消費結果が返されていないメッセージ | 最新プルメッセージのオフセット - 最新提出メッセージのオフセット |
| 準備完了メッセージ | サーバー上に保存され、コンシューマーから見え、消費可能な状態のメッセージ | 最大メッセージオフセット - 最新プルメッセージのオフセット |
| コンシューマーラグ | 未処理メッセージの合計(インフライト + 準備完了) | インフライトメッセージ数 + 準備完了メッセージ数 |
メッセージ持続時間メトリック
| メトリック | 定義 | 計算式 |
|---|---|---|
| 準備完了時刻 | メッセージが消費可能になる時点。通常メッセージおよび順序付きメッセージではストレージ時刻、スケジュールおよび遅延メッセージでは遅延の有効期限切れ時刻、トランザクションメッセージではトランザクションコミット時刻です。 | 該当なし |
| 準備完了メッセージキュー時間 | 最も古い準備完了メッセージが待機している時間。コンシューマーがどのくらい迅速にメッセージをプルしているかを示します。 | 現在時刻 - 最も古い準備完了メッセージの準備完了時刻 |
| コンシューマーラグ時間 | 応答待ちの最も古いメッセージが準備完了になってからの経過時間。コンシューマーがどのくらい迅速にメッセージを処理しているかを示します。 | 現在時刻 - 応答待ちの最も古いメッセージの準備完了時刻 |
PushConsumer のローカル処理
PushConsumer は Reactor スレッドモデルを使用します。SDK は組み込みのロングポーリングスレッドを実行し、サーバーからメッセージをプルしてローカルバッファーキューに格納します。その後、消費スレッドプールがこのバッファーからメッセージを取得し、メッセージリスナーを呼び出します。

詳細については、「PushConsumer」をご参照ください。
ローカルバッファーの状態を追跡するクライアント側メトリックは以下の 3 つです。
キャッシュされたメッセージ数:現在ローカルバッファーキュー内にあるメッセージの総数。
キャッシュされたメッセージサイズ:ローカルバッファーキュー内の全メッセージの合計サイズ(バイト単位)。
待機時間:各メッセージがローカルバッファーキュー内で消費開始まで待機する時間。
ダッシュボードの表示
ApsaraMQ for RocketMQ コンソールでは、以下の 4 つのエントリポイントからダッシュボードにアクセスでき、それぞれ異なる詳細レベルで情報を表示します。
| エントリポイント | 表示内容 |
|---|---|
| ダッシュボード ページ | インスタンス内のすべてのトピックおよびコンシューマーグループのメトリック |
| インスタンス詳細 ページ | プロデューサー概要、課金メトリック、速度制限メトリック |
| トピック詳細 ページ | 特定のトピックに関する生成メトリックおよびプロデューサークライアントメトリック |
| グループ詳細 ページ | 特定のグループに関するコンシューマーラグおよびコンシューマークライアントメトリック |
ダッシュボードを開く手順は以下のとおりです。
ApsaraMQ for RocketMQ コンソール にログインします。左側のナビゲーションウィンドウで、インスタンス をクリックします。
上部のナビゲーションバーで、中国 (杭州) などのリージョンを選択します。インスタンス ページで、対象のインスタンス名をクリックします。
以下のいずれかのエントリポイントからダッシュボードを開きます。
インスタンスレベルのダッシュボード:インスタンス詳細 ページで、ダッシュボード タブをクリックします。
専用ダッシュボードページ:左側のナビゲーションウィンドウで、ダッシュボード をクリックします。
トピックレベルのダッシュボード:左側のナビゲーションウィンドウで、トピック をクリックします。トピック名をクリック後、トピック詳細 ページの ダッシュボード タブをクリックします。
グループレベルのダッシュボード:左側のナビゲーションウィンドウで、グループ をクリックします。グループ名をクリック後、グループ詳細 ページの ダッシュボード タブをクリックします。
メトリックリファレンス
TPS、API 呼び出し回数、メッセージ量のメトリックは、標準的な 4 KB の通常メッセージに基づいて計算されます。より大きなメッセージや高度な機能(順序付き、トランザクション、遅延)を使用するメッセージには、乗数が適用されます。計算ルールの詳細については、「計算仕様」をご参照ください。
メトリックタイプとラベル
メトリックタイプ
| タイプ | 動作 | 例 |
|---|---|---|
| カウンター | 単調増加する累積値 | 生成されたメッセージの総数 |
| ゲージ | 増減する可能性のある時点の値 | 現在の TPS |
| ヒストグラム | 事前定義されたバケットにわたる値の分布 | メッセージサイズのディストリビューション |
共通ラベル
| ラベル | 説明 |
|---|---|
instance_id | ApsaraMQ for RocketMQ インスタンス ID |
topic | トピック名 |
consumer_group | コンシューマーグループ名 |
message_type | normal、fifo(順序付き)、transaction、または delay(遅延/スケジュール) |
fifo_enable | true、同時配信の場合は false |
uid | Alibaba Cloud アカウント ID |
client_id | ApsaraMQ for RocketMQ クライアント ID |
invocation_status | success または failure |
サーバー側メトリック
| タイプ | メトリック名 | 単位 | 説明 | ラベル |
|---|---|---|---|---|
| ゲージ | rocketmq_instance_requests_max | count/s | インスタンスが送受信したすべてのメッセージのピーク TPS。速度制限されたリクエストは除外されます。1 分間のウィンドウ内で 1 秒あたりのサンプル 60 件の最大値です。 | uid、instance_id |
| ゲージ | rocketmq_instance_requests_in_max | count/s | インスタンスのピーク送信 TPS。速度制限されたリクエストは除外されます。1 分間で 1 秒あたりのサンプル 60 件の最大値です。 | uid、instance_id |
| ゲージ | rocketmq_instance_requests_out_max | count/s | インスタンスのピーク消費 TPS。速度制限されたリクエストは除外されます。1 分間で 1 秒あたりのサンプル 60 件の最大値です。 | uid、instance_id |
| ゲージ | rocketmq_topic_requests_max | count/s | 特定のトピックのピーク送信 TPS。速度制限されたリクエストは除外されます。1 分間で 1 秒あたりのサンプル 60 件の最大値です。 | uid、instance_id、topic |
| ゲージ | rocketmq_group_requests_max | count/s | コンシューマーグループのピーク消費 TPS。速度制限されたリクエストは除外されます。1 分間で 1 秒あたりのサンプル 60 件の最大値です。 | uid、instance_id、consumer_group |
| ゲージ | rocketmq_instance_requests_in_threshold | count/s | インスタンスでのメッセージ送信に対する速度制限しきい値。 | uid、instance_id |
| ゲージ | rocketmq_instance_requests_out_threshold | count/s | インスタンスでのメッセージ消費に対する速度制限しきい値。 | uid、instance_id |
| ゲージ | rocketmq_throttled_requests_in | count | 速度制限された送信リクエスト数。 | uid、instance_id、topic、message_type |
| ゲージ | rocketmq_throttled_requests_out | count | 速度制限された消費リクエスト数。 | uid、instance_id、topic、fifo_enable、consumer_group |
| ゲージ | rocketmq_instance_elastic_requests_max | count/s | インスタンスのピークエラスティック TPS。 | uid、instance_id |
| カウンター | rocketmq_requests_in_total | count | 送信 API 呼び出しの総数。 | uid、instance_id、topic、message_type |
| カウンター | rocketmq_requests_out_total | count | 消費 API 呼び出しの総数。 | uid、instance_id、topic、consumer_group、fifo_enable |
| カウンター | rocketmq_messages_in_total | message | プロデューサーが送信したメッセージの総数。 | uid、instance_id、topic、message_type |
| カウンター | rocketmq_messages_out_total | message | コンシューマーに配信されたメッセージの総数。処理中、正常終了、失敗したメッセージをすべて含みます。 | uid、instance_id、topic、consumer_group、fifo_enable |
| カウンター | rocketmq_throughput_in_total | byte | プロデューサーからのインバウンドメッセージスループットの合計。 | uid、instance_id、topic、message_type |
| カウンター | rocketmq_throughput_out_total | byte | コンシューマーへのアウトバウンドメッセージスループットの合計。処理中、正常終了、失敗したメッセージをすべて含みます。 | uid、instance_id、topic、consumer_group、fifo_enable |
| カウンター | rocketmq_internet_throughput_out_total | byte | メッセージ送受信時のダウンストリームインターネットトラフィック。 | uid、instance_id、topic、message_type |
| ヒストグラム | 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)。 | uid、instance_id、topic、message_type |
| ゲージ | rocketmq_consumer_ready_messages | message | コンシューマーがプルするのを待っているサーバー上の準備完了メッセージ。 | uid、instance_id、topic、consumer_group |
| ゲージ | rocketmq_consumer_inflight_messages | message | 現在コンシューマーによって処理中のメッセージ(結果がまだ返されていません)。 | uid、instance_id、topic、consumer_group |
| ゲージ | rocketmq_consumer_queueing_latency | ms | 最も古い準備完了メッセージが待機している時間。プルの迅速性を示します。 | uid、instance_id、topic、consumer_group |
| ゲージ | rocketmq_consumer_lag_latency | ms | 応答待ちの最も古いメッセージが準備完了になってからの経過時間。処理の迅速性を示します。 | uid、instance_id、topic、consumer_group |
| カウンター | rocketmq_send_to_dlq_messages | message | 1 分あたりのデッドレターメッセージ数。メッセージは最大再配信試行回数を超えるとデッドレターになります。グループのデッドレターポリシーに基づき、これらのメッセージは指定されたトピックに保存されるか、破棄されます。 | uid、instance_id、topic、consumer_group |
| ゲージ | rocketmq_storage_size | byte | すべてのファイルを含む、インスタンスで使用されているストレージの合計サイズ。 | uid、instance_id |
プロデューサーメトリック
| タイプ | メトリック名 | 単位 | 説明 | ラベル |
|---|---|---|---|---|
| ヒストグラム | rocketmq_send_cost_time | ms | 正常な送信 API 呼び出しの遅延ディストリビューション。バケット:le_1_ms、le_5_ms、le_10_ms、le_20_ms、le_50_ms、le_200_ms、le_500_ms、le_overflow。 | uid、instance_id、topic、client_id、invocation_status |
コンシューマーメトリック
| タイプ | メトリック名 | 単位 | 説明 | ラベル |
|---|---|---|---|---|
| ヒストグラム | rocketmq_process_time | ms | PushConsumer のメッセージ処理時間ディストリビューション(正常終了および失敗したメッセージを含む)。rocketmq_process_time = 処理終了時刻 - 処理開始時刻。バケット:le_1_ms、le_5_ms、le_10_ms、le_100_ms、le_10000_ms、le_60000_ms、le_overflow。 | uid、instance_id、consumer_group、topic、client_id、invocation_status |
| ゲージ | rocketmq_consumer_cached_messages | message | PushConsumer のローカルバッファーキュー内のメッセージ。 | uid、instance_id、consumer_group、topic、client_id |
| ゲージ | rocketmq_consumer_cached_bytes | byte | PushConsumer のローカルバッファーキュー内のメッセージの合計サイズ。 | uid、instance_id、consumer_group、topic、client_id |
| ヒストグラム | rocketmq_await_time | ms | メッセージが PushConsumer のローカルバッファーキュー内で処理開始まで待機する時間。rocketmq_await_time = 処理開始時刻 - 到着時刻。バケット:le_1_ms、le_5_ms、le_20_ms、le_100_ms、le_1000_ms、le_5000_ms、le_10000_ms、le_overflow。 | uid、instance_id、consumer_group、topic、client_id |
課金
ダッシュボードのメトリックは ARMS Prometheus Service の基本メトリックとして分類されます。基本メトリックは無料です。ダッシュボード機能の利用に追加料金はかかりません。
よくある質問
ダッシュボードのメトリックデータにプログラムからアクセスするにはどうすればよいですか?
すべての ApsaraMQ for RocketMQ メトリックは、ご利用の Managed Service for Prometheus インスタンスに保存されます。データアクセスエンドポイントを取得する手順は以下のとおりです。
ARMS コンソール にログインします。左側のナビゲーションウィンドウで、インテグレーションセンター をクリックします。
RocketMQを検索し、Alibaba Cloud RocketMQ (5.0) Service を選択します。「Alibaba Cloud サービスのモニタリングデータを統合する」に従って統合を完了します。プロビジョニングが完了したら、左側のナビゲーションウィンドウで、プロビジョニング をクリックします。
クラウドサービスリージョン環境 タブをクリックし、対象の環境名をクリックします。
コンポーネント管理 タブの 基本情報 エリアで、Prometheus インスタンス の横にあるクラウドサービスリージョンをクリックします。
設定項目 タブで、利用可能なデータアクセス方法(HTTP API エンドポイント、Remote Write など)を確認します。
メトリックをセルフマネージド Grafana に統合するにはどうすればよいですか?
上記の手順で HTTP API アドレスを取得したら、それを Grafana インスタンスの Prometheus データソースとして追加します。手順の詳細については、「HTTP API アドレスを使用して Prometheus データを Grafana に統合する」をご参照ください。
TPS Max とは何を表していますか?
TPS Max は、1 分間のウィンドウ内で測定されたトランザクション毎秒(TPS)のピーク値です。システムは 1 秒ごとに TPS をサンプリング(1 分間に 60 サンプル)し、その中で最も高い値を報告します。
例:インスタンスが 1 分間に 4 KB の通常メッセージを 60 件送信した場合。
最初の 1 秒で 60 件すべてを送信した場合、1 秒あたりの TPS = 60、0、0、...、0 となり、TPS Max = 60 です。
最初の 1 秒で 40 件、次の 1 秒で 20 件を送信した場合、1 秒あたりの TPS = 40、20、0、...、0 となり、TPS Max = 40 です。