コンテンツにスキップ

RocketMQ (Prometheus)

Apache RocketMQ は分散メッセージングおよびストリーム処理プラットフォームです。サービスの疎結合化、トラフィックのピーク平準化、イベント駆動型アプリケーションなどに利用できます。

対応バージョンについては RocketMQ 公式メトリクスドキュメントを参照してください。独立した Exporter を使用する環境では RocketMQ インテグレーションを参照してください。

設定

前提条件

  • バージョン 5.1.0 以降の RocketMQ Broker が稼働していること。
  • Broker が実際に読み込む設定ファイルを編集し、サービスを再起動できること。クラスター構成では、監視対象のすべての Broker でメトリクスエンドポイントを有効にしてください。
  • DataKit から各 Broker のメトリクスポートにアクセスできること。本書ではデフォルトのポート 5557 を使用します。
  • 検証用の Topic、コンシューマーグループ、およびメッセージの生成・消費トラフィックがあること。トラフィックがない場合、一部のメトリクスがゼロになるか、対応する系列が存在しないことがあります。

Broker 内蔵の Prometheus メトリクスを有効にする

Broker の起動引数 -c が実際に指定する設定ファイル(通常は broker.conf)を編集し、次の設定を追加します。

metricsExporterType=PROM
metricsPromExporterHost=0.0.0.0
metricsPromExporterPort=5557

保存後、既存のデプロイ方法で該当する Broker を再起動します。本番クラスターでは既存の保守手順に従ってローリング再起動を行います。その後、Broker のホストでメトリクスエンドポイントを確認します。

curl -fsS http://127.0.0.1:5557/metrics

応答には rocketmq_ で始まるメトリクスとその型情報が含まれる必要があります。DataKit のホストからも、実際の Broker アドレスを使用してエンドポイントへの接続を確認してください。

metricsPromExporterHost=0.0.0.0 はすべてのネットワークインターフェースで待ち受ける設定です。セキュリティグループやファイアウォールでアクセス元を制限してください。Docker ではコンテナ内のポート 5557 を DataKit から接続可能なホストポートにマッピングします。DataKit もコンテナで稼働している場合、その 127.0.0.1 は DataKit コンテナ自身を指します。

Prom コレクターの設定

DataKit のホストで Prom コレクターのサンプル設定をコピーします。

mkdir -p /usr/local/datakit/conf.d/prom
cp /usr/local/datakit/conf.d/samples/prom.conf.sample \
  /usr/local/datakit/conf.d/prom/rocketmq.conf

rocketmq.conf を編集し、内容を次の設定に置き換えます。

[[inputs.prom]]
  urls = ["http://127.0.0.1:5557/metrics"]
  ignore_req_err = false
  source = "rocketmq"
  # 空のリストでは Counter、Gauge、Histogram を含むすべてのメトリクスタイプを収集します
  metric_types = []
  metric_name_filter = ["^rocketmq_"]
  interval = "10s"
  measurement_prefix = ""
  measurement_name = "rocketmq"
  # Prometheus メトリクスの完全なフィールド名を保持します
  keep_exist_metric_name = true
パラメーター 説明
urls Broker のメトリクスエンドポイントのアドレス。127.0.0.1 は DataKit と Broker が同じホストで稼働するか、ネットワーク名前空間を共有する場合にのみ使用できます。
ignore_req_err false に設定し、メトリクスエンドポイントのリクエストエラーを保持して収集異常の調査に役立てます。
source DataKit 内で収集設定を区別するためのコレクターのエイリアス。
metric_types 空のリストですべてのメトリクスタイプを収集し、Histogram メトリクスの収集漏れを防ぎます。
metric_name_filter rocketmq_ で始まるメトリクスのみを収集します。
interval 収集間隔。本書では 10s に設定します。
measurement_prefix メジャーメントのプレフィックス。本書では空文字列に設定します。
measurement_name 収集したメトリクスをすべて rocketmq メジャーメントに書き込みます。
keep_exist_metric_name true に設定し、Prometheus メトリクスの完全なフィールド名を保持します。

その他のパラメーターについては Prom コレクターのドキュメントを参照してください。

クラスター構成では、設定の urls を各 Broker の実際のメトリクスアドレスに置き換えます。

urls = [
  "http://<BROKER_1_IP>:5557/metrics",
  "http://<BROKER_2_IP>:5557/metrics"
]

各 Broker ホストに DataKit を配置し、ローカルエンドポイントを収集する方法もあります。同じエンドポイントを重複して収集しないよう、いずれか一つの方法を選択してください。

設定を保存したら、DataKit を再起動して設定を反映します。

datakit service restart

収集結果の確認

Prom 設定のデバッグコマンドで、変換後のメジャーメント、フィールド、タグを確認します。

datakit debug --prom-conf /usr/local/datakit/conf.d/prom/rocketmq.conf

デバッグ出力には rocketmq メジャーメントと rocketmq_ で始まるフィールドが含まれる必要があります。次のコマンドでコレクターの稼働状態とリクエストエラーを確認します。

datakit monitor

メトリクス

本書の設定では、メトリクスは rocketmq メジャーメントに書き込まれ、フィールドには完全な Prometheus 名が保持されます。実際に収集できるフィールドは Broker の /metrics、DataKit のデバッグ出力、および取り込み結果を確認してください。

メトリクス 説明 タイプ 単位
rocketmq_messages_in_total Broker が受信したメッセージの累積数。毎秒のレートを計算して生成 TPS を確認します。 Counter 件
rocketmq_messages_out_total Broker がコンシューマーに配信したメッセージの累積数。毎秒のレートを計算して消費 TPS を確認します。 Counter 件
rocketmq_throughput_in_total プロデューサーが Broker に書き込んだ累積バイト数。毎秒のレートから書き込みスループットを求めます。 Counter Byte
rocketmq_throughput_out_total コンシューマーが Broker から読み込んだ累積バイト数。毎秒のレートから読み込みスループットを求めます。 Counter Byte
rocketmq_consumer_ready_messages 該当する Topic とコンシューマーグループで、まだ取得されておらず消費を待っている準備済みメッセージ数。 Gauge 件
rocketmq_consumer_inflight_messages 該当する Topic とコンシューマーグループで、取得済みだが完了確認されていないメッセージ数。 Gauge 件
rocketmq_consumer_lag_latency_milliseconds 現在時刻と最も古い未確認メッセージが消費可能になった時刻との差。消費完了の遅延を示します。 Gauge ミリ秒
rocketmq_storage_flush_behind_bytes Broker でまだディスクにフラッシュされていないデータ量。 Gauge Byte
rocketmq_message_size 送信メッセージのサイズ分布。ヒストグラムのバケットから P95 を計算できます。 Histogram Byte
rocketmq_rpc_latency_milliseconds Broker の RPC レイテンシ分布。リクエストタイプ別に送信・取得リクエストの P95 を確認できます。 Histogram ミリ秒

RocketMQ の公式論理メトリクス rocketmq_consumer_lag_latency と rocketmq_rpc_latency には、この例では単位サフィックス _milliseconds が付きます。Histogram メトリクスは _bucket、_sum、_count に展開されます(例:rocketmq_rpc_latency_milliseconds_bucket)。ビューやモニターを作成する前に、実際のフィールドと単位を確認してください。

Counter は累積値のため、そのまま TPS や毎秒のスループットとして表示できません。毎秒のレートを計算すると、メッセージ数の単位は件/秒、バイト数は Byte/s になります。Gauge は現在の状態を表すため、準備済みメッセージ数、処理中メッセージ数、消費遅延の値と傾向を直接確認します。消費遅延は最も古い未確認メッセージの待ち時間であり、完了したメッセージの平均処理時間ではありません。

主なタグ

タグ 説明
cluster RocketMQ クラスター名。
node_id Broker ノードの識別子。
topic Topic 名。トピック別の生成・消費状況を区別します。
consumer_group コンシューマーグループの識別子。滞留と消費遅延の特定に使用します。

タグはメトリクスごとに異なるため、実際の収集結果を確認してください。Broker のストレージメトリクスは通常 cluster、node_id 別に確認し、コンシューマーグループのメトリクスは cluster、topic、consumer_group 別に確認できます。

フィードバック

このページは役に立ちましたか?