Какое условие влияет на порядок, в котором печатаются свойства MBean?

У меня есть куча java-приложений, которые нужно отслеживать через prometheus jmx-exporter. Проблема в том, что они имеют разный порядок свойств Бина, что приводит к различным именам метрики прометея, генерируемой jmx-экспортером. Например, application1 имеет компонент

java.lang<type=MemoryPool, name=JIT data cache><Usage>used

который превращается в метрический Прометей

java_lang_memorypool_usage_used{name="JIT data cache"}

application2 имеет компонент (примечание name а также type свойства поменялись)

java.lang<name=JIT data cache, type=MemoryPool><Usage>used

который превращается в метрический Прометей

java_lang_jit_data_cache_usage_used{type=MemoryPool}

Разница вызвана тем, что приложения версии JVM или java работают. Те, которые имеют type Первый запуск на openjdk версии 1.8.0_172. Те, которые имеют name Первый запуск на openj9 версии 11.0.2.

Я хотел бы настроить application2 так, чтобы он возвращал свойства в том же порядке, что и application1, независимо от того, на какой JVM они работают. Есть ли способ сделать это?

PS Мне удалось обойти проблему, поместив шаблоны в конфигурацию jmx-exporter, например:

    - pattern: "java.lang<name=(.*), type=MemoryPool><(\\w+)>(\\w+)"
      name: "java_lang_memorypool_$2_$3"
      labels:
        name: "$1"

Но это не похоже на правильное решение для меня, так как требует написания шаблона для каждой доступной метрики и обновления списка шаблонов, если список метрик изменяется.

0 ответов

Другие вопросы по тегам