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監視を作成するには、下記の手順で操作してください。
- 新規監視をクリックし、Apache Kafkaを選択します。
- 監視の表示名を入力してください。
- Kafkaを実行しているホストのIPアドレスかホスト名を入力します。
- JMXポートを該当するフィールドに入力ください。
- ユーザー名、パスワード、JNDIパスなど認証情報を入力するか、認証情報マネージャーのリストから選択します。
- ポーリング間隔を入力します(分)。
- 認証情報のテストをクリックすると、Kafkaサーバーへのアクセスをテストできます。
- Apache Kafka監視を関連付ける監視グループをコンボ ボックスで選びます(任意項目)。複数のグループを選んで、監視に関連付けることもできます。
- 監視の追加をクリックすると、ネットワークから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仮想マシンのインプリメンテーション ベンダーを表します。 |