Просмотр MBeans через jstatd - PullRequest
3 голосов
/ 17 февраля 2012

Я пытаюсь отслеживать все процессы Java, запущенные на сервере, через jstatd.У меня достаточно настроено, чтобы я мог подключиться к VisualVM и увидеть все запущенные процессы.Большинство дисплеев работают нормально, однако некоторые вещи (особенно загрузка ЦП и MBeans) не отображаются.Вместо этого он говорит:

Браузер MBeans

Данные недоступны, поскольку не удалось установить соединение JMX с агентом JMX.

Я предположил, чтопроблема заключалась в том, что приложение должно «объявлять» через реестр jstatd RMI, а не локально, поэтому я опробовал следующее (для этих предложений ), но оно все равно не будет отображаться.Код, который я пробовал, выглядит следующим образом:

public class JmxRmiConnectorTest {
    public static void main(String[] args) throws Exception {
        Registry rmiRegistry = LocateRegistry.createRegistry(9994);
        String svc =
            "service:jmx:rmi://localhost:9994/jndi/rmi://localhost:1099/connector";

        MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();

        JMXServiceURL url = new JMXServiceURL(svc);
        RMIConnectorServer rmiServer = new RMIConnectorServer(url, null, mbeanServer);
        rmiServer.start();

        Thread.sleep(100000);

        rmiServer.stop();
    }
}

Как я могу заставить мои MBeans и использование ЦП отображаться в VisualVM при просмотре через jstatd?

Ответы [ 2 ]

9 голосов
/ 20 февраля 2012

jstatd не имеет ничего общего с JMX.Jstatd является прокси для Jvmstat .Чтобы получить MBeans и использование процессора, вам также необходимо включить JMX.См. JMX Remote Monitoring and Management для получения более подробной информации.Как только вы включите JMX, VisualVM автоматически обнаружит (через jvmstat), что он также может использовать JMX и будет отображать данные из jvmstat и JMX в одном месте.

0 голосов
/ 03 августа 2014

В удаленном режиме запустите java следующим образом, чтобы enabl jmxremote.

java -Dcom.sun.management.jmxremote \
     -Dcom.sun.management.jmxremote.port=9191 \
     -Dcom.sun.management.jmxremote.authenticate=false \
     -Dcom.sun.management.jmxremote.ssl=false \
     -Djava.rmi.server.hostname=`hostname` \
     -jar app.jar

В локали используйте jps как этот jps YOUHOSTNAME:9191.

...