Apache Kafka監視
Apache Kafka――概要
Apache Kafkaは、LinkedInが開発したオープン ソースで障害耐性の強い出版・購読型メッセージング システムです。分散型のログ サービスであるKafkaは、スループット、拡張性、信頼性、レプリケーションに優れており、従来型のメッセージ ブローカーの代わりに使われることが多々あります。
Apache Kafkaの監視――当社が提供すること
Apache Kafkaはデータ連携の優れた選択肢であり、高速かつ拡張性に優れています。Kafkaノードは、柔軟に作成・切断が可能です。何1,000ものクライアントからの読み書きを、単一ノードでリアルタイム処理できます。データストリームはパーティションに分割し、別々のブローカーへ拡散します。一見、シンプルそうでありながら、Kafkaの詳細技術は深遠です。この技術詳細にきちんと対応し、トラブルシュートとパフォーマンスの最適化を実現するには、堅牢なKafka監視ソフトウェアが必須なのです。
Applications Managerは、Kafkaメトリックの収集、クラスターの管理、問題発生時の自動アラートを実行できます。ここでは、Kafka監視に必要なことと、収集できるパフォーマンス メトリックを案内します。
- リソース利用率詳細:Kafkaサーバー、メモリとCPUを監視してを自動ディスカバリし、リソース消費に変動があればアラートします。
- スレッドとJVMの利用率:デーモン スレッド、ピーク スレッド、ライブ スレッドなどのメトリックで、読み込み利用率を追跡します。スレッドがサーバー メモリに過剰負荷となっていないか、把握可能です。
- ブローカー、コントローラー、レプリケーションの統計:アクティブなコントローラーを測定し、稼働中のブローカーに不可用パーティションがないか確認します。ログ フラッシュ遅延の増大で、パイプライン渋滞が起きぬよう監視できるほか、レプリケーションが設定より低調なパーティションも判別します。
- ネットワークとトピックの詳細:処理速度の低下を起こしているリクエスト セグメントをピンポイントで特定できます。ホストのネットワーク利用量を継続監視し、パフォーマンス低下がネットワークの問題なのか、ホストの問題なのか判定可能です。ブローカー トピックの通信速度も把握し、ディスク スループットがボトルネックになるのも回避できます。
- パフォーマンス低下を迅速に解決:Kafkaのコンポーネントでパフォーマンス低下があれば、ただちに通知します。ボトルネックを把握し、エンド ユーザー体感に影響する予兆のうちに、手早く是正アクションを起こせます。
Apache Kafka――新規監視を追加するには
サポート対象のバージョン:バージョン0.7.0から0.10.0.1
新規監視の作成手順
Apache Kafka監視を作成するには、次の手順に従ってください。
- 新規監視のリンクをクリックします。Apache Kafkaを選択してください。
- 監視の表示名を入力してください。
- Kafkaを実行しているホストのIPアドレスか名前を入力してください。
- JMXポート番号をフィールドに入力します。
- ユーザー名、パスワード、JNDIパスなどの認証情報を入力するか、認証情報マネージャーのリストから選択します。
- ポーリング間隔を入力してください(分)。
- Apache Kafkaサーバーにアクセス可能か確認するには、認証情報のテスト ボタンをクリックしてください。
- Apache Kafka監視を関連付ける監視グループを、コンボボックスで選択します(任意項目)。監視は複数グループに関連付け可能です。
- 監視の追加をクリックすると、ネットワークからApache Kafkaを検出し、監視が始まります。
AddMonitor APIでApache Kafka監視を追加する
構文
http://[Host]:[Port]/AppManager/xml/AddMonitor?apikey=[API_KEY]&type=Kafka&displayname=[DISPLAY_NAME]&HostName=[HOST_NAME]&port=[PORT]&username=[USER_NAME]&password=[PASS_WORD]&JNDIPath=/jmxrmi
リクエスト パラメーター
APIリクエストにかかわるパラメーターを下に記します。共通リクエスト パラメーターのリストも参照ください。
フィールド | 説明 |
---|---|
type |
追加するデータベースのタイプです。値はKafkaにしてください。 |
displayname |
Kafka監視の表示名です。 |
hostname |
Kafkaサーバーを実行しているホストの名前です。 |
port |
Kafkaサーバーを実行しているポートの番号です。 |
username |
Apache Kafkaサーバーへのアクセス権限を持つユーザーの名前を指定してください。 |
JNDIPath | 利用するJNDIパスを指します。 |
リクエスト サンプル
http://prod-server8:9091/AppManager/xml/AddMonitor?apikey=15c64bc4cca4a3c45d0369fca1877e8a&type=Kafka&displayname=Kafka&HostName=172.20.8.62&Port=9999&UserName=&Password=&JNDIPath=/jmxrmi
監視対象のパラメーター
監視タブをクリックすると監視カテゴリ ビューへ移動します。ミドルウェア/ポータル テーブルでApache Kafkaをクリックすると、Apache Kafka一括設定ビューが、3つのタブに分類・表示されます。
- 可用性タブでは、過去24時間か30日の可用性履歴がわかります。
- パフォーマンスタブでは、過去24時間か30日のステータスとイベントがわかります。
- リスト ビューでは、一括管理設定が可能です。
監視名をクリックすると、全サーバーの詳細が次のタブで表示されます。
パラメーター | 説明 |
---|---|
メモリ詳細 |
|
総物理メモリ サイズ | 物理メモリの総量です(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仮想マシンのインプリメンテーション ベンダーを表します。 |