Überwachung mit der Statistik-API

Die Statistik-API ist die direkte Schnittstelle zur internen Statistikstruktur. Statistiken sind standardmäßig inaktiviert, können aber über die Definition einer Schnittstelle "StatsSpec" aktiviert werden. Eine Schnittstelle "StatsSpec" definiert, wie WebSphere eXtreme Scale Statistiken überwachen soll.

Informationen zu diesem Vorgang

Sie können die lokale API "StatsAccessor" verwenden, um Daten abzufragen und auf Statistiken zu jeder ObjectGrid-Instanz zuzugreifen, die in derselben Java Virtual Machine (JVM) wie der aktive Code ausgeführt wird. Weitere Informationen zu den einzelnen Schnittstellen finden Sie in der API-Dokumentation. Verwenden Sie die folgenden Schritte, um die Überwachung der internen Statistikstruktur zu aktivieren.

Vorgehensweise

  1. Rufen Sie das StatsAccessor-Objekt ab. Die Schnittstelle "StatsAccessor" folgt dem Singleton-Muster. Abgesehen von Problemen mit dem Klassenladeprogramm sollte deshalb nur eine einzige StatsAccessor-Instanz für jede JVM vorhanden sein. Diese Klasse dient als Hauptschnittstelle für alle lokalen Statistikoperationen. Der folgende Beispielcode veranschaulicht, wie die Klasse "accessor" abgerufen wird. Rufen Sie diese Operation auf, bevor Sie andere ObjectGrid-Aufrufe absetzen.
    public class LocalClient {
    
       public static void main(String[] args) {
    
          // Handle für StatsAccessor abrufen
          StatsAccessor accessor = StatsAccessorFactory.getStatsAccessor();
    
       }
    
    }
  2. Definieren Sie die Schnittstelle StatsSpec für das Datengrid. Definieren Sie diese JVM so, dass alle Statistiken nur auf ObjectGrid-Ebene erfasst werden. Sie müssen sicherstellen, dass eine Anwendung alle Statistiken aktiviert, die möglicherweise erforderlich sind, bevor Sie Transaktionen starten. Im folgenden Beispiel wird die Schnittstelle StatsSpec mit einem statischen Konstantenfeld und einer Spezifikationszeichenfolge definiert. Die Verwendung eines statischen Konstantenfelds ist einfacher, weil das Feld bereits die Spezifikation definiert hat. Wenn Sie jedoch eine Spezifikationszeichenfolge verwenden, können Sie jede erforderliche Kombination von Statistiken aktivieren.
    public static void main(String[] args) {
    
          // Handle für StatsAccessor abrufen
          StatsAccessor accessor = StatsAccessorFactory.getStatsAccessor();
    
          // Spezifikation über das statische Feld definieren.
          StatsSpec spec = new StatsSpec(StatsSpec.OG_ALL);
          accessor.setStatsSpec(spec);
    
          // Spezifikation über die Spezifikationszeichenfolge definieren.
          StatsSpec spec = new StatsSpec("og.all=enabled");
          accessor.setStatsSpec(spec);
    
    }
  3. Senden Sie Transaktionen an das Grid, damit Daten für die Überwachung erfasst werden. Zum Erfassen hilfreicher Daten für Statistiken müssen Sie Transaktionen an das Datengrid senden. Der folgende Codeauszug fügt einen Datensatz in MapA ein, die in ObjectGridA enthalten ist. Da die Statistiken auf ObjectGrid-Ebene erfasst werden, liefert jede Map im ObjectGrid dieselben Ergebnisse.
    public static void main(String[] args) {
    
          // Handle für StatsAccessor abrufen
          StatsAccessor accessor = StatsAccessorFactory.getStatsAccessor();
    
          // Spezifikation über das statische Feld definieren.
          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");
    
          // Einfügenvorgang starten.
          session.begin();
          map.insert("SomeKey", "SomeValue");
          session.commit();
    }
  4. Fragen Sie eine StatsFact mit der API "StatsAccessor" ab. Jedem Statistikpfad wird eine Schnittstelle "StatsFact" zugeordnet. Die Schnittstelle StatsFact ist ein generischer Platzhalter, der verwendet wird, um ein StatsModule-Objekt zu organisieren und aufzunehmen. Bevor Sie auf das eigentliche Statistikmodul zugreifen können, muss das StatsFact-Objekt abgerufen werden.
    public static void main(String[] args)
    {
    
          // Handle für StatsAccessor abrufen
          StatsAccessor accessor = StatsAccessorFactory.getStatsAccessor();
    
          // Spezifikation über das statische Feld definieren.
          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");
    
          // Einfügenvorgang starten.
          session.begin();
          map.insert("SomeKey", "SomeValue");
          session.commit();
    
          // StatsFact abrufen
    
          StatsFact fact = accessor.getStatsFact(new String[] {"EmployeeGrid"}, 
    				StatsModule.MODULE_TYPE_OBJECT_GRID);
    
    }
  5. Interagieren Sie mit dem StatsModule-Objekt. Das StatsModule-Objekt ist in der Schnittstelle StatsFact enthalten. Sie können eine Referenz auf das Modul über die Schnittstelle StatsFact anfordern. Da die Schnittstelle StatsFact eine generische Schnittstelle ist, müssen Sie das zurückgegebene Modul in den erwarteten StatsModule-Typ umsetzen. Da diese Task eXtreme-Scale-Statistiken erfasst, wird das zurückgegebene StatsModule-Objekt in den Typ "OGStatsModule" umgesetzt. Nach der Umsetzung des Moduls haben Sie Zugriff auf alle verfügbaren Statistiken.
    public static void main(String[] args) {
    
          // Handle für StatsAccessor abrufen
          StatsAccessor accessor = StatsAccessorFactory.getStatsAccessor();
    
          // Spezifikation über das statische Feld definieren.
          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");
    
          // Einfügenvorgang starten.
          session.begin();
          map.insert("SomeKey", "SomeValue");
          session.commit();
    
          // StatsFact abrufen
          StatsFact fact = accessor.getStatsFact(new String[] {"EmployeeGrid"}, 
    				StatsModule.MODULE_TYPE_OBJECT_GRID);
    
          // Modul und Zeit abrufen
          OGStatsModule module = (OGStatsModule)fact.getStatsModule();
          ActiveTimeStatistic timeStat = 
    				module.getTransactionTime("Default", true);
          double time = timeStat.getMeanTime(); 
    
    }