Apache > ZooKeeper
 

ZooKeeper JMX

JMX

Apache ZooKeeper は JMX を幅広くサポートしており、ZooKeeper サービングアンサンブルの表示と管理が可能です。

このドキュメントでは、JMX の基本的な知識があることを前提としています。JMX の使い方は、Sun JMX Technology ページを参照してください。

VM インスタンスのローカルおよびリモート管理の設定の詳細については、JMX 管理ガイド を参照してください。デフォルトでは、付属の zkServer.sh はローカル管理のみをサポートしています。リモート管理を有効にするには(このドキュメントの範囲外)、リンク先のドキュメントを確認してください。

JMX を有効にして ZooKeeper を起動する

クラス org.apache.zookeeper.server.quorum.QuorumPeerMain は、JMX で管理可能な ZooKeeper サーバーを起動します。このクラスは初期化中に適切な MBean を登録して、インスタンスの JMX モニタリングと管理をサポートします。bin/zkServer.sh に、QuorumPeerMain を使用して ZooKeeper を起動する例が1つあります。

JMX コンソールを実行する

実行中のサーバーに接続できる JMX コンソールはいくつかあります。この例では、Sun の jconsole を使用します。

Java JDK には、jconsole というシンプルな JMX コンソールが付属しており、これを使用して ZooKeeper に接続し、実行中のサーバーを検査できます。QuorumPeerMain を使用して ZooKeeper を起動したら、jconsole を起動します。これは通常、JDK_HOME/bin/jconsole にあります。

「新規接続」ウィンドウが表示されたら、(jconsole がサーバーと同じホストで開始されている場合は)ローカルプロセスに接続するか、リモートプロセスの接続を使用します。

デフォルトでは、VM の「概要」タブが表示されます(これは、VM について洞察を得るための優れた方法です)。「MBeans」タブを選択します。

左側には org.apache.ZooKeeperService が表示されます。この項目を展開すると、サーバーの起動方法に応じて、さまざまなサービス関連機能を監視および管理できます。

Logback MBean の登録 (3.8.0 で新機能)

Logback は、バージョン 3.8.0 以降の ZooKeeper のデフォルトのロギングバックエンドです。logback.xml<jmxConfigurator />を追加することで、JMX MBean を登録するように構成できます。詳細については、Logback のウェブサイトを参照してください。

Log4j MBean (非推奨)

また、log4j1 が SLF4j のロギングバックエンドとして構成されている場合、ZooKeeper は log4j MBean も登録します。左側の同じセクションに「log4j」が表示されます。それを展開して、JMX を介して log4j を管理します。特に興味深いのは、アペンダーとルートのしきい値を編集することで、使用されるロギングレベルを動的に変更できることです。Log4j MBean の登録は、ZooKeeper の起動時に JVM に -Dzookeeper.jmx.log4j.disable=true を渡すことで無効にできます。さらに、古い MBean 名(log4j:hierarchy = default)を使用する統合システムをアップグレードする必要がある場合は、-Dzookeeper.jmx.log4j.mbean=log4j:hierarchy=default オプションを使用して MBean の名前を指定できます。

ZooKeeper MBean リファレンス

この表は、複製された ZooKeeper アンサンブル(つまり、スタンドアロンではない)に参加しているサーバーの JMX の詳細を示しています。これは、本番環境の典型的なケースです。

MBean、その名前、および説明

MBeanMBean オブジェクト名説明
クォーラムReplicatedServer_id<#>クォーラム、またはアンサンブルを表します。すべてのクラスタメンバーの親です。オブジェクト名には、JMX エージェントが接続しているサーバーの「myid」(名前のサフィックス)が含まれていることに注意してください。
ローカルピア/リモートピアreplica.<#>ローカルピアまたはリモートピア(つまり、アンサンブルに参加しているサーバー)を表します。オブジェクト名には、サーバーの「myid」(名前のサフィックス)が含まれていることに注意してください。
リーダー選出リーダー選出進行中の ZooKeeper クラスタのリーダー選出を表します。開始時刻など、選出に関する情報を提供します。
リーダーリーダー親レプリカがリーダーであることを示し、そのサーバーの属性/操作を提供します。Leader は ZooKeeperServer のサブクラスであるため、ZooKeeperServer ノードに通常関連付けられているすべての情報を提供します。
フォロワーフォロワー親レプリカがフォロワーであることを示し、そのサーバーの属性/操作を提供します。Follower は ZooKeeperServer のサブクラスであるため、ZooKeeperServer ノードに通常関連付けられているすべての情報を提供します。
DataTreeInMemoryDataTreeメモリ内の znode データベースに関する統計情報に加えて、データに関するより詳細な(そしてより計算集約的な)統計情報(例:エフェメラル数)にアクセスするための操作も提供します。InMemoryDataTree は、ZooKeeperServer ノードの子です。
ServerCnxn<session_id>各クライアント接続に関する統計情報に加えて、それらの接続に関する操作(終了など)も提供します。オブジェクト名は、接続のセッションID(16進数形式)です。

この表は、スタンドアロンサーバーの JMX の詳細を示しています。スタンドアロンは通常、開発状況でのみ使用されます。

MBean、その名前、および説明

MBeanMBean オブジェクト名説明
ZooKeeperServerStandaloneServer_port<#>実行中のサーバーに関する統計情報に加えて、これらの属性をリセットするための操作も提供します。オブジェクト名には、サーバーのクライアントポート(名前のサフィックス)が含まれていることに注意してください。
DataTreeInMemoryDataTreeメモリ内の znode データベースに関する統計情報に加えて、データに関するより詳細な(そしてより計算集約的な)統計情報(例:エフェメラル数)にアクセスするための操作も提供します。
ServerCnxn< session_id >各クライアント接続に関する統計情報に加えて、それらの接続に関する操作(終了など)も提供します。オブジェクト名は、接続のセッションID(16進数形式)です。