Recopilación de métricas

El agente Java de APM soporta la recopilación periódica de métricas del servidor de aplicaciones.

Después de desplegar el agente Java de APM, puede recopilar los siguientes tipos de métricas:

Métricas por defecto

Las métricas por defecto son métricas definidas por el sistema que están disponibles por defecto.

Para obtener un juego completo de métricas por defecto, consulte Métricas disponibles: oracle_apm_monitoring para el agente Java de APM.

Métricas personalizadas

Las métricas personalizadas son métricas definidas por el usuario que se pueden crear además de las métricas por defecto existentes para cumplir requisitos específicos.

Para definir una métrica personalizada, cree un nuevo archivo de configuración denominado MetricCollection.acml en el directorio oracle-apm-agent/config/<version>.

El archivo MetricCollection.acml es un archivo personalizado en formato ACML (subjuego de YAML) para la configuración de la recopilación de métricas personalizadas.

Etiqueta ACML Tipo de datos Descripción
<group name>: string Grupo para separar métricas con diferente hora de inicio e intervalo de recopilación.
<metric name>: string Nombre de la métrica que se va a recopilar. Un nombre de métrica corresponde a un solo valor. La convención de nomenclatura es una cadena en minúsculas separada por un guion.
type: string Tipo de métrica. Puede ser measurement o delta.

- measurement: valor de tiempo de ejecución actual.

- delta: valor diferente entre el intervalo de recopilación.

scalar: string Tipo de valor numérico: puede ser largo o doble.
source:   Etiqueta que representa la matriz de entradas de origen de la métrica. Cada métrica puede contener una o más entradas de origen. Incluso si hay más de una entrada de origen, cada entrada se comprueba en la recopilación en orden. Siempre que la entrada puede devolver un valor válido, se utiliza para la entrada de métrica y se ignora el resto de entradas de origen.
-   Elemento de matriz de entrada de origen de métrica.
type: string Tipo de origen de métrica. Puede ser mbean o mbeans.

Para la configuración valuePath, puede mbean o mbeans.

Para la configuración operationName, solo puede ser mbean.

mbean_name: string Nombre de objeto del bean gestionado para el tipo mbean o mbeans. Para el tipo mbeans, el nombre de objeto puede tener un carácter comodín ( * ), pero el comodín no está soportado para mbean.
value_path: string La ruta está separada por una barra diagonal ( / ) para obtener el valor de mbean. La ruta al valor debe conducir a un valor numérico. Aparte de la ruta raíz, que debe ser el nombre de atributo del objeto mbean, la ruta dividida puede ser uno de los siguientes valores de ruta anteriores:
  • Nombre de campo de objeto.
  • Nombre de método del objeto que no toma ningún parámetro.
  • Clave de CompositeData.
  • Clave de TubularData.
  • Índice de matriz.
  • Clave de mapa.
  • Índice de recopilación.

Para el tipo mbeans, se agrega el valor de cada objeto mbean. Del mismo modo, si se utiliza el carácter comodín ( * ) en la ruta para el tipo mbeans, se agregan todos los valores recuperados.

operation_name string Nombre del método de mbean que se va a llamar. Tenga en cuenta que MBean debe ser registererd con el servidor de plataforma MBean.
parámetros (opcional) string Valores de parámetros de método separados por comas.

Los parámetros de método transferidos y sus valores correspondientes se capturarán como dimensiones de métrica. Actualmente, solo se soporta el tipo de dato String para parámetros de método.

Las métricas personalizadas se pueden definir de dos formas mediante el atributo value_path o operationName.
  • Atributo value_path: permite extraer la métrica del mbean registrado
  • Atributo operationName: permite al usuario registrar cualquier clase personalizada con el servidor mbean y llamar al método mbean especificado por operationName.

Ejemplo con el atributo 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

En el ejemplo anterior, las métricas se recopilan en la parte superior de cada minuto. Hay dos métricas que se deben recopilar: jvm-heap-used y jvm-used-heap-after-old-gc.

Para jvm-heap-used, solo hay 1 origen, que es mbean. El nombre de objeto mbean es java.lang:type=Memory. Este objeto mbean tiene un atributo HeapMemoryUsage que tiene el tipo de dato CompositeDataSupport. No es numérico y no se puede utilizar como métrica. Sin embargo, representa una asignación de métricas de la que se puede recuperar el montón utilizado, por lo que es necesario aumentar el detalle del objeto con la clave de asignación utilizada.

Para jvm-used-heap-after-old-gc, tiene 2 orígenes: mbeans, ambos están en plural con una 's'. La métrica se recopila en orden de acuerdo con la definición y se utiliza el primer origen que devuelve una métrica válida. El motivo de tener 2 orígenes es que diferentes versiones de java tienen diferentes nombres de recopilador de elementos no utilizados. El aumento de detalle de value_path también ha utilizado el comodín y toda la memoria utilizada después de los valores de gc de todos los espacios de memoria se suman como un único valor de métrica. El aumento de detalle de los datos de la ruta al valor es LastGcInfo/memoryUsageAfterGc/*/value/used, que hace referencia a: LastGcInfo(CompositeData)/memoryUsageAfterGc(TabularData)/<index>(CompositeData)/value(MemoryUsage)/used(Long).

Ejemplo con el atributo 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

En el ejemplo anterior, las métricas se recopilan en la parte superior de cada minuto. Hay dos métricas que se deben recopilar: CacheStatistics y DatabaseQueryTime. El origen de esta configuración de mbean solo puede ser mbean.

Para CacheStatistics, el nombre del objeto mbean es com.cache:type=CacheServiceMXBean. El método que se va a llamar es cacheStatistics. La operación recupera estadísticas de caché para el nombre de caché especificado, filtradas por su usuario específico. SessionCache y JohnDoe son los valores de parámetro para CacheName y UserName respectivamente. El usuario puede construir una asignación de atributos útiles como AssociatedCacheName, CacheHits, CacheMisses, InMemoryHits, OnDiskHits como dimensiones y devolverla como parte de los tipos de retorno soportados, como se describe a continuación, junto con sus valores correspondientes.

Para DatabaseQueryTime, el nombre del objeto mbean es com.db:type=DbManagerMXBean. El método que se va a llamar es dbQueryTime. No se han configurado parámetros para este mbean.

Los tipos de retorno de método admitidos son:
  • Map<Map<String, Object>, Long>
  • Map<Map<String, Object>, Double>
  • Long
  • Doble