Справка о источнике данных JMX

Материал из Документация Ключ-АСТРОМ
Версия от 18:34, 23 июня 2025; IKuznetsov (обсуждение | вклад) (Новая страница: «Это общее описание расширения файла '''YAML''' на основе источника данных '''JMX''' и способов об...»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)

Это общее описание расширения файла YAML на основе источника данных JMX и способов объявления показателей и измерений, которые вы хотели бы собирать с помощью вашего расширения.

Метрические значения

Значение метрики может поступать из разных источников.

Наиболее распространенным источником является числовой атрибут JMX MBean:

metrics:

  - key: com.example.somekey

    value: attribute:ThreadCount

Это будет искать атрибут с именем ThreadCount. Возвращаемое значение должно быть либо числовым (любой подкласс java.lang.Number, например Integer, Long, Double), либо boolean (преобразованным в 0 for false и 1 for true).

JMX позволяет определять атрибуты с комплексными нечисловыми типами. Из такого нечислового значения атрибута можно извлечь числовое значение. Для этого требуется указать, к каким методам или полям следует получить доступ.

Например:

metrics:

  - key: com.example.somekey

    value:

      attribute: SomeNonNumericAttribute

      accessor: getSomeNumericValue()

Подробное описание синтаксиса см . в разделе Синтаксис доступа ниже.

Особым случаем является использование всегда одного и того же постоянного значения вместо запроса атрибута:

metrics:

  - key: com.example.somekey

    value: const:1

Если query соответствует одному MBean, эта метрика всегда будет выдавать значение 1. Это можно использовать для сообщения только о наличии определенного MBean. Если запрос соответствует нескольким MBean, эта метрика будет выдавать значение, соответствующее количеству совпадений MBean.

Индивидуальные размеры

Каждое пользовательское измерение состоит из константы key и value. Значение может поступать из разных источников.

Самый простой случай — задать значение измерения как постоянную строку:

dimensions:

  - key: k1

    value: const:constant_value

Это создаст метрику, в которой измерение k1 всегда имеет значение constant_value.

Значение свойства ключа имени объекта MBean можно использовать в качестве значения измерения:

query: java.lang:type=GarbageCollector,name=*

dimensions:

  - key: k1

    value: property:name

Это создаст метрику, где измерение k1 соответствует значению ключевого свойства name. Например, MBean java.lang:type=GarbageCollector,name=YoungGen создаст метрику, где измерение k1 имеет значение YoungGen.

Если в процессе задействовано 3 разных сборщика мусора, создаются метрики с 3 разными значениями измерений, которые можно построить на независимой диаграмме.

Атрибут MBean также может использоваться в качестве значения измерения.

query: java.lang:type=Compilation

dimensions:

  - key: k1

    value: attribute:Name

Это создаст метрику, где измерение k1 соответствует значению атрибута Name. В настоящее время поддерживаются только неизменяемые атрибуты. Атрибут для определенного MBean запрашивается только один раз, когда MBean впервые обнаруживается ЕдинымАгентом.

Подобно значениям метрик, можно извлечь значение измерения из сложного атрибута, используя выражение доступа:

query: java.lang:type=Compilation

dimensions:

  - key: k1

    value:

      attribute: SomeAttribute

      accessor: getName()

Этот метод будет искать атрибут с именем SomeAttribute, вызывать его getName и использовать возвращаемое значение в качестве значения для измерения k1.

Синтаксис

Описание
getSomeNumericValue() Вызов метода getSomeNumericValue без параметров.
getSomeNumericValue Скобки — необязательные методы без параметров.
getA().getB() Вызов метода с именем getA, затем для возвращаемого им значения вызов метод с именем getB.
getA(1) Вызов метода getA с целочисленным аргументом 1.
getA("x") Вызов метода getA со строковым аргументом x.
getA(1, "x") Вызов метода getA с двумя аргументами.
getA()[1] Вызов метода с именем getA, затем из возвращаемого значения извлечение значения с индексом 1.

Переменные расширения

Переменные расширения можно использовать, чтобы разрешить пользователям расширения отслеживать только определенные MBean-компоненты:

vars:

  - id: gc_name_filter

    displayName: Garbage Collector Name

    type: text

jmx:

  groups:

    - group: jvm

      subgroups:

        - subgroup: basic

          query: java.lang:type=GarbageCollector

          queryFilters:

            - field: name

              filter: var:gc_name_filter

          dimensions:

            - key: k1

              value: property:name

          metrics:

            - key: com.example.jmx.var

              type: count

              value: attribute:CollectionTime

Это создает переменную, которая называется gc_name_filter и Garbage Collector Name в пользовательском интерфейсе. Значение переменной будет использоваться для выбора определенного MBean. Например, если значение переменной равно YoungGen, то полный запрос имени объекта будет java.lang:type=GarbageCollector,name=YoungGen

Каждая конфигурация мониторинга может выбрать определенное значение для этой переменной. Чтобы гарантировать, что несколько конфигураций мониторинга с разными значениями переменных не будут перепутаны в пользовательском интерфейсе, рекомендуется также добавить измерение для свойства name, как показано выше.