Apache ZooKeeper監視

Apache ZooKeeper――概要

Apache ZooKeeperは、分散プロセスとアプリケーションを確実に調和させるオープン ソース サーバーです。 分散プロセス間の協調を共有の階層型名前空間で実現、この名前空間を、通常のファイル システムと同じように体系づけることが可能となっています。ZooKeeperサーバーでは、設定情報、命名、分散環境での同期機能、グループ サービスを提供しており、分散型アプリケーションに適したつくりとなっています。

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

Apache ZooKeeper znodeをシステム ファイルとして階層型のファイル システムを提供します。異なるマシンで動作しているサービスの検出、登録、設定、ロック、リーダー選挙、キューイングなどに便利です。Applications ManagerはZooKeeperサーバーの管理やメトリックの収集に便利で、トラブルシュートの役に立つほか、問題の可能性があれば、自動的にアラートします。ここでは、ZooKeeper監視に必要なことと、収集できるパフォーマンス メトリックを案内します。

  • リソース利用率詳細:ZooKeeperクラスターを自動検ディスカバリし、znodeのメモリを監視(ヒープと非ヒープ)、リソース消費に変動があればアラートします。
  • スレッドとJVMの利用率:デーモンやピーク スレッド数とライブ スレッド数などのメトリックで、読み込み利用率を追跡します。起動したスレッドがサーバー メモリに過剰負荷となっていないか、把握可能です。
  • パフォーマンス統計:サーバーがクライアントからのリクエストやキューイング済みリクエストに応答するのにかかる時間や、サーバーでの接続数を測るとともに、クライアント パケットの送受信によるパフォーマンス低下も対象としています。
  • クラスターと設定詳細:znode数、ノードへのウォッチャー構成、アンサンブルにあるフォロワーの数などを追跡します。リーダー選挙統計とクライアント セッション時間も監視しています。
  • パフォーマンス低下を迅速に解決:Apache ZooKeeperのコンポーネントでパフォーマンスの問題が発生すると、ただちに通知します。パフォーマンスのボトルネックを把握し、エンド ユーザー体感に影響する予兆のうちに、手早く是正アクションを起こせます。

Apache ZooKeeper――新規監視を追加するには

サポート対象のバージョン:3.4.9

Apache ZooKeeper監視の要件

  • リモートJMXを有効にしてください。
  • 上記を確実に実行するため、binフォルダーからZKServerファイルを開き、下記の点を確認ください。
1:JMXPORT =<PORT NO>
2:ZOOMAIN="-Djava.rmi.server.hostname=<IP address > -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=$JMXPORT -Dcom.sun.management.jmxremote.authenticate=$JMXAUTH -Dcom.sun.management.jmxremote.ssl=$JMXSSL -Dzookeeper.jmx.log4j.disable=$JMXLOG4J org.apache.zookeeper.server.quorum.QuorumPeerMain"
メモ:<PORT NO>をマシンのJMXポートに、<IP address >を同IPアドレスに差し替えてください。

 新規監視の作成手順

  • Apache ZooKeeper監視を作成するには、次の手順に従ってください。
    • 新規監視のリンクをクリックします。Apache ZooKeeperを選択ください。
    • 監視の表示名を入力します。
    • ZooKeeperサーバーを実行しているホストのIPアドレスか名前を入力してください。
    • ZooKeeperサーバーのJMXポートを入力してください。デフォルトでは7199番です。または、zkServer.shファイルでJMX_PORTを確認ください。
    • 該当ノードのみをディスカバリし、クラスター内の全ノード検出は行わない場合、クラスター内のすべてのノードをディスカバリのオプションは無効にしてください。デフォルトでは有効となっており、クラスターの全ノードが検出されます。
    • ユーザー名、パスワード、JNDIパスなど認証情報を入力するか、認証情報マネージャーのリストから選択してください。
    • 認証を必要とするのフィールドをチェックし、ZooKeeperサーバーへの接続につかうJMX認証情報を入力します。
    • ポーリング間隔を入力してください(分)。
    • Apache ZooKeeperサーバーにアクセス可能か確認するには、認証情報のテスト ボタンをクリックしてください。
    • Apache ZooKeeper監視を関連付ける監視グループを、コンボボックスで選択します(任意項目)。監視は複数グループに関連付け可能です。
    • 監視の追加をクリックすると、ネットワークからApache ZooKeeperを検出し、監視が始まります。

 

AddMonitor APIでApache ZooKeeper監視を追加する

構文
http://[Host]:[Port]/AppManager/xml/AddMonitor?apikey=[API_KEY]&type=Zookeeper&displayname=Zookeeper&host=[HOST_NAME]&port=[PORT_NUMBER]&discoverclusternodes=[Yes/No:NOT_MANDATORY_FOR_Yes]&authReq=[true/false::NOT_MANDATORY_FOR_true]&username=[USER_NAME]&password=[PASS_WORD]

リクエスト パラメーター
APIリクエストにかかわるパラメーターを下に記します。

フィールド

説明

type

追加するサービスのタイプです。値はZooKeeperにしてください。

host

ZooKeeperを実行しているホストの名前です。

port

ZooKeeperを実行しているポートの番号です。

username

ZooKeeperへのアクセス権限があるユーザーの名前です。

password

ZooKeeperへのアクセス権限があるユーザーのパスワードを指します。

discoverclusternodes

クラスター ノードのディスカバリが必要かを指します。値はYESかNOです(任意項目)。

authReq

認証が必要かを示します。値はtrueかfalseです。

リクエスト サンプル
http://prod-server3:9090/AppManager/xml/AddMonitor?apikey=849c51ce33436587873a08d69d5447fc&type=Zookeeper&displayname=Zookeeper&host=172.20.7.36&port=7199&username=&password=123 

監視対象のパラメーター

監視タブをクリックすると監視カテゴリ ビューへ移動します。サービス テーブルで、Apache ZooKeeperをクリックしてください。ZooKeeper一括設定ビューが、3つのタブに分類・表示されます。

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

監視名をクリックすると、全サーバーの詳細が次のタブで表示されます。

概要

パラメーター 説明
リーダー選挙ステータス
レプリカ名 シャード レプリカ名
ステータス 動作モードを示します。リーダー、フォロワー、リーダー選挙があるほか、アンサンブルでの実行中でない場合はスタンドアロンになります。
選挙が進行中 選挙が進行中かを示します(Yes、No)。
選挙の起動時刻 リーダー選挙の起動時刻です。
メモリ詳細
総物理メモリ サイズ ZooKeeperが実行・データ記憶に利用できる物理メモリの総量を指します。
空き物理メモリ サイズ ZooKeeperクラスターとノードで利用できる空き物理メモリの総量を指します。
コミット済み仮想メモリ サイズ ZooKeeperノードが占有している仮想メモリの総量を指します。
総スワップ スペース サイズ 仮想メモリが上限に達したときに利用できる、総スワップ スペース量を指します。
空きスワップ スペース サイズ 仮想メモリが上限に達したときに、スワップに利用できる空きスワップ スペース サイズを示します。
スレッド詳細
デーモン スレッド数 実行中のデーモン スレッドの数です。デーモン スレッドは、自身が実行中で合っても、プログラム終了時にJVM停止を妨げることはしません。
ピーク スレッド数 JVM起動以来の最多スレッド数を表します。
ライブ スレッド数 ノードにある現在のライブ スレッドの数を表します。デーモン スレッドか、非デーモン スレッドかを問いません。
総起動スレッド数 起動済みのスレッドの総数を示します。
ヒープ メモリ詳細
コミット済みヒープ メモリ コミット済みヒープ メモリの総量です。
初期ヒープ メモリ 割り当てのあった最小ヒープ メモリです。
最大ヒープ メモリ ZooKeeperが利用できる最大ヒープ メモリを指します。
利用済みヒープ メモリ 利用中の総ヒープ メモリを指します。
非ヒープ メモリ詳細
コミット済み非ヒープ メモリ コミット済み非ヒープ メモリの総量です。
初期非ヒープ メモリ 割り当てのあった最小非ヒープ メモリを表します。
最大非ヒープ メモリ ZooKeeperが利用できる最大非ヒープ メモリを指します。
利用済み非ヒープ メモリ 利用中の非ヒープ メモリ総量を指します。


パフォーマンス

パラメーター 説明
パケット統計
受信パケット数/分 パケット受信速度を表します(数/分)。
送信パケット数/分 パケット送信速度を表します(数/分)。
遅延
最小リクエスト遅延 サーバーが再起動して以来の、クライアント リクエストへの最短応答時間を示します(ミリ秒)。
平均リクエスト遅延 サーバーが再起動して以来の、クライアント リクエストへの平均応答時間を示します(ミリ秒)。
最大リクエスト遅延 サーバーが再起動して以来の、クライアント リクエストへの最長応答時間を示します(ミリ秒)。
アライブ接続数
アライブ接続数 アライブ接続の数を表します。
未処理のリクエスト数
未処理のリクエスト数 サーバーにキューイングされているリクエストの数を示します。サーバーの処理能力を超えたリクエストを受信すると、この値が上昇します。


イン メモリ データツリー

パラメーター 説明
ノード数
ノード数 ZooKeeperにあるノードの数を指します。
ウォッチ数
ウォッチ数 ZooKeeperノードに設定されたウォッチャーの数です。
一時ノード数(Ephemeral)
一時ノード数(Ephemeral) 一時ノードの数を表します(Ephemeral)。
およそのデータサイズ
およそのデータサイズ 利用中のデータサイズを指します(バイト)


クラスター詳細

パラメーター 説明
ノード数
ノード数 ZooKeeperクラスターにあるznodeの数です。
ウォッチ数
ウォッチ数 ZooKeeperノードに設定されたウォッチャーの数です。
一時ノード数(Ephemeral)
一時ノード数(Ephemeral) 一時ノードの数を表します(ephemeral node)。ZooKeeperの一時ノードは遷移性のデータに向いています。ノードは、自分が作成したセッションがアクティブな限り、存続します。
およそのデータサイズ
およそのデータサイズ 利用中のデータサイズを表します(バイト)。


設定

パラメーター 説明
ZooKeeper設定詳細
レプリカ名
ステータス
クライアント ポート クライアント接続のリスニングを行うポートです。
初期化制限(initTick) フォロワーがリーダーへの接続と同期までに許可される制限時間を、ティック単位で表現したものです(詳細はティック時間を参照ください)。
最大クライアント接続Perホスト IPアドレスで特定できる単一クライアントが行った、ソケットレベルでの最多同時接続の数を表します。
最長セッション タイムアウト サーバーがネゴシエーション時にクライアントに許容する、最長セッション タイムアウトを示します(ミリ秒)。デフォルトでティック時間の20倍です(tickTime)。
最短セッション タイムアウト サーバーがネゴシエーション時にクライアントに許容する、最短セッション タイムアウトを示します(ミリ秒)。デフォルトでティック時間の2倍です(tickTime)。
クォーラム アドレス 同一アプリケーションにあるサーバーのレプリケーション グループをクォーラムと呼び、レプリケーション モードでは、すべてのサーバーがクォーラム アドレスで互いに通信しています。
ZooKeeper起動時刻 ZooKeeperの起動時刻です。
同期上限(syncLimit) フォロワーがZooKeeperとの同期に許容される制限時間を、ティック単位で表現したものです(ティック時間を参照)フォロワーがリーダーから大きく遅れると、同期を止められます。
ティック ZooKeeperが使う基礎時間単位で、ミリ秒で測ります。
ティック時間(tickTime) ZooKeeperが使う基礎時間単位で、ミリ秒で測ります。ハートビート屋タイムアウトの制御に使います。たとえば、最短セッション タイムアウトはティック2回です。
バージョン インストールしたZooKeeperのバージョンを指します。
設定詳細
VM名 Java仮想マシン名
ブート クラス パス ブート ストラップ クラス ローダーが、クラス ファイルの検索に使うパスを示します。
VMベンダー Java仮想マシンのインプリメンテーション ベンダーを表します。
クラス パス システム クラス ローダーがクラス ファイルの検索に使うJavaクラス パスを示します。
Specベンダー 製品が実装しているJMX Specificationのベンダーを表します。
Specバージョン ZooKeeperでインプリしているJMX Specificationのバージョンを指します。