Apache Kafka監視

Apache Kafka――概要

Apache Kafkaは、LinkedInが開発したオープン ソースで障害耐性の強い出版・購読型メッセージング システムです。分散型のログ サービスであるKafkaは、スループット、拡張性、信頼性、レプリケーションに優れており、従来型のメッセージ ブローカーの代わりに使われることが多々あります。

Apache Kafkaの監視――当社が提供すること

Apache Kafkaはデータ連携の優れた選択肢であり、高速かつ拡張性に優れています。Kafkaノードは、柔軟に作成・切断が可能です。何千ものクライアントからの読み書きを、単一ノードでリアル タイム処理できます。データストリームはパーティションに分割し、別々のブローカーへ拡散します。一見、シンプルそうでありながら、Kafkaの詳細技術は深遠です。この技術詳細にきちんと対応し、トラブルシュートとパフォーマンスの最適化を実現するには、堅牢なKafka監視ソフトウェアが必須なのです。

Applications ManagerのKafkaパフォーマンス監視は、Kafkaメトリックの収集、クラスターの管理、問題発生時の自動アラートを実行できます。ここでは、Kafka監視に必要なことと、収集できるパフォーマンス メトリックを案内します。

  • リソース利用率詳細:Kafkaサーバーを自動ディスカバリしてメモリとCPUを監視、リソース消費に変動があればアラートします。
  • スレッドとJVMの利用率:デーモン スレッド、ピーク スレッド、ライブ スレッドなどのメトリックで、読み込み利用率を追跡します。スレッドがサーバー メモリに過剰負荷となっていないか、把握可能です。
  • ブローカー、コントローラー、レプリケーションの統計:アクティブなコントローラーを測定し、稼働中のブローカーに不可用パーティションがないか確認します。ログ フラッシュ遅延の増大で、パイプライン渋滞が起きぬよう監視できるほか、レプリケーションが設定より低調なパーティションも判別します。
  • ネットワークとトピックの詳細:処理速度の低下を起こしているリクエスト セグメントをピンポイントで特定できます。ホストのネットワーク利用量を継続監視し、パフォーマンス低下がネットワークの問題なのか、ホストの問題なのか判定可能です。ブローカー トピックの通信速度も把握し、ディスク スループットがボトルネックになるのも回避できます。
  • パフォーマンス低下を迅速に解決:Kafkaのコンポーネントでパフォーマンス低下があれば、ただちに通知します。ボトルネックを把握し、エンド ユーザー体感に影響する予兆のうちに、手早く是正アクションを起こせます。

新規Kafka監視を作成するには

サポート対象のバージョン バージョン0.7.0から0.10.0.1

REST APIで新規Kafka監視を作成するにはこちらをクリックしてください。

GUIでApache Kafka監視を作成するには、下記の手順で操作してください。

  1. 新規監視をクリックし、Apache Kafkaを選択します。
  2. 監視の表示名を入力してください。
  3. Kafkaを実行しているホストのIPアドレスホスト名を入力します。
  4. JMXポートを該当するフィールドに入力ください。
  5. ユーザー名、パスワード、JNDIパスなど認証情報を入力するか、認証情報マネージャーのリストから選択します。
  6. ポーリング間隔を入力します(分)。
  7. 認証情報のテストをクリックすると、Kafkaサーバーへのアクセスをテストできます。
  8. Apache Kafka監視を関連付ける監視グループをコンボ ボックスで選びます(任意項目)。複数のグループを選んで、監視に関連付けることもできます。
  9. 監視の追加をクリックすると、ネットワークからKafkaを検出し、監視が始まります。

メモ
JMXを有効にしても監視を追加できない場合、以下の引数を試してください。
 -Djava.rmi.server.hostname=[YOUR_IP]

監視パラメーター

監視タブをクリックし、監視のカテゴリ ビューへ移動してください。ミドルウェア/ポータル テーブルでApache Kafkaをクリックすると、バルク設定ビューが3つのタブに分類のうえ表示されます。

  • 可用性タブでは、過去24時間か30日の可用性履歴がわかります。
  • パフォーマンス タブでは、過去24時間か30日のステータスとイベントがわかります。
  • リスト ビューでは、バルク管理設定を実行できます。

Kafkaパフォーマンス監視では、メトリックを次のタブで表示します。

概要

パラメーター 説明
メモリ詳細
総物理メモリ サイズ 物理メモリの総量です(MB)。
空き物理メモリ サイズ 空き物理メモリの量です(MB)。
コミット済み仮想メモリ サイズ 実行中のプロセスに保証された仮想メモリの量を指します(MB)。
総スワップ スペース サイズ JVMが保持している仮想メモリの総量です。
空きスワップ スペース サイズ 空き仮想メモリ サイズを指します。
スレッド詳細
デーモン スレッド数 実行中のデーモン スレッドの数です。
ピーク スレッド数 Java仮想マシンの起動か、ピークのリセットが発生して以来の、ライブ スレッドのピーク数を表します。
ライブ スレッド数 実行中のライブ スレッドの数です。
総起動スレッド数 Java仮想マシンの開始以来、作成・起動したスレッドの総数を指します。
ヒープと非ヒープ メモリ詳細
非ヒープ メモリ使用率 利用中の非ヒープ メモリ
ヒープ メモリ使用率 利用中のヒープ メモリ

コントローラー詳細

Kafkaクラスターでは、ブローカー サーバーの1つがコントローラーとして動作し、パーティションやレプリカのステータス管理を行うほか、パーティション再割り当てなどの管理タスクを実行します。

パラメーター 説明
Kafkaコントローラー詳細
アクティブ コントローラー数 クラスター内のアクティブ コントローラーの数です。
オフライン パーティション数 利用不能パーティションの数です。
リーダー選挙レート リーダー選挙のレートを表します。パーティションのリーダーがダウンすると、新規リーダーの選挙が始まります。
アンクリーンなリーダー選挙レート アンクリーンなリーダー選挙のレートを表します。リーダー選挙をクリーンに実行できないのは、Kafkaブローカーの中に、リーダーに適任のものが見つからない場合です。パーティション リーダーを務めるブローカーがオフラインになると、パーティションのISRから新規リーダーが選ばれます。アンクリーンなリーダー選挙は、同期中のレプリカが見つからない場合の特例です。

ブローカー詳細

パラメーター 説明
ログ詳細
ログ フラッシュ レート 非同期のデイスク ログ フラッシュ レートを表します。
ブローカー トピックのメトリック
受信バイト/分 集約データ受信速度を指します(バイト/分)。ブローカーからトピックへのデータ書き込みです。
送信バイト/分 集約データ送信速度を指します(バイト/分)。
許否バイト/分

ブローカーのメッセージ拒否によるデータ量の推移を表します(バイト/分)。

取得リクエスト失敗/分 トピックで、消費者からのデータ読み込みリクエストを、ブローカーが処理に失敗するペースを表します(数/分)。
プロデューサー リクエスト失敗/分 プロデューサーからのリクエスト失敗ペースです(数/分)。
受信メッセージ/分 Kafkaブローカーへのメッセージの数を指します。
レプリケーション マネージャー
ISR拡大/分(ISR Expands/Min) 同期レプリカ(ISR:In-Sync Replica)の、拡大ペースを指します(数/分)。ブローカー ダウンの際は、一部パーティションでISRが縮小します。ブローカーがアップに戻りレプリカの更新が終わると、ISRは拡張します。
ISR縮小/分(ISR Shrinks/Min) 同期レプリカ(ISR:In-Sync Replica)の、縮小ペースを指します(数/分)。ブローカー ダウンの際は、一部パーティションでISRが縮小します。ブローカーがアップに戻りレプリカの更新が終わると、ISRは拡張します。
リーダー数 あるホストがリーダーを務めるパーティションの数です。
パーティション数 クラスターにあるパーティションの数です。
レプリケーション過小パーティション クラスターに、レプリケーション過小のパーティションがいくつあるか示します(非同期状態のレプリカがあるパーティション)。
リクエスト ハンドラー平均アイドル率(%) リクエスト ハンドラー スレッドがアイドルの時間の比率を示します。

ネットワーク詳細

パラメーター 説明
リクエスト処理レート
リクエスト プロデュース/分 ブローカーにあるトピックへの、メッセージ書き込み速度を表します(数/分)。
消費者の取得リクエスト/分(Request Fetch Consumer/Min) ブローカーにあるトピックから、消費者がデータを取得する速度を表します。
フォロワーの取得リクエスト/分(Request Fetch Follower/Min) パーティションのフォロワーが新規データを取得する速度を表します。
リクエストの所要時間
プロデュース総時間/分 特定リクエストへの対応にかかる時間を表します。
消費者の総取得時間/分 ブローカーにあるトピックから消費者がデータを取得するのにかかる時間を指します。
フォロワーの総取得時間/分 パーティションのフォロワーが、新規データの取得にかける時間を指します。
ネットワーク プロセッサー レート
ネットワーク プロセッサー平均アイドル率(分ごと%) ネットワーク プロセッサーの、分ごとの平均空き容量を表します。

トピック詳細

パラメーター 説明
トピック詳細
トピック名 トピックの名前を指します。
受信バイト/分 集約データ受信速度を指します(バイト/分)。ブローカーからトピックへのデータ書き込みです。
送信バイト/分 集約データ送信速度を指します(バイト/分)。
取得リクエスト失敗/分 取得リクエスト失敗の発生ペースを指します(数/分)。
プロデューサー リクエスト失敗/分 プロデューサー リクエスト失敗の発生ペースを指します(数/分)。
受信メッセージ/分 Kafkaブローカーへの受信メッセージの数を指します。

設定

パラメーター 説明
ストレージ詳細
ブート クラス パス ブート ストラップ クラス ローダーが、クラス ファイルの検索に使うパスを示します。
クラス パス システム クラス ローダーがクラス ファイルの検索に使うJavaクラス パスを示します。
Specベンダー Kafkaが実装しているJMX Specificationのベンダーを表します。
Specバージョン Kafkaが実装しているJMX Specificationのバージョンを表します。
VM名 Java仮想マシンの名前です。
VMベンダー Java仮想マシンのインプリメンテーション ベンダーを表します。