Collecter des mesures

L'agent Java APM prend en charge la collecte périodique des mesures du serveur d'applications.

Une fois l'agent Java APM déployé, vous pouvez collecter les types de mesure suivants :

Mesures par défaut

Les mesures par défaut sont des mesures définies par le système qui sont disponibles par défaut.

Pour un jeu complet de mesures par défaut, voir Mesures disponibles : oracle_apm_monitoring pour l'agent Java APM.

Mesures personnalisées

Les mesures personnalisées sont des mesures définies par l'utilisateur, en plus des mesures par défaut existantes, pour répondre à des besoins spécifiques.

Pour définir une mesure personnalisée, créez un fichier de configuration nommé MetricCollection.acml dans le répertoire oracle-apm-agent/config/<version>.

Le fichier MetricCollection.acml est un fichier personnalisé au format ACML (sous-ensemble YAML) pour configurer la collecte de mesures personnalisées.

Balise ACML Type de données Description
<group name>: chaîne Groupe pour séparer les mesures ayant des valeurs différentes pour l'heure de début et l'intervalle de collecte.
<metric name>: chaîne Nom de la mesure à collecter. Un nom de mesure ne correspond qu'à une seule valeur. La convention d'attribution de nom est une chaîne en minuscules pouvant contenir un tiret comme séparateur.
type: chaîne Type de mesure. Les valeurs possibles sont measurement ou delta.

- measurement : valeur d'exécution courante.

- delta : différence de valeur entre les intervalles de collecte.

scalar: chaîne Type de valeur numérique : elle peut être longue ou double.
source:   Balise représentant un tableau d'entrées sources de mesure. Chaque mesure peut contenir une ou plusieurs entrées sources. Même s'il existe plus d'une entrée source, chaque entrée est vérifiée dans l'ordre au moment de la collecte. Chaque fois que l'entrée peut retourner une valeur valide, elle est utilisée pour l'entrée de mesure et les autres entrées sources sont ignorées.
-   Élément de tableau d'entrée source de mesure.
type: chaîne Type de source de mesure. Ce peut être MBean ou MBeans.

Pour la configuration valuePath, il peut s'agir de MBean ou de MBean.

Pour la configuration operationName, il ne peut s'agir que d'un MBean.

mbean_name: chaîne Nom d'objet MBean pour le type MBean ou MBeans. Pour le type MBeans, le nom d'objet peut comporter un caractère générique ( * ), mais ce dernier n'est pas pris en charge pour MBean.
value_path: chaîne Le chemin est séparé par une barre oblique ( / ) pour obtenir la valeur de MBean. Le chemin de valeur doit conduire à une valeur numérique. Outre le chemin racine qui doit être le nom d'attribut de l'objet MBean, le chemin de fractionnement peut être un des éléments suivants de la valeur de chemin précédente :
  • Nom de champ d'objet.
  • Nom de méthode de l'objet qui ne nécessite aucun paramètre.
  • Clé de CompositeData.
  • Clé de TubularData.
  • Index du tableau.
  • Clé de mappage.
  • Index de la collecte.

Pour le type MBeans, la valeur de chaque objet MBean est agrégée. De même, si le caractère générique ( * ) est utilisé dans le chemin pour le type MBeans, toutes les valeurs extraites sont agrégées.

operation_name chaîne Nom de la méthode MBean à appeler. Notez que MBean doit être enregistré auprès du serveur Platform MBean.
paramètres (facultatif) chaîne Valeurs des paramètres de méthode séparées par une virgule.

Les paramètres de méthode transmis et leurs valeurs correspondantes seront saisis en tant que dimensions de mesure. Actuellement, seul le type de données Chaîne est pris en charge pour les paramètres de méthode.

Les mesures personnalisées peuvent être définies de deux façons à l'aide de l'attribut value_path ou operationName.
  • Attribut value_path : Permet d'extraire la mesure du composant MBean enregistré
  • Attribut operationName : Permet à l'utilisateur d'enregistrer une classe personnalisée auprès du serveur de MBean et d'appeler la méthode de MBean, spécifiée par operationName.

Exemple d'utilisation de l'attribut value_path :

MyMetrics:
    jvm-used-heap:
        type: measurement
        scalar: long
        source:
          -
            type: mbean
            mbean_name: java.lang:type=Memory
            value_path: HeapMemoryUsage/used
    jvm-used-heap-after-old-gc:
        type: measurement
        scalar: long
        source:
          -
            type: mbeans
            mbean_name: java.lang:type=GarbageCollector,name=*Old*
            value_path: LastGcInfo/memoryUsageAfterGc/*/value/used
          -
            type: mbeans
            mbean_name: java.lang:type=GarbageCollector,name=*MarkSweep*
            value_path: LastGcInfo/memoryUsageAfterGc/*/value/used

Dans l'exemple ci-dessus, les mesures sont collectées en haut de chaque minute. Deux mesures doivent être collectées : jvm-heap-used et jvm-used-heap-after-old-gc.

Pour la mesure jvm-heap-used, il n'y a qu'une seule source, soit mbean. Le nom de l'objet MBean est java.lang:type=Memory. Cet objet MBean a un attribut HeapMemoryUsage dont le type de données est CompositeDataSupport. Il n'est pas numérique et ne peut pas être utilisé comme mesure. Toutefois, il représente un mappage des mesures utilisées pouvant être extraites du tas. Par conséquent, il est nécessaire de forer jusqu'à l'objet avec la clé de mappage utilisée.

Pour la mesure jvm-used-heap-after-old-gc, il y a 2 sources : mbeans, les deux sont au pluriel avec un 's'. La mesure est collectée dans l'ordre par définition et la première source qui retourne une mesure valide est utilisée. La raison pour laquelle il y a 2 sources, c'est que différentes versions de Java ont des noms différents pour l'outil de récupération de mémoire. Le forage value_path a également utilisé un caractère générique et toutes les valeurs de mémoire utilisées après gc de tous les espaces de mémoire sont additionnées en tant que valeur de mesure unique. Le forage jusqu'aux données dans le chemin de valeur est LastGcInfo/memoryUsageAfterGc/*/value/used qui fait référence à : LastGcInfo(CompositeData)/memoryUsageAfterGc(TabularData)/<index>(CompositeData)/value(MemoryUsage)/used(Long).

Exemple d'utilisation de l'attribut operationName :

MyMetrics:
    CacheStatistics:
       type: measurement
       scalar: double
       skippable: false
       source:
        - type: mbean
          mbean_name:com.cache:type=CacheServiceMXBean
          operation_name: cacheStatistics
          params: SessionCache,JohnDoe
    DatabaseQueryTime:
       type: measurement
       scalar: long
       skippable: false    
       source:
        - type: mbean
          mbean_name: com.db:type=DbManagerMXBean
          operation_name: dbQueryTime

Dans l'exemple ci-dessus, les mesures sont collectées en haut de chaque minute. Deux mesures doivent être collectées : CacheStatistics et DatabaseQueryTime. La source de cette configuration de MBean ne peut être que MBean.

Pour CacheStatistics, le nom de l'objet MBean est com.cache:type=CacheServiceMXBean. La méthode à appeler est cacheStatistics. L'opération extrait les statistiques de cache pour le nom de cache spécifié, filtrées en fonction de son utilisateur spécifique. SessionCache et JohnDoe sont les valeurs de paramètre pour CacheName et UserName respectivement. L'utilisateur peut créer un mappage d'attributs utiles tels que AssociatedCacheName, CacheHits, CacheMisses, InMemoryHits, OnDiskHits en tant que dimensions et le retourner dans le cadre des types de retour pris en charge, comme décrit ci-dessous, avec leurs valeurs correspondantes.

Pour DatabaseQueryTime, le nom de l'objet MBean est com.db:type=DbManagerMXBean. La méthode à appeler est dbQueryTime. Aucun paramètre n'a été configuré pour ce MBean.

Les types de retour de méthode pris en charge sont les suivants :
  • Mapper<String, Object>, Long>
  • Mapper<String, Object>, Double>
  • Long
  • Double