Настройка расширений JMX

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

Расширения JMX определяются с помощью JSON-файлов.

Определение расширения состоит из трех основных элементов: metadata, metrics, и UI.

The basic format is as follows:

  {

    "version": "1.0",

    "name": "custom.jmx.hornetq",

    "type": "JMX",

    "entity": "PROCESS_GROUP_INSTANCE",

    "metricGroup": "tech.HornetQ",

    "configUI" : {

      "displayName": "HornetQ JMX"

    },

    "metrics": [ ],

    "ui": {

      "keycharts" : [ ],

      "charts": [ ]

    }

  }

Метаданные

Каждое расширение JMX имеет следующие обязательные свойства:

Поле Тип Описание
version String Версия расширения в формате d.dd должна обновляться при каждом обновлении определения расширения.
name String Уникальное имя расширения в формате пакета Java. Пользовательские имена расширений JMX должны соответствовать правилу custom.jmx.name. Можно использовать только буквы, цифры и символы "-", "_". Например, custom.jmx.newPlugin-Ver2
type String Всегда используйте JMX
entity String Всегда используйте PROCESS_GROUP_INSTANCE
metricGroup String Группа метрик используется для группировки пользовательских метрик в иерархическое пространство имен, куда могут поступать данные из различных источников, например, из нескольких расширений. Более того, группа метрик становится основной частью ключа метрики. Следовательно, после определения ее нельзя изменить. Допустимые символы: буквы, цифры, а также символы «-» и «_».
configUI.displayName String Удобочитаемое название расширения. Это название отображается на странице расширений Ключ-АСТРОМ Monitoring после загрузки расширения.

Метрики

Эта часть JSON определяет, какие метрики будут собираться расширением. Каждая метрика определяется в формате JSON, аналогичном следующему:

{

    "timeseries": {

      "key": "Queue.ConsumerCount",

      "unit": "Count",

      "displayname": "Queue Consumer Count",

      "dimensions": [

        "rx_pid"

      ]

    },

    "alert_settings": [

      {

        "alert_id": "too_many_consumers",

        "event_type": "PERFORMANCE_EVENT",

        "event_name": "Too many consumers",

        "description": "The {metricname} of {severity} is {alert_condition} the threshold of {threshold}",

        "threshold": 35.0,

        "alert_condition": "ABOVE",

        "samples":5,

        "violating_samples":3,

        "dealerting_samples":5,

        "value_extractor": "MAX"

      }

    ],

    "source": {

      "domain": "org.hornetq",

      "keyProperties": {

        "type": "Queue"

      },

      "attribute": "ConsumerCount"

    }

  }

Временные ряды

В этом разделе указываются метаданные метрики.

Поле Тип Описание
key String Название метрики. Должно быть уникальным в пределах данного расширения. Допускаются только буквы, цифры и символы "-", "_".
unit String Метрическая единица. Должна быть одна из доступных единиц, описанных ниже.
dimensions String array Необходимо указать в rx_pid индекс 0. Это гарантирует, что атрибуты JMX получат идентификатор системного процесса (PID) в качестве измерения. Дополнительные измерения могут использоваться, например, для предоставления одной метрики для каждого ObjectName значения свойства ключа JMX (например, QueueName, ThreadPoolName, или ConnectionPoolName). Допускаются только буквы, цифры и символы «-», «_».
displayname String Отображаемое имя метрики в Ключ-АСТРОМ. Это поле обязательно для заполнения. Оно должно отличаться от ключа метрики.

Доступные единицы: NanoSecond, MicroSecond, MilliSecond, Second, Byte, KiloByte, MegaByte, BytePerSecond, BytePerMinute, KiloBytePerSecond, KiloBytePerMinute, MegaBytePerSecond, MegaBytePerMinute, Count, PerSecond, PerMinute

Настройки оповещений

В этом разделе задаются параметры конфигурации одного или нескольких оповещений для заданного временного ряда.

Поле Тип Описание
alert_id String Уникальный идентификатор оповещения. Допускаются только буквы, цифры, а также символы "-" и "_".
event_type String Допустимые типы: PERFORMANCE_EVENT, ERROR_EVENT, AVAILABILITY_EVENT.
description String В описании определяется сообщение об ошибке; можно использовать следующие фрагменты кода: {threshold} значение пользовательского порогового значения, которое было нарушено, {severity} значение, вызвавшее нарушение, {entityname} отображаемое имя сущности, в которой произошло нарушение метрики, {violating_samples} количество выборок, вызвавших нарушение, {dimensions} строка, содержащая параметры метрики, вызвавшие нарушение, {alert_condition} строка, указывающая, происходит ли оповещение о превышении или невыполнении порогового значения.
event_name String Название события отображается на страницах пользовательского интерфейса.
threshold Float Значение порогового значения.
alert_condition String UP или DOWN.
samples Integer Размер «окна», в котором подсчитываются образцы, нарушающие правила.
violating_samples Integer Количество образцов, нарушающих правила и вызывающих тревогу.
dealerting_samples Integer Количество образцов, не нарушающих правила, при которых срабатывает оповещение.
value_extractor String Ключ-АСТРОМ фиксирует значение каждые 10 секунд, но отправляет только одно агрегированное значение в минуту. Это определяет способ агрегирования этих 10-секундных значений. Возможные значения: MIN, MAX, SUM, COUNT, AVG, MEDIAN, P90. Значение по умолчанию:AVG

Источник

В этом разделе описывается, как собирается метрика с использованием JMX. Для всех метрик требуются следующие атрибуты:

Поле Тип Описание
domain String Доменное имя MBean
keyProperties Key, Value pairs Основные свойства MBean. Значения могут содержать подстановочные знаки (*).
attribute String Название атрибута, содержащего значение метрики.

К необязательным атрибутам относятся:

Поле Тип Описание
attributePath String См. CompositeData
allowAdditionalKeys Boolean Если значение равно false, свойства ключа должны точно совпадать. Наличие дополнительных ключей в имени приведет к несоответствию. Если значение равно true, то допускаются и игнорируются дополнительные свойства ключа, помимо указанных в "keyProperties".
calculateDelta bool Если верно, вычислите изменение значений заданного атрибута. Значение = атрибут(t) - атрибут(t-1). Это полезно для монотонно возрастающих значений.
calculateRate bool Если значение истинно, вычислите скорость изменений в секунду. Это используется в сочетании с функцией calculateDelta для преобразования абсолютного значения атрибута (например, количества запросов) в значение скорости (например, запросов в секунду). Значение = атрибут / интервал запросов
aggregation String Используется для агрегирования нескольких значений, если более одного MBean соответствует фильтру по домену и ключевому свойству. Возможные значения: SUM, AVG, MIN, MAX.
splitting Object Разделение наборов

Разделение

Разделение данных можно использовать для определения дополнительного измерения для метрики. Это измерение должно быть определено в свойствах dimension временного ряда и в splitting свойствах источника.

"splitting": {

    "name": "name",

    "type": "keyProperty",

    "keyProperty": "name"

  }

Для определения нескольких вариантов разделения используйте следующий формат:

"splittings":[

   {

      "name":"name",

      "type":"keyProperty",

      "keyProperty":"name"

   },

   {

      "name":"context",

      "type":"keyProperty",

      "keyProperty":"context"

   }

]


Для каждого разделения должны присутствовать следующие атрибуты:

Поле Тип Описание
name String Должно совпадать с именем измерения, определенным для временного ряда.
type String Всегда должно быть keyProperty
keyProperty String Определяет, какое ключевое свойство MBean используется для ObjectName

Пример метрики с дополнительным разделением

В следующем примере показано, как определить метрику, которая предоставляет несколько временных рядов в рамках одной метрики:

{

    "timeseries": {

      "key": "XY.Size",

      "unit": "Count",

      "displayname": "Queue Consumer Count",

      "dimensions": [

        "rx_pid",

        "name"

      ]

    }

    "source": {

      "domain": "com.sample",

      "keyProperties": {

        "type": "XY",

        "name": "*"

      },

      "attribute": "Size",

      "splitting": {

        "name": "name",

        "type": "keyProperty",

        "keyProperty": "name"

      }

    }

  }

Например, MBeans com.sample:type=XY,name=A and com.sample:type=XY,name=B в результате будут получены два временных ряда: первый для "А", а второй для "В".

CompositeData

Для извлечения значений отдельных ключей, возвращаемых атрибутом CompositeData в качестве типа, необходимо использовать соответствующий механизм attributePath и указать на интересующий вас ключ.

Например, предположим, вы хотите извлечь значение used из атрибута HeapMemoryUsage. HeapMemoryUsage— это тип CompositeData, который возвращает следующий список пар «значение-ключ»:

{

    committed: integer,

    init: integer,

    max: integer,

    used: integer

}

Определите метрику, указывающую на MBean с атрибутом HeapMemoryUsage, и в разделе source укажите attributePath ключ used. Например:

"source": {

      "domain": "java.lang",

      "keyProperties": {

        "type": "Memory",

      },

      "attribute": "HeapMemoryUsage",

      "attributePath": "get(\"used\")"

    }

Конфигурация пользовательского интерфейса

Эта часть JSON-файла определяет, как метрики отображаются на странице процесса. Она содержит обязательный раздел «График» и необязательный раздел «Ключевые диаграммы». Каждый раздел имеет одинаковый формат и выглядит следующим образом:

{

        "ui": {

            "keymetrics" : [

             {

                    "key" : "requestCount",

                    "aggregation" : "avg",

                    "mergeaggregation" : "sum",

                    "displayname" : "Requests"

             }

            ],

            "keycharts" : [ ],

            "charts": [ ]

        }

    }

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

Поле Тип Описание
key String Условные обозначения для временного ряда, которые необходимо отобразить на графике. Допускаются только буквы, цифры, а также символы "-" и "_".
aggregation String Агрегация определяет метод агрегирования минутных значений при работе с более длительными временными интервалами. Ключ-АСТРОМ фиксирует значение каждые 10 секунд, но отправляет только одно агрегированное значение в минуту. Это определяет, как агрегировать эти 10-секундные значения.
mergeaggregation String Если метрика содержит несколько измерений, это определяет, как объединять значения измерений в одно измерение.
displayname String Название, которое будет отображаться в инфографике.

Каждый раздел диаграммы имеет одинаковый формат и выглядит следующим образом:

{

                "group": "Section Name",

                "title": "Chart Name",

                "series": [

                 {

                        "key": "MetricName",

                        "aggregation": "avg",

                        "displayname": "Display name for metric",

                        "seriestype": "area"

                 },

                 {

                        "key": "Other Metric Name",

                        "aggregation": "avg",

                        "displayname": "Display name for metric",

                        "color": "rgba(42, 182, 244, 0.6)",

                        "seriestype": "area"

                 }

                ]

         }

В разделе «Диаграммы» описано, как построить график для каждого показателя в разделе «Подробности» на странице процесса (доступен при выборе пункта «Дополнительные сведения»).

В обоих разделах можно определить массив диаграмм. Диаграмма должна обладать следующими обязательными атрибутами:

Поле Тип Описание
group String Название раздела, в который следует поместить диаграмму.
title String Название диаграммы
series Array Набор определений временных рядов и графиков. Один график может содержать несколько показателей.

Серия обладает следующими характеристиками:

Поле Тип Описание
key String Ключ к построению графика временного ряда
displayname String Отображаемое имя для метрики. Переопределяет отображаемое имя метрики. По умолчанию: отображаемое имя метрики.
aggregation String Как следует агрегировать значения за несколько минут на графиках при просмотре более длительного временного интервала. Возможные значения: SUM, AVG, MIN,MAX
mergeaggregation String Ключевые диаграммы не отображают несколько измерений. Если метрика содержит несколько измерений, это определяет, как агрегировать значения измерений в одно измерение.
color String HTML-обозначение цвета (RGB или RGBA).
seriestype String Тип диаграммы. Возможные значения: line, area, иbar
rightaxis Boolean Если это так, то показатель будет размещен на правой оси вместо левой. Обратите внимание, что Ключ-АСТРОМ поддерживает двухосевые диаграммы.
stacked Boolean В истинном случае несколько показателей накладываются друг на друга. Это работает только для площадных и столбчатых диаграмм.