統計 API によるモニター

統計 API は、内部統計ツリーに直接接続するインターフェースです。 統計はデフォルトでは使用不可になっていますが、StatsSpec インターフェースを設定することで使用可能にすることができます。 StatsSpec インターフェースは、WebSphere® eXtreme Scale がどのように統計をモニターするかを定義します。

このタスクについて

ローカルの StatsAccessor API を使用して、実行中のコードと同じ Java 仮想マシン (JVM) にある ObjectGrid インスタンス上のデータおよびアクセス統計を照会することができます。 個々のインターフェースについて詳しくは、API 資料を参照してください。 次の手順で、内部統計ツリーのモニターを使用可能にします。

手順

  1. StatsAccessor オブジェクトを検索します。 StatsAccessor インターフェースは singleton パターンに従います。 したがって、クラス・ローダーに関連する問題を別にすれば、JVM ごとに 1 つの StatsAccessor インスタンスが存在するはずです。 このクラスはすべてのローカル統計操作のメイン・インターフェースとして機能します。 以下のコードは、accessor クラスの検索方法の例です。 この操作は、他のすべての ObjectGrid 呼び出しより前に呼び出します。
    public class LocalClient
    {
    
       public static void main(String[] args) {
    
          // retrieve a handle to the StatsAccessor
          StatsAccessor accessor = StatsAccessorFactory.getStatsAccessor();
    
       }
    
    }
  2. データ・グリッド StatsSpec インターフェースを設定します。 すべての統計を ObjectGrid レベルでのみ収集するように、この JVM を設定します。 トランザクションを開始する前に、必要と思われるすべての統計をアプリケーションが使用可能にするようにする必要があります。 次の例は、static 定数フィールドと spec ストリングの両方を使用して StatsSpec インターフェースを設定するものです。 static 定数フィールドは既に仕様が定義されているため、このフィールドを使用する方が簡単です。 ただし、spec ストリングを使用すれば、必要な統計のどんな組み合わせでも使用可能にすることができます。
    public static void main(String[] args) {
    
          // retrieve a handle to the StatsAccessor
          StatsAccessor accessor = StatsAccessorFactory.getStatsAccessor();
    
          // Set the spec via the static field
          StatsSpec spec = new StatsSpec(StatsSpec.OG_ALL);
          accessor.setStatsSpec(spec);
    
          // Set the spec via the spec String
          StatsSpec spec = new StatsSpec("og.all=enabled");
          accessor.setStatsSpec(spec);
    
    }
  3. トランザクションをグリッドに送信して、モニター用のデータが収集されるようにします。 統計用に有効なデータを収集するには、トランザクションをデータ・グリッドに送る必要があります。 次のコード抜粋は、ObjectGridA 内の MapA にレコードを挿入するものです。 統計は、ObjectGrid レベルであるため、ObjectGrid 内のマップはいずれも同じ結果を示します。
    public static void main(String[] args) {
    
          // retrieve a handle to the StatsAccessor
          StatsAccessor accessor = StatsAccessorFactory.getStatsAccessor();
    
          // Set the spec via the static field
          StatsSpec spec = new StatsSpec(StatsSpec.OG_ALL);
          accessor.setStatsSpec(spec);
    
          ObjectGridManager manager = 
    				ObjectGridmanagerFactory.getObjectGridManager();
          ObjectGrid grid = manager.getObjectGrid("ObjectGridA");
          Session session = grid.getSession();
          Map map = session.getMap("MapA");
    
          // Drive insert
          session.begin();
          map.insert("SomeKey", "SomeValue");
          session.commit();
    }
  4. StatsAccessor API を使用して StatsFact を照会します。 すべての統計パスは StatsFact インターフェースに関連付けられます。 StatsFact インターフェースは、StatsModule オブジェクトを編成して組み込むために使用される汎用プレースホルダーです。 実際の統計モジュールにアクセスするためには、前もって StatsFact オブジェクトを検索する必要があります。
    public static void main(String[] args)
    {
    
          // retrieve a handle to the StatsAccessor
          StatsAccessor accessor = StatsAccessorFactory.getStatsAccessor();
    
          // Set the spec via the static field
          StatsSpec spec = new StatsSpec(StatsSpec.OG_ALL);
          accessor.setStatsSpec(spec);
    
          ObjectGridManager manager = 
    				ObjectGridManagerFactory.getObjectGridManager();
          ObjectGrid grid = manager.getObjectGrid("ObjectGridA");
          Session session = grid.getSession();
          Map map = session.getMap("MapA");
    
          // Drive insert
          session.begin();
          map.insert("SomeKey", "SomeValue");
          session.commit();
    
          // Retrieve StatsFact
    
          StatsFact fact = accessor.getStatsFact(new String[] {"EmployeeGrid"}, 
    				StatsModule.MODULE_TYPE_OBJECT_GRID);
    
    }
  5. StatsModule オブジェクトと対話します。 StatsModule オブジェクトは StatsFact インターフェース内に含まれています。 StatsFact インターフェースを使用してモジュールへの参照を取得できます。 StatsFact インターフェースは汎用インターフェースであるため、戻されたモジュールを予期された StatsModule タイプにキャストする必要があります。 このタスクは eXtreme Scale の統計を収集するため、戻された StatsModule オブジェクトは OGStatsModule タイプにキャストされます。 モジュールがキャストされたならば、使用可能なすべての統計にアクセスすることができます。
    public static void main(String[] args) {
    
          // retrieve a handle to the StatsAccessor
          StatsAccessor accessor = StatsAccessorFactory.getStatsAccessor();
    
          // Set the spec via the static field
          StatsSpec spec = new StatsSpec(StatsSpec.OG_ALL);
          accessor.setStatsSpec(spec);
    
          ObjectGridManager manager = 
    				ObjectGridmanagerFactory.getObjectGridManager();
          ObjectGrid grid = manager.getObjectGrid("ObjectGridA");
          Session session = grid.getSession();
          Map map = session.getMap("MapA");
    
          // Drive insert
          session.begin();
          map.insert("SomeKey", "SomeValue");
          session.commit();
    
          // Retrieve StatsFact
          StatsFact fact = accessor.getStatsFact(new String[] {"EmployeeGrid"}, 
    				StatsModule.MODULE_TYPE_OBJECT_GRID);
    
          // Retrieve module and time
          OGStatsModule module = (OGStatsModule)fact.getStatsModule();
          ActiveTimeStatistic timeStat = 
    				module.getTransactionTime("Default", true);
          double time = timeStat.getMeanTime(); 
    
    }