Collecte de mesures

L'agent Java APM prend en charge la collecte régulière des mesures de 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 disponibles par défaut.

Pour obtenir un ensemble complet de mesures par défaut, reportez-vous à Mesures disponibles : oracle_apm_monitoring pour l'agent Java APM.

Collecte de mesures

Les mesures personnalisées sont des mesures définies par l'utilisateur qui peuvent être créées en plus des mesures par défaut existantes pour répondre à des exigences 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 de YAML) destiné à la configuration de la collecte des mesures personnalisées.

Balise ACML Type de données Description
<nom de groupe>: chaîne Groupe permettant de séparer les mesures avec des intervalles et des heures de début de collecte différents.
<nom de mesure>: chaîne Nom de la mesure à collecter. Un nom de mesure correspond à une seule valeur. La convention de dénomination est une chaîne en minuscules, séparée par un tiret.
type: chaîne Type de mesure. Il peut prendre la valeur measurement ou delta.

- measurement : valeur d'exécution en cours.

- delta : écart de valeur entre les intervalles de collecte.

scalar: chaîne Type de valeur numérique pouvant prendre la valeur long ou double.
source:   Balise représentant le tableau des entrées source de mesure. Chaque mesure peut contenir plusieurs entrées source. Même s'il existe plusieurs entrées source, chaque entrée est vérifiée dans l'ordre au moment de la collecte. Dès qu'une entrée peut renvoyer une valeur valide, elle est utilisée pour l'entrée de mesure et les autres entrées source sont ignorées.
-   Elément du tableau des entrées source de mesure.
type: chaîne Type de source de mesure. Il peut prendre la valeur mbean ou mbeans.

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

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

mbean_name: chaîne Nom d'objet MBean pour le type mbean ou mbeans. Pour le type mbeans, le nom d'objet peut contenir un caractère générique (*). Ce dernier n'est en revanche pas pris en charge pour le type 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 mener vers une valeur numérique. Outre le chemin racine qui doit être le nom d'attribut de l'objet mbean, le chemin fractionné peut être l'une des valeurs de chemin précédent suivantes :
  • Nom du champ d'objet.
  • Nom de méthode de l'objet ne prenant aucun paramètre.
  • Clé de CompositeData.
  • Clé de TubularData.
  • Index du tableau.
  • Clé de la carte.
  • Index de la collecte.

Pour le type mbeans, les valeurs des objets mbean sont agrégées. De même, si le caractère générique (*) est utilisé dans le chemin du type mbeans, toutes les valeurs extraites sont agrégées.

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

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

Les mesures personnalisées peuvent être définies de deux manières à l'aide de l'attribut value_path ou operationName.
  • Attribut value_path : permet d'extraire la mesure à partir du MBean inscrit
  • Attribut operationName : permet à l'utilisateur d'inscrire n'importe quelle classe personnalisée auprès du serveur Mbean et d'appeler la méthode Mbean indiquée par operationName.

Exemple avec 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 sont collectées : jvm-heap-used et jvm-used-heap-after-old-gc.

Pour jvm-heap-used, il n'existe qu'une seule source, qui est mbean. Le nom d'objet mbean est java.lang:type=Memory. Cet objet mbean possède un attribut HeapMemoryUsage présentant le type de données CompositeDataSupport. Il n'est pas numérique et ne peut pas être utilisé en tant que mesure. Toutefois, il représente une carte des mesures à partir desquelles la portion de mémoire utilisée peut être extraite. Par conséquent, une analyse descendante vers l'objet avec la clé de carte utilisée est requise.

jvm-used-heap-after-old-gc dispose de 2 sources mbeans, toutes deux au pluriel avec un 's'. La mesure est collectée dans l'ordre selon la définition. La première source renvoyant une mesure valide est utilisée. Il existe deux sources car les diverses versions de Java ont des noms de processus Garbage Collector différents. La balise value_path effectue également une analyse descendante vers le caractère générique utilisé et l'ensemble de la mémoire utilisée après l'addition des valeurs Garbage Collector de tous les espaces de mémoire sous la forme d'une valeur de mesure unique. L'analyse descendante des données du chemin de valeur correspond à LastGcInfo/memoryUsageAfterGc/*/value/used, qui fait référence à LastGcInfo(CompositeData)/memoryUsageAfterGc(TabularData)/<index>(CompositeData)/value(MemoryUsage)/used(Long).

Exemple avec 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 indiqué, filtrées par son utilisateur spécifique. SessionCache et JohnDoe sont les valeurs de paramètre pour CacheName et UserName respectivement. L'utilisateur peut construire une correspondance d'attributs utiles tels que AssociatedCacheName, CacheHits, CacheMisses, InMemoryHits, OnDiskHits en tant que dimensions et la renvoyer 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 :
  • Map<Map<String, Objet>, Long>
  • Map<Map<String, Object>, Double>
  • Long
  • Double