Какое условие влияет на порядок, в котором печатаются свойства 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"
Но это не похоже на правильное решение для меня, так как требует написания шаблона для каждой доступной метрики и обновления списка шаблонов, если список метрик изменяется.