Surveillance à l'aide de l'API Statistics

L'API Statistics est l'interface directe avec l'arborescence interne des statistiques. Les statistiques sont désactivées par défaut, mais peuvent être activées en définissant une interface StatsSpec. Une interface StatsSpec définit la manière dont WebSphere eXtreme Scale doit surveiller les statistiques.

Pourquoi et quand exécuter cette tâche

Vous pouvez utiliser l'API locale StatsAccessor pour interroger les données et accéder aux statistiques d'une instance ObjectGrid qui se trouve sur la même machine virtuelle Java (JVM) que le code en cours d'exécution. Pour plus d'informations sur les interfaces spécifiques, voir la documentation de l'API. Utilisez les étapes ci-après pour activer la surveillance de l'arborescence des statistiques interne.

Procédure

  1. Extrayez l'objet StatsAccessor. L'interface StatsAccessor suit le modèle des singletons. Par conséquent, en dehors des problèmes liés au chargeur de classe, il doit exister une instance StatsAccessor pour chaque JVM. Cette classe sert d'interface principale pour toutes les opérations sur les statistiques locales. Le code ci-après illustre l'extraction de la classe de l'accesseur. Appelez cette opération avant tout autre appel ObjectGrid.
    public class LocalClient
    {
    
       public static void main(String[] args) {
    
          // extrayez un descripteur de StatsAccessor
          StatsAccessor accessor = StatsAccessorFactory.getStatsAccessor();
    
       }
    
    }
  2. Définissez l'interface StatsSpec de grille de données. Définissez cette JVM de sorte qu'elle ne collecte toutes les statistiques qu'au niveau d'ObjectGrid. Vous devez vérifier qu'une application active toutes les statistiques qui peuvent être requises avant de commencer des transactions. L'exemple ci-après définit l'interface StatsSpec à l'aide d'une zone de constante statique et d'une chaîne de spécification. L'utilisation d'une zone de constante statique est plus simple car la zone a déjà défini la spécification. Toutefois, en utilisant une chaîne de spécification, vous pouvez autoriser toutes les combinaisons de statistiques requises.
    public static void main(String[] args) {
    
          // extrayez un descripteur de StatsAccessor
          StatsAccessor accessor = StatsAccessorFactory.getStatsAccessor();
    
          // Définissez la spéc via la zone statique
          StatsSpec spec = new StatsSpec(StatsSpec.OG_ALL);
          accessor.setStatsSpec(spec);
    
          // Définissez la spécification via la chaîne de spécification
          StatsSpec spec = new StatsSpec("og.all=enabled");
          accessor.setStatsSpec(spec);
    
    }
  3. Envoyez des transactions à la grille pour force la collecte des données en vue de la surveillance. Pour collecter des données utiles pour les statistiques, vous devez envoyer des transactions à la grille de données. L'extrait de code suivant insère un enregistrement dans MapA, qui se trouve dans ObjectGridA. Les statistiques se trouvant au niveau d'ObjectGrid, toute mappe dans l'ObjectGrid renvoie les mêmes résultats.
    public static void main(String[] args) {
    
          // extrayez un descripteur de StatsAccessor
          StatsAccessor accessor = StatsAccessorFactory.getStatsAccessor();
    
          // Définissez la spéc via la zone statique
          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");
    
          // Effectuez une insertion
          session.begin();
          map.insert("SomeKey", "SomeValue");
          session.commit();
    }
  4. Interrogez un objet StatsFact à l'aide de l'API StatsAccessor. Tous les chemins d'accès aux statistiques sont associés à une interface StatsFact. L'interface StatsFact est une marque de réservation générique permettant d'organiser et d'inclure un objet StatsModule. Pour que vous puissiez accéder au véritable module de statistiques, l'objet StatsFact doit être extrait.
    public static void main(String[] args)
    {
    
          // extrayez un descripteur de StatsAccessor
          StatsAccessor accessor = StatsAccessorFactory.getStatsAccessor();
    
          // Définissez la spéc via la zone statique
          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");
    
          // Effectuez une insertion
          session.begin();
          map.insert("SomeKey", "SomeValue");
          session.commit();
    
          // Extrayez StatsFact
    
          StatsFact fact = accessor.getStatsFact(new String[] {"EmployeeGrid"}, 
    				StatsModule.MODULE_TYPE_OBJECT_GRID);
    
    }
  5. Interagissez avec l'objet StatsModule. L'objet StatsModule est contenu dans l'interface StatsFact. Vous pouvez obtenir une référence au module à l'aide de l'interface StatsFact. L'interface StatsFact étant une interface générique, vous devez transtyper le module renvoyé dans le type StatsModule attendu. Cette tâche collectant des statistiques eXtreme Scale, l'objet StatsModule renvoyé est transtypé dans un type OGStatsModule. Une fois que le module est transtypé, vous avez accès à toutes les statistiques disponibles.
    public static void main(String[] args) {
    
          // extrayez un descripteur de StatsAccessor
          StatsAccessor accessor = StatsAccessorFactory.getStatsAccessor();
    
          // Définissez la spéc via la zone statique
          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");
    
          // Effectuez une insertion
          session.begin();
          map.insert("SomeKey", "SomeValue");
          session.commit();
    
          // Extrayez StatsFact
          StatsFact fact = accessor.getStatsFact(new String[] {"EmployeeGrid"}, 
    				StatsModule.MODULE_TYPE_OBJECT_GRID);
    
          // Extrayez le module et l'heure
          OGStatsModule module = (OGStatsModule)fact.getStatsModule();
          ActiveTimeStatistic timeStat = 
    				module.getTransactionTime("Default", true);
          double time = timeStat.getMeanTime(); 
    
    }