Message Queue for Apache RocketMQ 5.0 は、Alibaba Cloud の Prometheus マネージドサービスおよび Grafana マネージドサービスのメトリックストレージと可視化機能を活用して、ダッシュボード機能を提供します。この機能を使用すると、多次元メトリクスを一元的に収集、監視、可視化して、ビジネスの稼働状況を迅速に評価できます。このトピックでは、ダッシュボードのユースケース、背景、メトリクスの詳細、課金、およびクエリ方法について説明します。
ユースケース
オンラインでのメッセージ消費の例外をトラブルシューティングし、タイムリーなアラートを受信して、メッセージが速やかに処理されない場合に問題を迅速に特定します。
オンライン注文で問題が発生した場合、パイプライン経由のメッセージ配信を調査します。
メッセージトラフィックの傾向、分布パターン、またはメッセージ量を分析し、ビジネスの傾向分析や計画に役立てます。
アプリケーションの上流と下流の依存関係トポロジーを表示および分析し、システムアーキテクチャのアップグレードや最適化に役立てます。
バックグラウンド
Alibaba Cloud Message Queue for Apache RocketMQ のメッセージ送受信プロセスでは、キューのバックログ、バッファリングステータス、およびメッセージ処理の各段階における所要時間は、お客様のサービスのパフォーマンスとサーバーの稼働状況を直接反映します。したがって、Alibaba Cloud Message Queue for Apache RocketMQ の主要なメトリクスは、主に以下のビジネスシナリオに関連しています。
コンシューマーラグのシナリオ
次の図は、トピックの特定のキューにおけるメッセージのステータスを示しています。

上記の図は、特定のトピックのキュー内のメッセージのステータスを示しています。Message Queue for Apache RocketMQ は、さまざまな処理段階でのメッセージ数と消費時間に関する統計を収集します。これらのメトリクスは、キュー内のメッセージの処理速度と蓄積を直接反映します。これらのメトリクスを観察することで、サービスの消費が異常であるかどうかを一次判断できます。これらのメトリクスの具体的な定義と計算式は次のとおりです。
カテゴリ | メトリック | 説明 | 計算式 |
メッセージ数メトリクス | インフライトメッセージ | コンシューマークライアントによって処理中ですが、まだ確認応答が完了していないメッセージ。 | 最後にプルされたメッセージのオフセット - 最後に確認応答されたメッセージのオフセット |
準備完了メッセージ | Message Queue for Apache RocketMQ 5.0 のブローカー上で準備が完了し、可視で消費可能なメッセージです。コンシューマーグループにタグフィルタリングが設定されている場合、準備完了メッセージにはフィルター条件に一致するメッセージのみが含まれます。 | 最大メッセージオフセット - 最後にプルされたメッセージのオフセット | |
コンシューマーラグ | 完全に処理されていないメッセージの総数。 | インフライトメッセージ数 + 準備完了メッセージ数 | |
メッセージレイテンシメトリクス | 準備完了時間 |
| 該当なし |
準備完了メッセージのキュー時間 | 現在時刻と最も古い準備完了メッセージの準備完了時間との差。 この時間は、コンシューマーによるメッセージプルの適時性を反映します。 | 現在時刻 - 最も古い準備完了メッセージの準備完了時間 | |
コンシューマーラグ時間 | 現在時刻と最も古い未確認応答メッセージの準備完了時間との差。 この時間は、コンシューマーによるメッセージ処理の適時性を反映します。 | 現在時刻 - 最も古い未確認応答メッセージの準備完了時間 |
コンシューマーラグが減少し続け 0 に近づき、コンシューマーラグ時間も短縮し続け 0 に近づく場合、消費速度が生産速度を上回り、バックログが解消されています。両方のメトリクスが 0 に近づくと、コンシューマーグループは生産速度に追いつき、バックログは正常に戻ります。
プッシュコンシューマーのシナリオ
プッシュコンシューマーは、メッセージのフェッチ、スレッド処理、およびリトライロジックをカプセル化します。初期化中にメッセージリスナーを登録すると、残りの処理は SDK が行います。

原則の詳細については、プッシュコンシューマー をご参照ください。
プッシュコンシューマー のシナリオでは、次のメトリクスがローカルバッファーキューの状態を測定します:
ローカルバッファーキュー内のメッセージ数:ローカルバッファーキュー内のメッセージの総数。
ローカルバッファーキュー内のメッセージサイズ:ローカルバッファーキュー内のすべてのメッセージの合計サイズ。
メッセージ待機時間:メッセージがローカルバッファーキューに一時的に保存される期間。
メトリックの詳細
メッセージ TPS、API 呼び出し数、メッセージ数は、4 KB の通常メッセージに基づいています。最終値を計算するには、このベースに実際のメッセージサイズとタイプに対応する係数を乗算します。計算ルールの詳細については、「How computing specifications work」をご参照ください。
次の表では、メトリックに関連するフィールドについて説明します。
フィールド | 値 |
メトリックタイプ |
|
ラベル |
|
ブローカーメトリック
メトリックタイプ | メトリック名 | 単位 | 説明 | ラベル |
ゲージ | rocketmq_instance_requests_max | count/s | インスタンス内で 1 分間に送受信されるメッセージの最大 TPS。このメトリックには、スロットリングされたリクエストは含まれません。 システムは 1 分間、1 秒ごとに 1 つのサンプルを収集します。60 個のサンプルのうち最大値が使用されます。 |
|
ゲージ | rocketmq_instance_requests_in_max | count/s | インスタンス内で 1 分間に送信されるメッセージの最大 TPS。このメトリックには、スロットリングされたリクエストは含まれません。 システムは 1 分間、1 秒ごとに 1 つのサンプルを収集します。60 個のサンプルのうち最大値が使用されます。 |
|
ゲージ | rocketmq_instance_requests_out_max | count/s | インスタンス内で 1 分間に消費されるメッセージの最大 TPS。このメトリックには、スロットリングされたリクエストは含まれません。 システムは 1 分間、1 秒ごとに 1 つのサンプルを収集します。60 個のサンプルのうち最大値が使用されます。 |
|
ゲージ | rocketmq_topic_requests_max | count/s | インスタンス内のトピックに 1 分間に送信されるメッセージの最大 TPS。このメトリックには、スロットリングされたリクエストは含まれません。 システムは 1 分間、1 秒ごとに 1 つのサンプルを収集します。60 個のサンプルのうち最大値が使用されます。 |
|
ゲージ | rocketmq_group_requests_max | count/s | インスタンス内のコンシューマーグループで 1 分間に消費されるメッセージの最大 TPS。このメトリックには、スロットリングされたリクエストは含まれません。 システムは 1 分間、1 秒ごとに 1 つのサンプルを収集します。60 個のサンプルのうち最大値が使用されます。 |
|
ゲージ | rocketmq_instance_requests_in_threshold | count/s | インスタンスにおけるメッセージ送信のスロットリングのしきい値。 |
|
ゲージ | rocketmq_instance_requests_out_threshold | count/s | インスタンスにおけるメッセージ消費のスロットリングのしきい値。 |
|
ゲージ | rocketmq_throttled_requests_in | count | スロットリングされたメッセージ送信リクエストの数。 |
|
ゲージ | rocketmq_throttled_requests_out | count | スロットリングされたメッセージ消費リクエストの数。 |
|
ゲージ | rocketmq_instance_elastic_requests_max | count/s | インスタンスにおけるメッセージ送受信の最大エラスティック TPS。 |
|
カウンター | rocketmq_requests_in_total | count | メッセージ送信に関連する API 呼び出しの数。 |
|
カウンター | rocketmq_requests_out_total | count | メッセージ消費に関連する API 呼び出しの数。 |
|
カウンター | rocketmq_messages_in_total | message | プロデューサーからブローカーに送信されたメッセージの数。 |
|
カウンター | rocketmq_messages_out_total | message | ブローカーからコンシューマーに配信されたメッセージの数。これには、処理中のメッセージ、正常に処理されたメッセージ、または処理に失敗したメッセージが含まれます。 |
|
カウンター | rocketmq_throughput_in_total | byte | プロデューサーからブローカーへのメッセージスループット。 |
|
カウンター | rocketmq_throughput_out_total | byte | ブローカーからコンシューマーへのメッセージスループット。この値には、処理中のメッセージ、正常に処理されたメッセージ、または処理に失敗したメッセージが含まれます。 |
|
カウンター | rocketmq_internet_throughput_out_total | byte | メッセージの送信によって消費されるアウトバウンドパブリックネットワークトラフィック。 |
|
ヒストグラム | rocketmq_message_size | byte | メッセージサイズの分布。送信成功時に記録されます。 分布バケットは次のとおりです。
|
|
ゲージ | rocketmq_consumer_ready_messages | message | 準備完了メッセージの数。 ブローカー上で準備が完了し、消費可能なメッセージの数。 このメトリックは、コンシューマーがまだプルしていないメッセージ量を示します。 |
|
ゲージ | rocketmq_consumer_inflight_messages | message | コンシューマークライアントで処理中であり、まだ確認応答されていないインフライトメッセージの数。 コンシューマークライアントで処理中であり、まだ消費結果が返されていないメッセージの総数。 |
|
ゲージ | rocketmq_consumer_queueing_latency | ms | 準備完了メッセージのキューイングレイテンシ。 現在時刻と最も古い準備完了メッセージの準備完了時刻との差。 このメトリックは、コンシューマーによるメッセージのプル速度を示します。 |
|
ゲージ | rocketmq_consumer_lag_latency | ms | 消費処理レイテンシ。 現在時刻と最も古い未消費メッセージの準備完了時刻との差。 このメトリックは、コンシューマーによるメッセージの処理速度を示します。 |
|
カウンター | rocketmq_send_to_dlq_messages | message | 1 分あたりにデッドレターキュー (DLQ) に送信されたメッセージの数。 メッセージの消費が設定された最大再配信試行回数を超えて失敗した場合、メッセージは DLQ に送信されます。 コンシューマーグループに設定されたデッドレターポリシーに応じて、これらの配信されなかったメッセージは指定された トピック に保存されるか、破棄されます。 |
|
ゲージ | rocketmq_storage_size | byte | インスタンスが使用するストレージ容量。すべてのファイルのサイズを含みます。 |
|
プロデューサーメトリック
メトリックタイプ | メトリック名 | 単位 | 説明 | ラベル |
ヒストグラム | rocketmq_send_cost_time | ms | 成功したメッセージ送信 API 呼び出しの所要時間の分布。 分布バケットは次のとおりです。
|
|
コンシューマーメトリック
メトリックタイプ | メトリック名 | 単位 | 説明 | ラベル |
ヒストグラム | rocketmq_process_time | ms | プッシュコンシューマーによるメッセージ処理の所要時間の分布。これには、成功した処理試行と失敗した処理試行の両方が含まれます。
分布バケットは次のとおりです。
|
|
ゲージ | rocketmq_consumer_cached_messages | message | プッシュコンシューマーのローカルキャッシュキュー内のメッセージ数。 |
|
ゲージ | rocketmq_consumer_cached_bytes | byte | プッシュコンシューマーのローカルキャッシュキュー内のメッセージの合計サイズ。 |
|
ヒストグラム | rocketmq_await_time | ms | プッシュコンシューマーのローカルキャッシュキューにおけるメッセージの待機時間の分布。
分布バケットは次のとおりです。
|
|
課金
ApsaraMQ for RocketMQ のダッシュボードメトリクスは、Alibaba Cloud Managed Service for Prometheus の基本メトリクスです。基本メトリクスに料金は発生しません。したがって、ダッシュボード機能も無料です。
前提条件
サービスリンクロールの作成
ロール名: AliyunServiceRoleForOns
ポリシー名: AliyunServiceRolePolicyForOns
アクセス許可: Message Queue for Apache RocketMQ がこのロールを使用して、Cloud Monitor や Application Real-Time Monitoring Service (ARMS) などのサービスにアクセスし、モニタリング、アラート機能、およびダッシュボード機能を有効にします。
詳細については、「サービスリンクロール」をご参照ください。
ダッシュボードの表示
ApsaraMQ for RocketMQ では、次のページからダッシュボードを表示できます。
[ダッシュボード] ページ:インスタンス内のすべてのトピックとグループのメトリクスを表示します。
[インスタンスの詳細] ページ:特定のインスタンスのプロデューサーの概要、課金メトリクス、スロットリング メトリクスを表示します。
[トピックの詳細] ページ:特定のトピックの生成メトリクスとプロデューサー クライアント メトリクスを表示します。
[グループ詳細] ページ:特定のグループのメッセージバックログ メトリクスとコンシューマー クライアント メトリクスを表示します。
ApsaraMQ for RocketMQコンソールにログインします。 左側のナビゲーションウィンドウで、インスタンス数 をクリックします。
上部のナビゲーションバーで、中国 (杭州) などのリージョンを選択します。 [インスタンス] ページで、管理するインスタンスの名前をクリックします。
次のいずれかの方法でダッシュボードを表示します。
[インスタンスの詳細] ページ:インスタンスの詳細 ページで、ダッシュボード タブをクリックします。
[ダッシュボード] ページ:左側メニューで、概要 をクリックします。
[トピックの詳細] ページ:左側メニューで、トピックの管理 をクリックします。トピックリストで、対象のトピックの名前をクリックします。次に、トピックの詳細 ページで、ダッシュボード タブをクリックします。
[グループ詳細] ページ:左側メニューで、グループ管理 をクリックします。グループリストで、対象のグループの名前をクリックします。次に、グループ詳細 ページで、ダッシュボード タブをクリックします。
ダッシュボード FAQ
ダッシュボードのメトリクスデータを取得するにはどうすればよいですか?
メインアカウントで、ARMS コンソール にログオンします。
左側のナビゲーションペインで、[統合センター] をクリックします。
[統合センター] ページで、検索ボックスに
RocketMQを入力し、検索アイコンをクリックします。検索結果で、[Alibaba Cloud RocketMQ (5.0) サービス] など、統合するクラウドサービスを選択します。 詳細については、「ステップ 1: クラウドサービスのモニタリングデータを統合する」をご参照ください。
統合が成功すると、左側のナビゲーションペインで [統合管理] をクリックします。
[インテグレーション管理] ページで、[クラウドサービスリージョン環境] タブをクリックします。
[クラウドサービスリージョン環境] リストで、対象の環境の名前をクリックして、クラウドサービス環境の詳細ページに移動します。
[コンポーネント管理] タブの 基本情報 セクションで、[Prometheus インスタンス] の後にあるクラウドサービスリージョンをクリックします。
設定 タブでは、さまざまなデータアクセス方法を取得できます。
ダッシュボードのメトリクスデータをセルフマネージドの Grafana インスタンスに統合するにはどうすればよいですか?
ApsaraMQ for RocketMQ のすべてのメトリックデータは、お客様の Managed Service for Prometheus インスタンスに保存されます。ダッシュボードのメトリックデータを取得する方法の手順に従ってクラウドサービスを統合し、環境名と HTTP API アドレスを取得します。その後、API を使用して ApsaraMQ for RocketMQ のダッシュボードのメトリックデータを、お客様の自己管理型の Grafana インスタンスに統合できます。詳細については、「HTTP API アドレスを使用して Grafana または自己管理アプリケーションを Prometheus に接続し、データにアクセスする」をご参照ください。
インスタンスの最大 TPS 値は何を意味しますか?
最大 TPS:この値は 1 分間にわたって計算され、1 秒ごとに 1 つのサンプルが取得されます。最終結果は、これら 60 個のサンプルのうちの最大値です。
例:
あるインスタンスが 1 分間に 60 個のメッセージを生成するとします(すべて通常のメッセージで、それぞれ 4 KB のサイズ)。インスタンスの生成レートは 1 分あたり 60 メッセージです。
60 個のメッセージすべてが最初の 1 秒間に送信された場合、その 1 分間におけるインスタンスの各秒の TPS 値は 60、0、0、...、0 となります。
最大インスタンス TPS = 60 TPS。
最初の 1 秒間に 40 個のメッセージが送信され、2 秒目に 20 個のメッセージが送信された場合、その 1 分間におけるインスタンスの各秒の TPS 値は 40、20、0、0、...、0 となります。
最大インスタンス TPS = 40 TPS。
生成レートがコンシューマーラグよりもはるかに高いのはなぜですか?
生成レートはトピックレベルで計算され、タグに関係なくすべてのメッセージがカウントされます。コンシューマーラグはコンシューマーグループレベルで計算され、タグフィルタリングの影響を受けます。コンシューマーグループのフィルター条件に一致するメッセージのみがカウントされます。トピック内のほとんどのメッセージがコンシューマーグループのタグフィルター条件に一致しない場合、コンシューマーラグは生成レートよりもはるかに小さくなる可能性があります。
グループ詳細ページのダッシュボードにあるトピックのドロップダウンリストに一部のトピックしか表示されない、または「None」しか表示されないのはなぜですか?
グループ詳細 ページのダッシュボードのトピックドロップダウンリストには、最近メッセージを送信したトピックのみが表示されます。最近メッセージを送信していないトピックは、作成された後でもリストには表示されません。他の購読トピックのメトリクスを表示するには、ドロップダウンリストにトピック名を手動で入力し、Enter キーを押します。