分散メッセージングシステムでは、プロデューサー、コンシューマー、ブローカーインスタンスにわたってメトリックが生成されますが、これらを手動で関連付けることは困難です。ApsaraMQ for RocketMQ は、Alibaba Cloud Managed Service for Prometheus と Grafana を利用した組み込みのダッシュボードを提供し、これらのメトリックを単一のビューに集約します。これにより、ツールを切り替えることなく、消費遅延の検出、メッセージ蓄積傾向の追跡、メッセージ配信の検証、および課金額の概算が可能です。
ユースケース
消費異常検知:コンシューマーの処理が遅れたり、失敗したりした場合にアラートを受け取り、影響を受けるグループとトピックを特定します。
メッセージ配信の検証:特定のオンライン注文のステータスが異常な場合に、メッセージが期待どおりに送信されていることを確認します。
トラフィック傾向分析: 生産および消費レートを時間の経過とともに追跡し、容量の予測およびトラフィックピークへの対応計画を行います。
依存関係トポロジーのレビュー:アップストリームとダウンストリームのアプリケーションの依存関係をマッピングし、アーキテクチャのアップグレードをガイドします。
前提条件
開始する前に、以下を確認してください。
AliyunServiceRoleForOns サービスリンクロールが作成されていること (ポリシー名:AliyunServiceRolePolicyForOns)。これにより、ApsaraMQ for RocketMQ は Cloud Monitor および Application Real-Time Monitoring Service (ARMS) にアクセスし、モニタリング、アラート機能、ダッシュボード機能を利用できます。詳細については、「サービスリンクロール」をご参照ください。
課金
ダッシュボードのメトリックは、ARMS Managed Service for Prometheus の基本メトリックです。基本メトリックは無料であるため、ダッシュボードに追加費用は発生しません。
メッセージ蓄積の仕組み
ApsaraMQ for RocketMQ がメッセージ処理状態をどのように追跡するかを理解することは、ダッシュボードのメトリック、特に消費の健全性を示す主要な指標であるコンシューマーラグを解釈するために不可欠です。

次の図は、キュー内の各メッセージの状態を示しています。ブローカーは各段階でメッセージ数と処理時間を計算します。これらのメトリックは、コンシューマーがどれだけ迅速にメッセージをプルして確認 (ACK) するか、そして蓄積が発生しているかどうかを示します。
メッセージ数メトリック
| メトリック | 説明 | 計算式 |
|---|---|---|
| Inflight メッセージ | コンシューマーがプルしたが、まだ確認 (ACK) されていないメッセージ。 | 最新のプルオフセット - 最新の確認済みオフセット |
| Ready メッセージ | ブローカーに保存され、コンシューマーに表示され、消費可能なメッセージ。 | 最大オフセット - 最新のプルオフセット |
| コンシューマーラグ | Inflight メッセージと Ready メッセージの両方を含む、未処理メッセージの合計。コンシューマーラグの増加は、コンシューマーがプロデューサーに追いついていないことを示します。 | Inflight メッセージ + Ready メッセージ |
タイミングメトリック
| メトリック | 説明 | 計算式 |
|---|---|---|
| 準備完了時間 | メッセージが消費可能になる時間。メッセージタイプによって異なります (下記参照)。 | N/A |
| Ready メッセージのキューイング時間 | 最も古い Ready メッセージが待機している時間。コンシューマーがメッセージをプルする速さを示します。 | 現在時刻 - 最も古い Ready メッセージの準備完了時間 |
| コンシューマーラグ時間 | 最も古い未確認メッセージが待機している時間。全体的な処理速度を示します。 | 現在時刻 - 最も古い未確認メッセージの準備完了時間 |
メッセージタイプ別の準備完了時間:
通常メッセージまたは順序付きメッセージ:ブローカーがメッセージを保存した時間。
スケジュールメッセージ:スケジュールされた配信時間。遅延メッセージの場合、遅延期間が経過した時間。
トランザクションメッセージ:トランザクションがコミットされた時間。
ダッシュボードの表示
ApsaraMQ for RocketMQ コンソールにログインします。左側のナビゲーションウィンドウで、[インスタンス] をクリックします。
上部のナビゲーションバーで、[中国 (杭州)] などのリージョンを選択します。[インスタンス] ページで、管理するインスタンスの名前をクリックします。
次のいずれかの方法でダッシュボードを開きます。
[インスタンス詳細] ページで、[ダッシュボード] タブをクリックします。
左側のナビゲーションウィンドウで、[ダッシュボード] をクリックします。
左側のナビゲーションウィンドウで、[トピック] をクリックします。トピック名をクリックして [トピック詳細] ページを開き、[ダッシュボード] タブをクリックします。
左側のナビゲーションウィンドウで、[グループ] をクリックします。グループ名をクリックして [グループ詳細] ページを開き、[ダッシュボード] タブをクリックします。
ダッシュボードのメトリック
メトリックは、プロデューサー、コンシューマー、インスタンストップ 20、課金の 4 つのカテゴリに分類されます。
すべてのメトリックは 1 分間隔で収集されます。データは過去 15 日間利用可能で、最大クエリ範囲は 24 時間です。
プロデューサーメトリック
| メトリック | 説明 | 単位 |
|---|---|---|
| メッセージ生成レート | トピックの生成レートと API 呼び出しレート。 | messages/s, calls/s |
| ピークメッセージ生成レート | 最大生成レート。 | messages/s |
| 生成されたメッセージ総数 | インスタンスで生成されたメッセージの総数。 | messages |
| メッセージ生成 API 呼び出し成功率 | トピックの送信 API 呼び出しの成功率。 | % |
| メッセージ生成 API 呼び出しレイテンシ | トピックの送信レイテンシ。 | ms |
コンシューマーメトリック
| メトリック | 説明 | 単位 |
|---|---|---|
| 平均消費成功率 | インスタンス内のすべてのメッセージにわたる消費成功率。 | % |
| 蓄積メッセージ (Ready + Inflight) | インスタンス内の蓄積メッセージの総数。Ready メッセージと Inflight メッセージを合わせたもの。 | messages |
| Inflight メッセージ | コンシューマーによって処理中であり、まだ確認 (ACK) されていないメッセージ。 | messages |
| Ready メッセージ | ブローカー上で消費可能なメッセージ。未処理メッセージの規模を反映します。 | messages |
| Ready メッセージのキューイング時間 | 最も古い Ready メッセージが利用可能になってからの時間。概要にはインスタンスの平均が表示され、特定のチャートにはグループとトピックごとの値が表示されます。遅延の影響を受けやすいワークロードでは注意深く監視してください。 | ms |
| メッセージ消費レート | グループがメッセージを消費するレート。 | messages/s |
| ピークメッセージ消費レート | 最大消費レート。 | messages/s |
| 消費されたメッセージ総数 | インスタンスで消費されたメッセージの総数。 | messages |
| 消費蓄積量 | グループの蓄積メッセージ。Ready メッセージと Inflight メッセージを含みます。 | messages |
| メッセージ処理レイテンシ | グループがメッセージの消費を開始してから完了するまでの時間。 | ms |
| コンシューマークライアントのローカル待機時間 | メッセージが処理開始前にコンシューマークライアントで待機する時間。 | ms |
| 消費成功率 | メッセージ消費の成功率。 | % |
| コンシューマークライアントのアクセスプロトコル比率 | プロトコルタイプ (TCP vs. HTTP) 別の消費メッセージの分布。 | -- |
インスタンストップ 20 の概要
| メトリック | 単位 |
|---|---|
| メッセージ生成レートのトップ 20 トピック | messages/s |
| メッセージ消費レートのトップ 20 グループ | messages/s |
| Ready メッセージ数のトップ 20 グループ | messages |
| Ready メッセージのキューイング時間のトップ 20 グループ | ms |
| 蓄積メッセージ (Ready + Inflight) 数のトップ 20 グループ | messages |
| Inflight メッセージ数のトップ 20 グループ | messages |
| 消費処理レイテンシのトップ 20 グループ | ms |
| コンシューマークライアントのローカル待機時間のトップ 20 グループ | ms |
| メッセージ生成 API 呼び出し失敗率のトップ 20 トピック | % |
| メッセージ消費失敗率のトップ 20 グループ | % |
課金メトリック
課金メトリックを使用して、ピーク TPS や API 呼び出し量など、インスタンスのコスト関連項目を概算します。
課金メトリックの値には、大きなメッセージや高度な機能に対する乗数が含まれます。
大きなメッセージの乗数:課金単位は 4 KB です。16 KB のメッセージは 16 / 4 = 4 回の API 呼び出しとしてカウントされます。
高度な機能の乗数:順序付き、スケジュール、遅延、トランザクションメッセージは、通常メッセージの 5 倍の API 呼び出しとしてカウントされます。
| メトリック | 説明 | 単位 |
|---|---|---|
| ピーク生成 TPS | 最大生成 TPS。課金のためのピーク TPS 仕様を概算するために使用します。 | calls/s |
| ピーク消費 TPS | 最大消費 TPS。課金のためのピーク TPS 仕様を概算するために使用します。 | calls/s |
| ピーク TPS | 生成と消費を合わせた最大 TPS。課金のためのピーク TPS 仕様を概算するために使用します。 | calls/s |
| API 呼び出し総数 | API 呼び出しの総数。課金のための API 呼び出し量を概算するために使用します。 | calls |
| 平均メッセージサイズ | 生成されたすべてのメッセージの平均サイズ。 | bytes |
| 生成および消費 TPS | 生成と消費を合わせた TPS。 | calls/s |
| 日次 API 呼び出し数 | 生成と消費の API 呼び出しの日次合計。 | calls |
Prometheus メトリックリファレンス
TPS、メッセージ数、およびメッセージ総数の計算では、4 KB の通常メッセージを基本単位として使用します。サイズと高度な機能の乗数は、この基本単位に適用されます。
すべてのメトリックは、増加または減少する可能性がある瞬間的な測定値である Gauge タイプを使用します。
共通ラベル
| ラベル | 説明 |
|---|---|
instance_id | ApsaraMQ for RocketMQ インスタンス ID |
topic | トピック名 |
message_type | メッセージタイプ:normal、fifo、transaction、または delay |
uid | Alibaba Cloud アカウント ID |
protocol_type | プロトコル:tcp または http |
client_group / group_id | コンシューマーグループ識別子 |
サーバーサイドメトリック
| メトリック名 | 単位 | 説明 | ラベル |
|---|---|---|---|
rocketmq_instance_requests_threshold | count/s | インスタンスのスロットリングしきい値。 | uid, instance_id |
rocketmq_instance_requests_max | count/s | 1分あたりの最大 TPS (スロットリングされたリクエストを除く)。1分以内の 60 の秒間サンプルのうち最も高い値として計算されます。 | uid, instance_id |
プロデューサーメトリック
| メトリック名 | 単位 | 説明 | ラベル |
|---|---|---|---|
rocketmq_producer_requests | count | メッセージ送信のための課金対象 API 呼び出し。 | uid, instance_id, topic, message_type |
rocketmq_producer_messages | messages | 送信されたメッセージの数。 | uid, instance_id, topic, message_type |
rocketmq_producer_message_size_bytes | bytes | 送信されたメッセージの合計サイズ。 | uid, instance_id, topic, message_type |
rocketmq_producer_send_success_rate | % | 送信成功率。 | uid, instance_id, topic |
rocketmq_producer_failure_api_calls | count | 失敗した送信 API 呼び出し。 | uid, instance_id, topic |
rocketmq_producer_send_rt_milliseconds_avg | ms | 平均送信レイテンシ。 | uid, instance_id, topic |
rocketmq_producer_send_rt_milliseconds_min | ms | 最小送信レイテンシ。 | uid, instance_id, topic |
rocketmq_producer_send_rt_milliseconds_max | ms | 最大送信レイテンシ。 | uid, instance_id, topic |
rocketmq_producer_send_rt_milliseconds_p95 | ms | P95 送信レイテンシ。 | uid, instance_id, topic |
rocketmq_producer_send_rt_milliseconds_p99 | ms | P99 送信レイテンシ。 | uid, instance_id, topic |
コンシューマーメトリック
| メトリック名 | 単位 | 説明 | ラベル |
|---|---|---|---|
rocketmq_consumer_requests | count | メッセージ消費のための API 呼び出し。 | uid, instance_id, topic, client_group, protocol_type |
rocketmq_consumer_send_back_requests | count | 消費に失敗したメッセージを返すための API 呼び出し。 | uid, instance_id, topic, group_id |
rocketmq_consumer_send_back_messages | messages | 消費失敗後にコンシューマーによって返されたメッセージ。 | uid, instance_id, topic, group_id |
rocketmq_consumer_messages | messages | 消費されたメッセージの数。 | uid, instance_id, topic, client_group, protocol_type |
rocketmq_consumer_message_size_bytes | bytes | 消費されたメッセージのサイズ (1分間の累積)。 | uid, instance_id, topic, client_group, protocol_type |
rocketmq_consumer_ready_and_inflight_messages | messages | コンシューマーラグ:Ready メッセージと Inflight メッセージの合計。 | uid, instance_id, topic, group_id |
rocketmq_consumer_ready_messages | messages | Ready メッセージ。maxOffset - lastPullOffset として計算されます。 | uid, instance_id, topic, group_id |
rocketmq_consumer_inflight_messages | messages | Inflight メッセージ。lastPullOffset - committedOffset として計算されます。 | uid, instance_id, topic, group_id |
rocketmq_consumer_queue_time_milliseconds | ms | メッセージのキューイング時間。 | uid, instance_id, topic, group_id |
rocketmq_consumer_message_await_time_milliseconds_avg | ms | 平均コンシューマークライアントローカル待機時間。 | uid, instance_id, topic, group_id |
rocketmq_consumer_message_await_time_milliseconds_min | ms | 最小コンシューマークライアントローカル待機時間。 | uid, instance_id, topic, group_id |
rocketmq_consumer_message_await_time_milliseconds_max | ms | 最大コンシューマークライアントローカル待機時間。 | uid, instance_id, topic, group_id |
rocketmq_consumer_message_await_time_milliseconds_p95 | ms | P95 コンシューマークライアントローカル待機時間。 | uid, instance_id, topic, group_id |
rocketmq_consumer_message_await_time_milliseconds_p99 | ms | P99 コンシューマークライアントローカル待機時間。 | uid, instance_id, topic, group_id |
rocketmq_consumer_message_process_time_milliseconds_avg | ms | 平均メッセージ処理レイテンシ。 | uid, instance_id, topic, group_id |
rocketmq_consumer_message_process_time_milliseconds_min | ms | 最小メッセージ処理レイテンシ。 | uid, instance_id, topic, group_id |
rocketmq_consumer_message_process_time_milliseconds_max | ms | 最大メッセージ処理レイテンシ。 | uid, instance_id, topic, group_id |
rocketmq_consumer_message_process_time_milliseconds_p95 | ms | P95 メッセージ処理レイテンシ。 | uid, instance_id, topic, group_id |
rocketmq_consumer_message_process_time_milliseconds_p99 | ms | P99 メッセージ処理レイテンシ。 | uid, instance_id, topic, group_id |
rocketmq_consumer_consume_success_rate | % | 消費成功率。 | uid, instance_id, topic, group_id |
rocketmq_consumer_failure_api_calls | count | 失敗した消費 API 呼び出し。 | uid, instance_id, topic, group_id |
rocketmq_consumer_to_dlq_messages | messages | デッドレターキュー (DLQ) に送信されたメッセージ。 | uid, instance_id, topic, group_id |
よくある質問
ダッシュボードから生メトリックデータを取得する方法
ダッシュボードのメトリックは ARMS Managed Service for Prometheus に保存されます。生データにアクセスするには、次の手順を実行します。
Alibaba Cloud アカウントで ARMS コンソールにログインします。
左側のナビゲーションウィンドウで、[インテグレーションセンター] をクリックします。
RocketMQを検索し、[Alibaba Cloud RocketMQ (4.0) Service] を選択します。セットアップの詳細については、「Alibaba Cloud サービスのモニタリングデータを統合する」をご参照ください。統合が成功したら、左側のナビゲーションウィンドウで [プロビジョニング] をクリックします。
[クラウドサービスエリア環境] リストで、ターゲット環境名をクリックします。
[コンポーネント管理] タブの [基本情報] セクションで、[Prometheus インスタンス] のリージョンリンクをクリックします。
[設定項目] タブで、利用可能なデータアクセス方法を確認します。
ダッシュボードのメトリックをセルフマネージド Grafana システムに統合する方法
「ダッシュボード上のメトリックを取得する方法?」で説明されている統合手順を完了して、ApsaraMQ for RocketMQ のモニタリングデータを Managed Service for Prometheus に接続します。次に、環境設定から HTTP API URL を取得し、それを使用してセルフマネージド Grafana インスタンスに接続します。詳細については、「HTTP API URL を使用して Prometheus インスタンスをセルフマネージド Grafana システムに接続する」をご参照ください。
平均 TPS と最大 TPS の計算方法
平均 TPS = 1分間のリクエスト総数 / 60 秒
最大 TPS = 1分以内に取得された 60 の秒間 TPS サンプルのうち最も高い値
例:インスタンスが 1 分間に 60 個の 4 KB の通常メッセージを生成する場合。
平均 TPS = 60 呼び出し / 60 秒 = 1 呼び出し/秒
最初の 1 秒ですべての 60 メッセージが送信された場合、秒間 TPS の値は 60, 0, 0, ..., 0 となります。最大 TPS = 60 呼び出し/秒。
最初の 1 秒で 40 メッセージ、2 秒目で 20 メッセージが送信された場合、値は 40, 20, 0, ..., 0 となります。最大 TPS = 40 呼び出し/秒。