ApsaraMQ for RocketMQ は、Alibaba Cloud ARMS Prometheus Service と Grafana のメトリックストレージおよび表示機能を活用したダッシュボード機能を提供します。この機能は、包括的で多次元的なメトリックモニタリングとデータ収集を提供し、ビジネスの状況を迅速に把握するのに役立ちます。このトピックでは、ダッシュボード機能の一般的なシナリオ、背景情報、メトリックの詳細、課金、およびクエリメソッドについて説明します。
シナリオ
シナリオ 1: オンラインメッセージの消費が異常で、メッセージが迅速に処理されません。アラートを受信し、問題を迅速に特定する必要があります。
シナリオ 2: 一部のオンライン注文のステータスが異常です。対応するメッセージリンクを通じてメッセージが正しく送信されたかどうかを確認する必要があります。
シナリオ 3: ビジネストレンドの分析と計画のために、メッセージトラフィックの傾向、分布特性、またはメッセージ量を分析する必要があります。
シナリオ 4: アーキテクチャのアップグレードや最適化のために、アップストリームおよびダウンストリームアプリケーションの依存トポロジーを表示および分析する必要があります。
ビジネス背景
ApsaraMQ for RocketMQ のメッセージ送受信フローでは、キュー内のメッセージバックログ、バッファリングステータス、各メッセージ処理段階にかかる時間などの要因が、現在のサービス処理パフォーマンスとサーバー側の運用状況を直接反映します。したがって、ApsaraMQ for RocketMQ の主要なメトリックは、主に次のシナリオに関連しています。
メッセージ蓄積シナリオ
次の図は、指定された Topic のキュー内のメッセージのステータスを示しています。

ApsaraMQ for RocketMQ は、さまざまな処理段階でのメッセージ数と所要時間に関する統計を収集します。これらのメトリックは、メッセージ処理率とキュー内のバックログを直接反映します。これらのメトリックを監視することで、サービスの消費が異常であるかどうかを判断できます。次のセクションでは、これらのメトリックの意味と、それらを計算するために使用される数式について説明します。
カテゴリ | メトリック | 定義 | 計算式 |
メッセージ数メトリック | Inflight メッセージ | コンシューマークライアントによって処理中であるが、クライアントがまだ消費結果を返していないメッセージ。 | 最新のプルされたメッセージのオフセット - 最新の送信されたメッセージのオフセット |
Ready メッセージ | ApsaraMQ for RocketMQ サーバー上で準備が整っているメッセージ。メッセージはコンシューマーに表示され、消費可能です。 | 最大メッセージオフセット - 最新のプルされたメッセージのオフセット | |
コンシューマーラグ | 未処理メッセージの総数。 | Inflight メッセージ数 + Ready メッセージ数 | |
メッセージ期間メトリック | Ready メッセージの Ready 時間 |
| 該当なし |
Ready メッセージのキュー時間 | 最も古い Ready メッセージの経過時間。 この値は、コンシューマーがメッセージをどれだけ迅速にプルするかを示します。 | 現在時刻 - 最も古い Ready メッセージの Ready 時間 | |
コンシューマーラグ時間 | 応答を待っている最も古いメッセージが Ready になってからの経過時間。 この値は、コンシューマーがメッセージをどれだけ迅速に処理するかを示します。 | 現在時刻 - 応答を待っている最も古いメッセージの Ready 時間 |
PushConsumer 消費シナリオ
Push コンシューマーの場合、リアルタイムのメッセージ処理は、SDK 内の典型的な Reactor スレッドモデルに基づいています。次の図に示すように、SDK には組み込みのロングポーリングスレッドがあります。このスレッドは、非同期でメッセージを SDK の内部キャッシュキューにプルします。その後、メッセージはコンシューマースレッドに送信され、リスナーをトリガーしてローカルの消費ロジックを実行します。

詳細については、「PushConsumer」をご参照ください。
PushConsumer 消費シナリオでは、ローカルキャッシュキューに関連するメトリックは次のとおりです。
ローカルキャッシュキュー内のメッセージ数: ローカルキャッシュキューに保存されているメッセージの総数。
ローカルキャッシュキュー内のメッセージのサイズ: ローカルキャッシュキューに保存されているすべてのメッセージの合計サイズ。
メッセージ待機時間: メッセージが消費される前にローカルキャッシュキューに保存されている期間。
メトリックの詳細
メッセージングの秒間トランザクション数 (TPS)、メッセージング API 呼び出し、またはメッセージ量に関連するメトリックの値は、サイズが 4 KB の通常メッセージに基づいて計算されます。基本サイズより大きいメッセージや高度な機能を使用するメッセージには、乗数が適用されます。計算ルールの詳細については、「計算仕様」をご参照ください。
メトリックのフィールドは次のように説明されます。
フィールド | 値 |
メトリックタイプ |
|
label |
|
サーバーサイドメトリック
メトリックタイプ | メトリック名 | 単位 | メトリックの説明 | ラベル |
Gauge | rocketmq_instance_requests_max | count/s | インスタンスによって送受信されるメッセージの最大秒間トランザクション数 (TPS)。この値には、スロットルされたリクエストは含まれません。 値は、1 分間に 1 秒に 1 回取得された 60 サンプルの最大値です。 |
|
Gauge | rocketmq_instance_requests_in_max | counts/second | インスタンスから送信されるメッセージの最大秒間トランザクション数 (TPS)。この値には、スロットルされたリクエストは含まれません。 値は、1 分間に 1 秒に 1 回取得された 60 サンプルの最大値です。 |
|
Gauge | rocketmq_instance_requests_out_max | counts/s | インスタンスでのメッセージ消費の最大秒間トランザクション数 (TPS)。この値には、スロットルされたリクエストは含まれません。 値は、1 分間に 1 秒に 1 回取得された 60 サンプルの最大値です。 |
|
Gauge | rocketmq_topic_requests_max | counts/s | インスタンスから Topic に送信されるメッセージの最大秒間トランザクション数 (TPS)。スロットルされたリクエストは含まれません。 値は、1 分間に 1 秒に 1 回取得された 60 サンプルの最大値です。 |
|
Gauge | rocketmq_group_requests_max | count/s | インスタンス内の使用者グループによるメッセージ消費の最大秒間トランザクション数 (TPS)。この値には、スロットルされたリクエストは含まれません。 値は、1 分間に 1 秒に 1 回取得された 60 サンプルの最大値です。 |
|
Gauge | rocketmq_instance_requests_in_threshold | counts/s | インスタンスメッセージ送信のレート制限しきい値。 |
|
Gauge | rocketmq_instance_requests_out_threshold | counts per second | インスタンスメッセージ消費のスロットルしきい値。 |
|
Gauge | rocketmq_throttled_requests_in | count | スロットルされたメッセージ送信の数。 |
|
Gauge | rocketmq_throttled_requests_out | count | メッセージ消費がスロットルされた回数。 |
|
Gauge | rocketmq_instance_elastic_requests_max | count/s | インスタンス上のメッセージの最大エラスティック秒間トランザクション数 (TPS)。 |
|
Counter | rocketmq_requests_in_total | count | メッセージ送信 API の呼び出し回数。 |
|
Counter | rocketmq_requests_out_total | count | メッセージ消費のための API 呼び出しの数。 |
|
Counter | rocketmq_messages_in_total | message | プロデューサーがサーバーに送信するメッセージの数。 |
|
Counter | rocketmq_messages_out_total | Message | サービスがコンシューマーに配信するメッセージの数。この数には、コンシューマーが処理中、正常に処理済み、または処理に失敗したメッセージが含まれます。 |
|
Counter | rocketmq_throughput_in_total | byte | プロデューサーがサービスに送信するメッセージのスループット。 |
|
Counter | rocketmq_throughput_out_total | byte | サービスからコンシューマーに配信されるメッセージのスループット。メッセージ数には、処理中、正常に処理済み、および失敗したメッセージが含まれます。 |
|
Counter | rocketmq_internet_throughput_out_total | byte | メッセージの送受信のためのダウンストリームインターネットトラフィック。 |
|
Histogram | rocketmq_message_size | byte | 正常に送信されたメッセージのサイズ分布。 サイズ範囲は次のとおりです。
|
|
Gauge | rocketmq_consumer_ready_messages | message | Ready メッセージの数。 これらは、コンシューマーが処理する準備ができているサービス上のメッセージです。 このメトリックは、コンシューマーがまだ処理を開始していないメッセージの数を示します。 |
|
Gauge | rocketmq_consumer_inflight_messages | message | Inflight メッセージの数。 コンシューマークライアントが処理中であるが、まだ消費結果を返していないメッセージの総数。 |
|
Gauge | rocketmq_consumer_queueing_latency | ms | Ready メッセージのキュー時間。 最も古い Ready メッセージがキューで待機している時間。 この時間は、コンシューマーがメッセージをどれだけ迅速にプルするかを示します。 |
|
Gauge | rocketmq_consumer_lag_latency | ms | コンシューマー処理レイテンシ。 最も古い未消費メッセージが Ready になってからの時間。 これは、コンシューマーがメッセージをどれだけ迅速に処理するかを示します。 |
|
Counter | rocketmq_send_to_dlq_messages | message | 1 分あたりにデッドレターになるメッセージの数。 メッセージは、最大再配信試行回数後に配信されない場合、デッドレターになります。 グループのデッドレターポリシー構成に基づいて、これらのメッセージは指定された Topic に保存されるか、破棄されます。 |
|
Gauge | rocketmq_storage_size | byte | インスタンスによって使用されるストレージスペースのサイズ。これには、すべてのファイルのサイズが含まれます。 |
|
プロデューサーメトリック
メトリックタイプ | メトリック名 | 単位 | メトリックの説明 | ラベル |
Histogram | rocketmq_send_cost_time | ms | メッセージ送信 API の成功した呼び出しのレイテンシ分布。 分布間隔は次のとおりです。
|
|
コンシューマーメトリック
メトリックタイプ | メトリック名 | 単位 | メトリックの説明 | ラベル |
Histogram | rocketmq_process_time | ms | PushConsumer のメッセージ処理時間の分布。これには、成功したメッセージと失敗したメッセージの両方が含まれます。
分布間隔は次のとおりです。
|
|
Gauge | rocketmq_consumer_cached_messages | message | PushConsumer のローカルバッファーキュー内のメッセージ数。 |
|
Gauge | rocketmq_consumer_cached_bytes | byte | PushConsumer ローカルバッファーキュー内のメッセージの合計サイズ。 |
|
Histogram | rocketmq_await_time | ms | ローカル PushConsumer バッファーキューでメッセージが待機する時間の分布。
分布間隔は次のとおりです。
|
|
課金
The dashboard metrics for ApsaraMQ for RocketMQ are considered basic metrics in Alibaba Cloud ARMS Prometheus Service. Basic metrics are free of charge. Therefore, the dashboard feature is free to use.
前提条件
サービスリンクロールを作成します。
ロール名: AliyunServiceRoleForOns
ポリシー名: AliyunServiceRolePolicyForOns
権限: ApsaraMQ for RocketMQ がこのロールを使用して CloudMonitor および ARMS サービスにアクセスし、モニタリング、アラート、およびダッシュボード機能を有効にすることを許可します。
詳細については、「サービスリンクロール」をご参照ください。
ダッシュボードの表示
ApsaraMQ for RocketMQ では、次の場所からダッシュボードを表示できます。
ダッシュボード ページ: インスタンス内のすべての Topic とグループのメトリックを表示できます。
インスタンスの詳細 ページ: 指定されたインスタンスのプロデューサーの概要情報、課金関連のメトリック、およびスロットル関連のメトリックを表示します。
トピックの詳細 ページ: 指定された Topic の本番関連メトリックとプロデューサークライアント関連メトリックを表示します。
グループ詳細 ページ: 指定されたグループのメッセージバックログとコンシューマークライアントに関するメトリックを表示します。
ApsaraMQ for RocketMQ コンソールにログインします。左側のナビゲーションウィンドウで、インスタンス数 をクリックします。
上部のナビゲーションバーで、中国 (杭州) などのリージョンを選択します。[インスタンス] ページで、管理するインスタンスの名前をクリックします。
次のいずれかの方法を使用してダッシュボードを表示します。
インスタンスの詳細 ページ: インスタンスの詳細 ページで、ダッシュボード タブをクリックします。
ダッシュボード ページ: 左側のナビゲーションウィンドウで、ダッシュボード をクリックします。
トピックの詳細 ページ: 左側のナビゲーションウィンドウで、トピックの管理 をクリックします。Topic リストで、ターゲット Topic 名をクリックします。トピックの詳細 ページで、ダッシュボード タブをクリックします。
グループ詳細 ページ: 左側のナビゲーションウィンドウで、グループ管理 をクリックします。グループリストで、ターゲットグループの名前をクリックします。次に、グループ詳細 ページで、ダッシュボード タブをクリックします。
ダッシュボードに関するよくある質問
ダッシュボードのメトリックデータを取得するにはどうすればよいですか。
Alibaba Cloud アカウントを使用してARMS コンソールにログインします。
左側のナビゲーションウィンドウで、[インテグレーションセンター] をクリックします。
[インテグレーションセンター] ページで、検索テキストボックスに
RocketMQと入力し、検索アイコンをクリックします。検索結果で、[Alibaba Cloud RocketMQ (5.0) Service] など、統合したい Alibaba Cloud サービスを選択します。統合手順の詳細については、「ステップ 1: Alibaba Cloud サービスのモニタリングデータを統合する」をご参照ください。
プロビジョニングが成功したら、左側のナビゲーションウィンドウで [プロビジョニング] をクリックします。
[プロビジョニング] ページで、[クラウドサービスリージョン環境] タブをクリックします。
[クラウドサービスリージョン環境] リストで、ターゲット環境名をクリックして、クラウドサービス環境詳細ページを開きます。
[コンポーネント管理] タブの [基本情報] エリアで、[Prometheus インスタンス] の横にあるクラウドサービスリージョンをクリックします。
[設定] タブで、さまざまなデータアクセス方法を取得できます。
ダッシュボードのメトリックデータを自己管理の Grafana に統合するにはどうすればよいですか。
ApsaraMQ for RocketMQ のすべてのメトリックデータは、Managed Service for Prometheus に保存されます。ダッシュボードのメトリックデータを取得するにはどうすればよいですか。 の手順に従って Alibaba Cloud サービスに接続し、環境名と HTTP API アドレスを取得します。その後、API を使用して ApsaraMQ for RocketMQ のダッシュボードメトリックデータを自己管理の Grafana に統合できます。詳細については、「HTTP API アドレスを使用して Prometheus データを Grafana または自己管理アプリケーションに統合する」をご参照ください。
インスタンスの TPS Max 値を理解するにはどうすればよいですか。
TPS Max 値: 統計期間は 1 分です。サンプルは 1 秒ごとに取得され、結果はこれら 60 のサンプル値の最大値になります。
次に例を示します。
インスタンスが 1 分間に 60 メッセージを生成すると仮定します。すべてのメッセージは通常メッセージで、それぞれのサイズは 4 KB です。インスタンスの生成レートは 1 分あたり 60 メッセージです。
これらの 60 メッセージが最初の 1 秒で送信された場合、その分におけるインスタンスの各秒の TPS は 60, 0, 0, ..., 0 となります。
インスタンスの TPS Max 値 = 60 TPS。
これらの 60 メッセージのうち 40 が最初の 1 秒で送信され、20 が 2 秒目で送信された場合、その分におけるインスタンスの各秒の TPS は 40, 20, 0, 0, ..., 0 となります。
インスタンスの TPS Max 値 = 40 TPS。