Источник данных JMX
Ключ-АСТРОМ предоставляет фреймворк для создания метрик из JMX MBeans. Каждый процесс, отслеживаемый модулем кода Java ЕдиногоАгента, способен обрабатывать расширения JMX 2.0.
Вам необходимо включить функцию Java Metric Extensions 2.0 (JMX) ЕдиногоАгента
Принцип работы
JMX организует данные и функциональность объектно-ориентированным способом. Каждый процесс Java имеет сервер платформы MBean, который управляет набором объектов мониторинга, называемых MBeans.
Каждый MBean имеет уникальное имя объекта. Каждое имя объекта состоит из имени домена и списка ключевых свойств. Каждое ключевое свойство состоит из имени и (строкового) значения.
JMX определяет стандартизированный синтаксис для записи этих имен объектов, например, java.lang:type=GarbageCollector,name=YoungGen. Каждый MBean имеет 0 или более атрибутов (см. MBeanServer::getAttribute). Атрибуты могут быть любого типа Java (включая логические значения, числа и строки).
Числовые атрибуты могут быть напрямую использованы для создания метрик в Ключ-АСТРОМ. Также возможно извлекать числовые значения из сложных атрибутов.
Предустановка
Мы предполагаем следующее:
- У вас есть достаточные знания в области JMX для создания расширения.
- Вы знакомы с основными концепциями расширений 2.0 и общей структурой файла расширения YAML.
Поддерживаемые версии Ключ-АСТРОМ
- Клюя-АСТРОМ версии 1.265+
- ЕдиныйАгент версии 1.265+
Файл YAML с расширением JMX
Начнем с минимального расширения JMX:
| # required extension metadata
name: custom:com.example.jmx version: 1.0.0 minDynatraceVersion: 1.265.0 author: name: John Doe # optional metric metadata metrics: - key: com.example.jmx.thread_count metadata: displayName: Thread Count description: Number of active Java threads unit: Count # defines how to create metrics from JMX MBeans jmx: groups: - group: jvm subgroups: - subgroup: basic query: java.lang:type=Threading metrics: - key: com.example.jmx.thread_count type: gauge value: attribute:ThreadCount |
Первые две части вам уже должны быть знакомы, мы же сосредоточимся на разделе файла YAML jmx.
Группы и подгруппы могут использоваться для совместного использования конфигурации между несколькими метриками. В нашем конкретном примере у нас есть только одна группа и одна подгруппа.
Извлечение метрик из MBeans
Каждая подгруппа должна выбрать набор MBeans, которые должны вносить вклад в метрику. Это делается с помощью поля query и следует стандартному синтаксису имени объекта JMX
Здесь запрос java.lang:type=Threading. Он распадается на поиск компонента в домене java.lang, который имеет ровно одно свойство с именем type и значением Threading.
Каждая подгруппа также должна определить по крайней мере одну метрику, которая должна быть извлечена из выбранных MBean. В нашем примере мы создаем метрику датчика Ключ-АСТРОМ com.example.jmx.thread_count, вызываемую путем запроса числового атрибута JMX ThreadCount из MBean java.lang:type=Threading.
ЕдиныйАгент автоматически добавит в вашу метрику следующие измерения:
dt.entity.process_group_instancedt.entity.process_groupdt.entity.hostdt.entity.container_group_instancedt.metrics.sourcedt.extension.config.id
Более подробную информацию см. в справочнике по источникам данных JMX.