Supervisión con la API de estadísticas

La API de estadísticas es la interfaz directa al árbol de estadísticas internas. De forma predeterminada las estadísticas están inhabilitadas, aunque pueden habilitarse estableciendo una interfaz StatsSpec. Una interfaz StatsSpec define cómo WebSphere eXtreme Scale debe supervisar estadísticas.

Acerca de esta tarea

Puede utilizar la API StatsAccessor local para consultar los datos y acceder a las estadísticas sobre cualquier instancia de ObjectGrid que está en la misma Máquina virtual Java (JVM ) que el código de ejecución. Si desea más información sobre las interfaces específicas, consulta la documentación de la API. Utilice los pasos siguientes para habilitar la supervisión del árbol de estadísticas internas.

Procedimiento

  1. Recupere el objeto StatsAccessor. La interfaz StatsAccessor sigue el patrón singleton. Por lo tanto, aparte de los problemas relacionados con el cargador de clases, debe existir una instancia de StatsAccessor para cada JVM . Esta clase hace las veces de interfaz principal para todas las operaciones de estadísticas locales. El siguiente código es un ejemplo sobre cómo recuperar la clase del descriptor de acceso. Llame a esta operación antes de cualquier otra llamada de ObjectGrid.
    public class LocalClient
    {
    
       public static void main(String[] args) {
    
          // Recuperar un descriptor de contexto para StatsAccessor
          StatsAccessor accessor = StatsAccessorFactory.getStatsAccessor();
    
       }
    
    }
  2. Establezca la interfaz StatsSpec de cuadrícula de datos. Establezca esta JVM para recopilar todas las estadísticas sólo en el nivel de ObjectGrid. Debe asegurarse de que una aplicación habilite todas las estadísticas que puedan ser necesarias antes de empezar las transacciones. En el siguiente ejemplo se establece la interfaz StatsSpec utilizando un campo contante estático y una serie de especificación. El uso de un campo constante estático es más fácil porque el campo ya ha definido la especificación. No obstante, si utiliza una serie de especificación, podrá habilitar cualquier combinación de estadísticas que sea necesaria.
    public static void main(String[] args) {
    
          // Recuperar un descriptor de contexto para StatsAccessor
          StatsAccessor accessor = StatsAccessorFactory.getStatsAccessor();
    
          // Establecer la especificación a través del campo estático
          StatsSpec spec = new StatsSpec(StatsSpec.OG_ALL);
          accessor.setStatsSpec(spec);
    
          // Establecer la especificación a través de la serie de especificación
          StatsSpec spec = new StatsSpec("og.all=enabled");
          accessor.setStatsSpec(spec);
    
    }
  3. Envíe las transacciones ala cuadrícula para obligar a que se recopilen los datos para la supervisión. Para recopilar datos útiles para las estadísticas, debe enviar las transacciones a la cuadrícula de datos. El siguiente extracto de código inserta un registro en MapA, que es un ObjectGridA. Dado que las estadísticas están en un nivel de ObjectGrid, cualquier correlación dentro de ObjectGrid genera los mismos resultados.
    public static void main(String[] args) {
    
          // Recuperar un descriptor de contexto para StatsAccessor
          StatsAccessor accessor = StatsAccessorFactory.getStatsAccessor();
    
          // Establecer la especificación a través del campo estático
          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");
    
          // Insertar unidad
          session.begin();
          map.insert("SomeKey", "SomeValue");
          session.commit();
    }
  4. Consulte una StatsFact utilizando la API StatsAccessor. Cada vía de acceso de estadísticas está asociada a una interfaz StatsFact. La interfaz StatsFact es un marcador genérico que se utiliza para organizar y contener un objeto StatsModule. Para poder acceder al módulo de estadísticas real, se debe recuperar el objeto StatsFact.
    public static void main(String[] args)
    {
    
          // Recuperar un descriptor de contexto para StatsAccessor
          StatsAccessor accessor = StatsAccessorFactory.getStatsAccessor();
    
          // Establecer la especificación a través del campo estático
          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");
    
          // Insertar unidad
          session.begin();
          map.insert("SomeKey", "SomeValue");
          session.commit();
    
          // Recuperar StatsFact
    
          StatsFact fact = accessor.getStatsFact(new String[] {"EmployeeGrid"}, 
    				StatsModule.MODULE_TYPE_OBJECT_GRID);
    
    }
  5. Interactúe con el objeto StatsModule. El objeto StatsModule está incluido dentro de la interfaz StatsFact. Puede obtener una referencia al módulo utilizando la interfaz StatsFact. Como la interfaz StatsFact es una interfaz genérica, debe convertir el módulo devuelto en el tipo de StatsModule esperado. Puesto que esta tarea recopila estadísticas de eXtreme Scale, el objeto StatsModule devuelto se convierte en el tipo OGStatsModule. Una vez que se ha convertido el módulo, tendrá acceso a todas las estadísticas disponibles.
    public static void main(String[] args) {
    
          // Recuperar un descriptor de contexto para StatsAccessor
          StatsAccessor accessor = StatsAccessorFactory.getStatsAccessor();
    
          // Establecer la especificación a través del campo estático
          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");
    
          // Insertar unidad
          session.begin();
          map.insert("SomeKey", "SomeValue");
          session.commit();
    
          // Recuperar StatsFact
          StatsFact fact = accessor.getStatsFact(new String[] {"EmployeeGrid"}, 
    				StatsModule.MODULE_TYPE_OBJECT_GRID);
    
          // Recuperar módulo y hora
          OGStatsModule module = (OGStatsModule)fact.getStatsModule();
          ActiveTimeStatistic timeStat = 
    				module.getTransactionTime("Default", true);
          double time = timeStat.getMeanTime(); 
    
    }