Мониторинг JMX для набора состояний масштабирования Kubernetes

#java #kubernetes #jmx #azure-aks #amazon-eks

#Ява #кубернетес #jmx #лазурный-акс #amazon-eks

Вопрос:

Я пытаюсь получить мониторинг JMX от jconsole для приложения, которое работает внутри модуля Kubernetes.

В настоящее время я следую этому методу:

Я выставляю порт, скажем, 5000 в YAML

Я создаю службу NodePort, которая привязывает этот порт модуля к порту рабочих узлов

Я добавляю следующие 4 свойства java:

 JMX_REMOTE_AUTHENTICATE  JMX_REMOTE_PORT  JMX_REMOTE_RMI_PORT  JMX_REMOTE_SSL  

Затем я могу перейти к инструменту мониторинга, такому как jvisualvm, и создать соединение с общедоступным IP-адресом рабочего узла, на котором размещен этот модуль, на порту 5000, и я могу отслеживать этот модуль, что отлично работает.

Проблема: Теперь предположим, что мое приложение масштабируется, и на другом рабочем узле появляется новый модуль, я могу вручную добавить все описанные выше шаги еще раз, чтобы отслеживать этот модуль.

Но это не идеально. В идеале я бы хотел, чтобы каждый модуль автоматически отслеживался по мере его выхода в Сеть. Я могу добавить свойства для JMX в свой YAML набора состояний, но нужна ли мне служба NodePort для каждого подключенного модуля, который подключается к другому порту? Если да, то должен быть способ сделать это с помощью скрипта или встроенной функции?

У кого-нибудь есть какой-либо опыт в этом, какие-либо указания были бы очень полезны?

Комментарии:

1. Я бы подумал о добавлении prometheus или аналогичной системы в ваш стек. Prometheus может автоматически обнаруживать конечные точки метрик для сбора, включая JMX, путем включения аннотации в модуль. Он работает внутри вашего кластера, поэтому вам не нужно беспокоиться о таких вещах, как создание службы nodeport.

2. Какую версию Kubernetes вы использовали и как вы настроили кластер? Вы использовали установку с голым металлом или какой-то облачный провайдер? Важно воспроизвести вашу проблему.

3. Привет @pbay12345. Есть какие-нибудь новости?