矢印アイコン 目次 矢印アイコン
第 1章

Java SEモニタリングおよび管理の概要

この章では、Java Platform, Standard Edition (Java SEプラットフォーム)にモニタリングと管理の両サービスを提供する機能およびユーティリティを説明します。ここで紹介する機能の詳細については、このガイドの次の章を参照してください。

主なモニタリングおよび管理機能

Java SEプラットフォームには、重要なモニタリングおよび管理機能が用意されています。これらの機能は、大きく4つに分類されます。

  • Java仮想マシン(Java VM)のインストゥルメンテーション。

  • モニタリングおよび管理アプリケーション・プログラミング・インタフェース(API)。

  • モニタリングおよび管理ツール。

  • Java Management Extensions (JMX)テクノロジ。

これらのモニタリングおよび管理機能の分類についての詳細は、次のセクションを参照してください。

Java VMインストゥルメンテーション

Java VMは、モニタリングおよび管理を目的として計測され、ローカル・アクセスやリモート・アクセスを実現する組込み型の(または、追加設定不要(アウトオブボックス)な)管理機能を有効にします。詳細は、第 2章「JMXテクノロジを使用するモニタリングと管理」第 5章「SNMPモニタリングと管理」を参照してください。

Java VMには、JMX仕様に準拠した管理アプリケーションで使用されるプラットフォームMBeanサーバーとプラットフォームMBeanが用意されています。これらは、モニタリングおよび管理API (次のセクションに記載)の実装です。プラットフォームMXBeanとMBeanサーバーについては、プラットフォームMXBeanプラットフォームMBeanサーバーを参照してください。

サンプル・コードは、JDK_HOME/demo/managementディレクトリに格納されています。ここでJDK_HOMEはJava Development Kit (JDK)がインストールされているディレクトリです。

モニタリングおよび管理API

java.lang.managementパッケージでは、Java VMのモニタリングおよび管理を行うインタフェースを提供します。このAPIでは、次の種類の情報にアクセスします。

  • ロードされたクラスと実行中のスレッドの数。

  • Java VMの稼働時間、システム・プロパティ、VM入力引数。

  • スレッド状態、スレッド競合統計、ライブ・スレッドのスタック・トレース。

  • メモリー消費。

  • ガベージ・コレクションの統計。

  • ロー・メモリーの検出。

  • オンデマンド・デッドロックの検出。

  • オペレーティング・システム情報。

java.lang.management APIに加え、java.util.logging.LoggingMXBean APIでは、ロギングのモニタリングおよび管理が可能です。

モニタリングおよび管理ツール

Java SEプラットフォームには、JConsoleと呼ばれるモニタリング用グラフィカル・ツールが用意されています。JConsoleにはJMX APIが実装されており、パフォーマンスを最大限に発揮させるための情報を提供することにより、Java VMと計測されたアプリケーションのパフォーマンスのモニターを可能にします。JConsoleはJava SE 5.0プラットフォームで導入され、Java SE 6プラットフォームで正式なサポートの対象機能となりました。

この2つのJava SEプラットフォームのリリース間でJConsoleに追加された拡張機能の一部は、次のとおりです。

  • JConsoleプラグイン・サポート: アプリケーションのMBeanにアクセスする際に必要なカスタム・タブを追加するなど、JConsoleで実行される独自のプラグイン構築が可能となります。

  • 動的接続機能: Java SEプラットフォームのバージョン6に追加されたAttach APIをサポートするアプリケーションにJConsoleが接続可能となります。

  • 強化されたユーザー・インタフェース: データ・アクセスをさらに簡単にします。

  • 新しい「概要」タブおよび「VMの概要」タブ: 使用中のJava VMに関する全体情報をよりわかりやすく表示します。

  • HotSpot診断MBean: 実行時にヒープ・ダンプを要求し、また一部のVMオプションの設定変更を行うAPIが用意されています。

  • 強化されたMBeanプレゼンテーション: MBeanの操作や属性に対するアクセスを簡単にします。

JConsoleの全般については、第 3章「JConsoleの使用」を参照してください。

ほかのコマンド行ツールは、Java SEプラットフォームでも使用することができます。詳細は、JDK開発ツールのドキュメント内にある「モニタリング・ツール」セクションを参照してください。

Java Management Extensions (JMX)テクノロジ

Java SE プラットフォームのバージョン8には、 JMX仕様のバージョン1.4が含まれています。JMX APIでは、モニタリングおよび管理を行うアプリケーションを計測することができます。RMIコネクタでは、JConsoleなどからこの計測へのリモート・アクセスが可能となります。

詳細は、Java SEプラットフォームのJMXテクノロジのドキュメントを参照してください。JMX APIの主なコンポーネントの概要については、次のセクションを参照してください。

MBeanとは

JMXテクノロジのMBeanは、管理対象Bean、すなわち管理されるリソースを表すJavaオブジェクトです。MBeanには管理インタフェースが設けられており、このインタフェースは次の要素で構成されます。

  • 読出しや書込み可能な名前付きおよび型付き属性。

  • 呼出し可能な名前付きおよび型付き操作。

  • MBeanが送出可能な型付き通知。

たとえば、アプリケーションの構成を表すMBeanには、キャッシュ・サイズなどのさまざまな構成パラメータを表す属性が用意されています。CacheSize属性を読み取ることにより、現在のキャッシュ・サイズが返されます。CacheSizeの書込みを行うと、このキャッシュ・サイズが更新され、アプリケーションの実行中の処理を変更できる可能性があります。saveなどの操作では、現在の構成を持続的に保存することができます。構成の変更を行うときは、MBeanでConfigurationChangedNotificationなどの通知が送られます。

MBeanは、標準または動的なものとなります。標準MBeanは、JavaBeansコンポーネント・モデルに由来する、設計パターンに準拠したJavaオブジェクトです。動的MBeanでは、実行時にその管理インタフェースを定義します。最近では、MXBeanと呼ばれる新たな形式のMBeanもJavaプラットフォームに追加されています。

  • 標準MBeanでは、その属性と操作を通じて直接管理を行うリソースが公開されます。属性は、「getter」メソッドや「setter」メソッドを通じて公開されます。操作は、クラスのその他のメソッドのうち、管理側で利用可能なメソッドです。これらのメソッドはすべてMBeanインタフェースに静的に定義されており、JMXエージェントでは、イントロスペクションを通じてこれらのメソッドを確認できます。これが新しいリソースを管理可能にするいちばんわかりやすい方法です。

  • 動的MBeanは、その管理インタフェースを実行時に定義するMBeanです。たとえば、構成MBeanは、XMLファイルの解析により、公開する属性の名前と型を決定できます。

  • MXBeanMBeanの一種であり、定義済の型セットのみを参照するMBeanのコーディングを簡単に行う方法を提供します。この方法なら、リモート・クライアントを含むクライアントは、MBeanの型を示すモデル固有のクラスにアクセスしなくても、MBeanを利用できます。次に説明するプラットフォームMBeanは、すべてMXBeanです。

MBeanサーバー

有効にするには、MBeanをMBeanサーバーに登録する必要があります。MBeanサーバーは、MBeanのリポジトリです。各MBeanは、MBeanサーバー内の一意の名前を使用して登録されます。MBeanには、通常MBeanサーバーを経由してのみアクセスします。すなわち、コードではMBeanに直接アクセスするのではなく、名前を使用することにより、MBeanサーバー経由でMBeanにアクセスします。

Java SEプラットフォームには、組込み型のプラットフォームMBeanサーバーが含まれています。詳細は、第 4章「プラットフォームMBeanサーバーとプラットフォームMXBeanの使用」を参照してください。

MBeanの作成および登録

MBeanは2とおりの方法で作成できます。1つ目の方法では、MBeanであるJavaオブジェクトを作成し、registerMBeanメソッドでそのオブジェクトをMBeanサーバーに登録します。もう1つの方法では、createMBeanメソッドの1つを使用して単一操作でMBeanの作成および登録を行います。

registerMBeanメソッドは、ローカルでの使用を目的とした単純な構造となっていますが、リモートで使用することはできません。createMBeanメソッドは、リモートで使用することができますが、場合によってクラス・ローディングの問題に注意を払う必要があります。MBeanサーバーでMBeanRegistrationインタフェースを実装している状態でMBeanをそのMBeanサーバーに登録またはそのサーバーから登録解除するときは、そのMBeanでアクションを実行することができます。

アプリケーションの計測

JMX APIで管理用アプリケーションを計測する一般的な手順については、ほかのドキュメントを参照してください。詳細は、Java Management Extensions (JMX)テクノロジのドキュメントを参照してください。

プラットフォームMXBean

プラットフォームMXBeanは、Java Runtime Environment (JRE)のJava VMとその他のコンポーネントをモニタリングおよび管理するMBeanです。各MXBeanでは、クラス・ローディング・システム、Just In Time (JIT)コンパイル・システム、ガベージ・コレクタなどのVM機能の一部をカプセル化します。

表 1-1では、すべてのプラットフォームMXBeanとそれぞれのプラットフォームMXBeanで管理するVMの状態を一覧で示します。各プラットフォームMXBeanには、プラットフォームMBeanサーバーの登録に必要な一意のjavax.management.ObjectNameがあります。Java VMでは、それぞれのMXBeanのインスタンスの数が、表に示すようにMXBeanの機能に応じて0、1、またはそれ以上となります。

表 1-1プラットフォームMXBean

インタフェース 管理下にあるVMの区分 オブジェクト名 VMごとのインスタンス数

ClassLoadingMXBean

クラス・ローディング・システム

java.lang:type= ClassLoading

1

CompilationMXBean

コンパイル・システム

java.lang:type= Compilation

0または1

GarbageCollectorMXBean

ガベージ・コレクタ

java.lang:type= GarbageCollector、name=collectorName

1個以上

LoggingMXBean

ロギング・システム

java.util.logging:type =Logging

1

MemoryManagerMXBean (GarbageCollectorMXBeanのサブインタフェース)

メモリー・プール

java.lang:typeMemoryManager、name=managerName

1個以上

MemoryPoolMXBean

メモリー

java.lang:type= MemoryPool、name=poolName

1個以上

MemoryMXBean

メモリー・システム

java.lang:type= Memory

1

OperatingSystemMXBean

基盤となるオペレーティング・システム

java.lang:type= OperatingSystem

1

RuntimeMXBean

ランタイム・システム

java.lang:type= Runtime

1

ThreadMXBean

スレッド・システム

java.lang:type= Threading

1

プラットフォームMXBean (LoggingMXBeanは除く)の詳細については、java.lang.managementパッケージのAPIリファレンスに記載されているパッケージの解説を参照してください。LoggingMXBeanの詳細は、java.util.loggingのAPIリファレンスを参照してください。

プラットフォームMBeanサーバー

プラットフォームMBeanサーバーは、同一のJava VM内で実行する、個々に管理されたコンポーネントにより共有することができます。プラットフォームMBeanサーバーには、ManagementFactory.getPlatformMBeanServer()メソッドを使用してアクセスすることができます。このメソッドに対する1回目の呼出しにより、プラットフォームMBeanサーバーが作成され、次にこのサーバーの一意のオブジェクト名を使用してプラットフォームMXBeanの登録が行われます。そのあと、このメソッドは、最初に作成したプラットフォームMBeanServerのインスタンスを返します。

動的に作成/破棄されたMXBean (たとえば、メモリー・プールやマネージャ)は、プラットフォームMBeanサーバーで自動的に登録や登録解除が行われます。システム・プロパティjavax.management.builder.initialの設定が行われている場合、プラットフォームMBeanサーバーは、指定のMBeanServerBuilderを使用して作成されます。

プラットフォームMBeanサーバーを使用してプラットフォームMXBeanの横にあるほかのMBeanの登録を行うことができます。これにより、MBeanはすべて同一のMBeanサーバーを介して公開され、ネットワークはより簡単に公開したり、検出することができるようになります。

spacer img
矢印アイコン 目次 矢印アイコン

Copyright © 1993, 2020, Oracle and/or its affiliates. All rights reserved.