メインコンテンツにスキップ
バージョン: 5.0

メトリクス

RocketMQはPrometheusフォーマットで以下のメトリクスを公開しています。これらのメトリクスを使用してクラスタを監視できます。

  • ブローカーメトリクス
  • プロデューサーメトリクス
  • コンシューマーメトリクス

バージョンサポート:RocketMQの以下のメトリクスは5.1.0以降に導入され、ブローカーのみをサポートしています。

メトリクスの詳細

メトリクスの種類

RocketMQのメトリクス定義の標準は、オープンソースのPrometheusのメトリクス定義標準に準拠しています。RocketMQが提供するメトリクスの種類には、カウンター、ゲージ、ヒストグラムが含まれます。詳細については、メトリクスの種類を参照してください。

ブローカーメトリクス

次の表は、Apache RocketMQブローカーのメッセージキューに関連するメトリクスのラベルについて説明しています。

  • cluster:RocketMQクラスタ名。
  • node_type:サービスノードの種類。proxy、broker、nameserverなど。
  • node_id:サービスノードのID。
  • topic:RocketMQのトピック。
  • message_type:メッセージの種類。以下が含まれます。
    normal:通常のメッセージ。
    fifo:順序付けられたメッセージ。
    transaction:トランザクションメッセージ。
    delay:スケジュールされたメッセージまたは遅延メッセージ。
  • consumer_group:コンシューマーグループのID。
種類名前単位説明ラベル
カウンターrocketmq_messages_in_total件数生成されたメッセージの数。cluster,node_type,node_id,topic,message_type
カウンターrocketmq_messages_out_total件数消費されたメッセージの数。cluster,node_type,node_id,topic, consumer_group
カウンターrocketmq_throughput_in_totalバイト生成された書き込みスループット。cluster,node_type,node_id,topic,message_type
カウンターrocketmq_throughput_out_totalバイト生成された読み取りスループット。cluster,node_type,node_id,topic, consumer_group
ヒストグラムrocketmq_message_sizeバイトメッセージサイズの分布。このメトリクスは、メッセージが送信された場合にのみカウントされます。分布範囲は以下のとおりです。
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
cluster,node_type,node_id,topic,message_type
ゲージrocketmq_consumer_ready_messages件数準備完了メッセージの数。cluster,node_type,node_id,topic, consumer_group
ゲージrocketmq_consumer_inflight_messages件数処理中のメッセージの数。cluster,node_type,node_id,topic, consumer_group
ゲージrocketmq_consumer_queueing_latencyミリ秒準備完了メッセージのキューイング遅延時間。cluster,node_type,node_id,topic, consumer_group
ゲージrocketmq_consumer_lag_latencyミリ秒メッセージが消費されるまでの遅延時間。cluster,node_type,node_id,topic, consumer_group
カウンターrocketmq_send_to_dlq_messages_total件数デッドレターキューに送信されたメッセージの数。cluster,node_type,node_id,topic, consumer_group
ヒストグラムrocketmq_rpc_latencyミリ秒RPC呼び出しレイテンシ。cluster,node_typ,node_id,protocol_type,request_code,response_code
ゲージrocketmq_storage_message_reserve_timeミリ秒メッセージ保存時間。cluster,node_type,node_id
ゲージrocketmq_storage_dispatch_behind_bytesバイト未配信メッセージサイズ。cluster,node_type,node_id
ゲージrocketmq_storage_flush_behind_bytesバイト未フラッシュメッセージサイズ。cluster,node_type,node_id
ゲージrocketmq_thread_pool_wartermark件数スレッドプールにキューイングされたタスクの数。cluster,node_type,node_id,name

プロデューサーメトリクス

次の表は、Apache RocketMQのプロデューサーに関連するメトリクスのラベルについて説明しています。

  • cluster:RocketMQクラスタ名。
  • node_type:サービスノードの種類。proxy、broker、nameserverなど。
  • node_id:サービスノードのID。
  • topic:Apache RocketMQのトピック。
  • message_type:メッセージの種類。以下が含まれます。
    normal:通常のメッセージ。
    fifo:順序付けられたメッセージ。
    transaction:トランザクションメッセージ。
    delay:スケジュールされたメッセージまたは遅延メッセージ。
  • client_id:クライアントのID。
  • invocation_status:メッセージ送信のためのAPI呼び出しの結果。成功と失敗が含まれます。
種類名前単位説明ラベル
ヒストグラムrocketmq_send_cost_timeミリ秒プロダクションAPI呼び出し時間の分布。分布範囲は以下のとおりです。
le_1_ms
le_5_ms
le_10_ms
le_20_ms
le_50_ms
le_200_ms
le_500_ms
le_overflow
topic,client_id,invocation_status

コンシューマーメトリクス

次の表は、Apache RocketMQのコンシューマーに関連するメトリクスのラベルについて説明しています。

  • topic:Apache RocketMQのトピック。
  • consumer_group:コンシューマーグループのID。
  • client_id:クライアントのID。
  • invocation_status:メッセージ送信のためのAPI呼び出しの結果。成功と失敗が含まれます。
種類名前単位説明ラベル
ヒストグラムrocketmq_process_timeミリ秒メッセージ処理時間の分布。分布範囲は以下のとおりです。
le_1_ms
le_5_ms  
le_10_ms
le_100_ms
le_10000_ms
le_60000_ms
le_overflow
topic,consumer_group,client_id,invocation_status
ゲージrocketmq_consumer_cached_messagesメッセージPushConsumerのローカルバッファキューにあるメッセージの数。topic,consumer_group,client_id
ゲージrocketmq_consumer_cached_bytesバイトPushConsumerのローカルバッファキューにあるメッセージの合計サイズ。topic,consumer_group,client_id
ヒストグラムrocketmq_await_timeミリ秒PushConsumerのローカルバッファキューにあるメッセージのキューイング時間の分布。分布範囲は以下のとおりです。
le_1_ms
le_5_ms
le_20_ms
le_100_ms
le_1000_ms
le_5000_ms
le_10000_ms
le_overflow
topic,consumer_group,client_id

背景情報

RocketMQは、以下のビジネスシナリオに基づいてメトリクスを定義します。

メッセージ蓄積シナリオ

rocketmq queue meesage stuatus
上記の図は、さまざまな段階におけるメッセージの数と期間を示しています。これらのメトリクスを監視することで、ビジネス消費に異常がないかどうかを判断できます。次の表は、これらのメトリクスの意味と、これらのメトリクスの計算に使用される式について説明しています。

名前説明
処理中のメッセージコンシューマーによって処理されているが、まだ確認応答されていないメッセージの数。最後にプルされたメッセージのオフセット - 最後にコミットされたメッセージのオフセット
準備完了メッセージ消費の準備ができているメッセージの数。最大オフセット - 最後にプルされたメッセージのオフセット
準備完了時刻通常のメッセージまたは順序付けられたメッセージ:メッセージがブローカーに保存された時刻。
スケジュールされたメッセージ:タイミング終了時刻。
トランザクションメッセージ:トランザクションコミット時刻。
--
準備完了メッセージのキュー時間最も古い準備完了メッセージの準備完了時刻と現在時刻との間の時間間隔。この時間は、コンシューマーがメッセージをプルする際の適時性を反映しています。現在時刻 - 最も古い準備完了メッセージの準備完了時刻
コンシューマーラグ時間最も古い未確認応答メッセージの準備完了時刻と現在時刻との間の時間差。
この時間は、コンシューマーがメッセージ処理を完了する際の適時性を反映しています。
現在時刻 - 最も古い未確認応答メッセージの準備完了時刻

PushConsumer消費シナリオ

PushConsumerでは、SDK内部の典型的なReactorスレッドモデルに基づいてリアルタイムメッセージ処理機能が実装されています。以下に示すように、SDKには組み込みのロングポーリングスレッドがあり、メッセージをSDKの組み込みバッファキューに非同期的にプルし、コンシューマースレッドに個別にコミットして、リスナーがローカル消費ロジックを実行するようにトリガーします。
PushConsumer client
PushConsumerシナリオにおけるローカルバッファキューのメトリクスは以下のとおりです。

  • ローカルバッファキューのメッセージ数:ローカルバッファキューのメッセージの総数。
  • ローカルバッファキューのメッセージサイズ:ローカルバッファキューのすべてのメッセージサイズの合計。
  • メッセージ待機時間:メッセージがローカルバッファキューに一時的にキャッシュされ、処理されるのを待機している時間。

メトリクスの取得方法

現在、gRPC OTLPとPrometheusの2つのエクスポーターがサポートされています。

gRPC OTLPエクスポーター

gRPC OTLPエクスポーターは、指定されたOpenTelemetryコレクターにメトリクスを定期的に報告します。

前提条件:GRPC OpenTelemetry ProtocolをサポートするOpenTelemetryコレクターをデプロイします。

ブローカーメトリクスのgRPC OTLPエクスポーターを有効にするには、次の手順を実行します。

  1. metricsExporterTypeOTLP_GRPCに設定します。
  2. metricsGrpcExporterTargetをOpenTelemetryコレクターによって提供されるエンドポイントに設定します。

オプションの構成

  1. metricsGrpcExporterHeader:key1:value1,key2:value2の形式でリクエストヘッダーをgRPC OTLPエクスポーターに添付します。
  2. metricGrpcExporterTimeOutInMills:gRPC OTLPエクスポーターのリクエストタイムアウトを設定します。
  3. metricGrpcExporterIntervalInMills:gRPC OTLPエクスポーターのレポート間隔を設定します。

Prometheusエクスポーター

Prometheusエクスポーターは、プルモードと累積集計のみをサポートしています。詳細については、OpenTelemetry Metrics Exporter - Prometheusを参照してください。

ブローカーメトリクスのPrometheusエクスポーターを有効にするには、次の手順を実行します。

  1. metricsExporterTypePROMに設定します。

http://<broker-ip>:5557/metricsにアクセスしてメトリクスを表示します。Prometheusでサービスディスカバリを設定するか、プルタスクを手動で構成してメトリクスを収集します。

オプションの構成

  1. metricsPromExporterPort:ブローカーがメトリクスサービスを公開するポート番号。デフォルトは5557です。
  2. metricGrpcExporterTimeOutInMills:公開されたメトリクスサービスのホスト名。デフォルトは、ブローカーがNameServerに登録するIP、brokerIP1です。