要点OTel JMX Metric Gatherer を使用して、ClickStack で Apache Kafka のパフォーマンスメトリクスを監視します。デモデータセットとあらかじめ用意されたダッシュボードも含まれています。
既存の Kafka デプロイメントとのインテグレーション
前提条件
- 稼働中の ClickStack インスタンス
- JMX が有効な既存の Kafka 環境 (バージョン 2.0 以降)
- ClickStack と Kafka 間のネットワーク接続 (JMX ポート 9999、Kafka ポート 9092)
- OpenTelemetry JMX Metric Gatherer JAR (ダウンロード手順は以下)
1
ClickStack API key を取得する
JMX Metric Gatherer はデータを ClickStack の OTLP エンドポイントに送信します。このエンドポイントでは認証が必要です。- ClickStack の URL (例: http://localhost:8080) で HyperDX を開きます
- 必要に応じてアカウントを作成するか、ログインします
- Team Settings → API Keys に移動します
- インジェスト API key をコピーします
- これを環境変数として設定します:
2
3
Kafka JMX が有効であることを確認する
Kafka ブローカーで JMX が有効になっていることを確認してください。Docker デプロイメントの場合:4
Docker Compose で JMX Metric Gatherer をデプロイする
この例では、Kafka、JMX Metric Gatherer、ClickStack を含む一連の構成をまとめて示します。サービス名とエンドポイントは、既存のデプロイメントに合わせて調整してください。service:jmx:rmi:///jndi/rmi://kafka:9999/jmxrmi- JMX 接続 URL (Kafka のホスト名を使用)otel.jmx.target.system=kafka- Kafka 固有のメトリクスを有効にしますhttp://clickstack:4318- OTLP HTTP エンドポイント (ClickStack のホスト名を使用)authorization=\${CLICKSTACK_API_KEY}- 認証用の API key (必須)service.name=kafka,kafka.broker.id=broker-0- フィルタリング用の resource 属性10000- 収集間隔 (ミリ秒単位、10 秒)
5
HyperDX でメトリクスを確認する
HyperDX にログインし、メトリクスが送信されていることを確認します。- Chart Explorer に移動します
kafka.message.countまたはkafka.partition.countを検索します- メトリクスが 10 秒間隔で表示されるはずです
kafka.message.count- 処理されたメッセージの総数kafka.partition.count- パーティションの総数kafka.partition.under_replicated- 正常なクラスターでは 0 になるはずですkafka.network.io- ネットワークのスループットkafka.request.time.*- リクエストレイテンシのパーセンタイル
Kafka コンテナー内で Kafka クライアントコマンド (kafka-topics、kafka-console-producer など) を実行する場合は、JMX ポートの競合を避けるため、先頭に
unset JMX_PORT && を付けてください。デモデータセット
1
サンプルのメトリクスデータセットをダウンロードする
事前生成済みのメトリクスファイルをダウンロードします (実際に近いパターンを含む 29 時間分の Kafka メトリクス) :- 06:00-08:00: 朝の増加 - 夜間のベースラインからトラフィックが急増
- 10:00-10:15: フラッシュセール - 通常時の 3.5 倍までトラフィックが急増
- 11:30: デプロイメントイベント - レプリケーション不足のパーティションの発生とともに、コンシューマラグが 12 倍に急増
- 14:00-15:30: 買い物のピーク - ベースラインの 2.8 倍の高トラフィックが継続
- 17:00-17:30: 退勤後の増加 - 2 回目のトラフィックピーク
- 18:45: コンシューマのリバランス - リバランス中にラグが 6 倍に急増
- 20:00-22:00: 夜間の減少 - 夜間レベルまで急激に低下
2
3
4
HyperDX でメトリクスを確認する
読み込み後、メトリクスをすばやく確認するには、あらかじめ用意されたダッシュボードを使うのが最も簡単です。ダッシュボードをインポートして Kafka メトリクス全体をまとめて表示するには、ダッシュボードと可視化 セクションに進んでください。タイムゾーン表示HyperDX はタイムスタンプをブラウザーのローカルタイムゾーンで表示します。デモデータの期間は 2025-11-05 16:00:00 - 2025-11-06 16:00:00 (UTC) です。どの地域からでもデモメトリクスを確実に表示できるよう、時間範囲を 2025-11-04 16:00:00 - 2025-11-07 16:00:00 に設定してください。メトリクスが表示されたら、より見やすくするために範囲を 24 時間に絞り込めます。
ダッシュボードと可視化
1
ダッシュボード設定ファイル
2
あらかじめ用意されたダッシュボードをインポートする
- HyperDX を開き、Dashboards セクションに移動します
- 右上の三点リーダー内にある Import Dashboard をクリックします
kafka-metrics-dashboard.jsonファイルをアップロードし、Finish Import をクリックします
3
ダッシュボードを表示する
ダッシュボードが作成され、すべての可視化があらかじめ設定された状態で表示されます。デモデータセットを使用する場合は、時間範囲を 2025-11-05 16:00:00 - 2025-11-06 16:00:00 (UTC) に設定してください (ローカルのタイムゾーンに応じて調整してください) 。インポートしたダッシュボードには、デフォルトでは時間範囲が設定されていません。
トラブルシューティング
HyperDX にメトリクスが表示されない
認証エラー
Authorization failed または 401 Unauthorized が表示された場合:
- HyperDX UI で API key を確認します (Settings → API Keys → Ingestion API Key)
- エクスポートし直して再起動します:
Kafka クライアントコマンドでのポート競合
unset JMX_PORT && を付けてください:
ネットワーク接続の問題
Connection refused と表示される場合:
すべてのコンテナーが同じ Docker ネットワークに接続されていることを確認します:
次のステップ
- 重要なメトリクス (レプリケーション数が不足しているパーティション、コンシューマラグの増加、リクエストレイテンシの急上昇) に対するalertsを設定します
- 特定のユースケース向けに追加のダッシュボードを作成します (トピックごとのスループット、コンシューマグループの監視)
- 一意の
kafka.broker.idresource attributeを持つJMX Metric Gathererインスタンスを追加して、複数のKafkaブローカーを監視します