#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. Есть какие-нибудь новости?