как настроить мониторинг Java приложения в Zabbix?

136
13 января 2021, 18:40

Есть примитивное приложение Java:

public class SimpleAgent
{
    private MBeanServer mbs = null;
    public SimpleAgent()
    {
        // Получить экземпляр MBeanServer
        mbs = ManagementFactory.getPlatformMBeanServer();
        // Создаем наш MBean
        Hello helloBean = new Hello();
        ObjectName helloName = null;
        try {
            // И регистрируем его на платформе MBeanServer
            helloName = new ObjectName("SimpleAgent:name=hellothere");
            mbs.registerMBean(helloBean, helloName);
            // Теперь мы регистрируем коннектор, который
            // будет доступен по HTTP-протоколу

        } catch(Exception e) {
            e.printStackTrace();
        }
    }
    // Это вспомогательный метод - он позволяет нашей программе остановиться и ждать
    private static void waitForEnterPressed()
    {
        try {
            System.out.println("Press  to continue...");
            System.in.read();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void main(String argv[])
    {
        SimpleAgent agent = new SimpleAgent();
        System.out.println("SimpleAgent is running...");
        SimpleAgent.waitForEnterPressed();
    }
}
public interface HelloMBean {
    public void setMessage(String message);
    public String getMessage();
    public void sayHello();
}
public class Hello implements HelloMBean{
    private String message = null;
    public Hello() {
        message = "Hello there";
    }
    public Hello(String message) {
        this.message = message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
    public String getMessage() {
        return message;
    }
    public void sayHello() {
        System.out.println(message);
    }
}

запускаю со следующими параметрами:

java -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -cp . SimpleAgent

запустил в Docker Zabbix сервер и Zabbix Java Gateway(Gateway на порту 10052)

На сервере настраиваю Items

Но как видно на скриншотах, JMX светится красным и пишет

Connection refused (Connection refused): service:jmx:rmi:///jndi/rmi://127.0.0.1:12345/jmxrmi

Подскажите пожалуйста, где искать ошибку? Может какие настройки пропустил?

READ ALSO
Как передать List из Java в JNI (C++) по сслыке?

Как передать List из Java в JNI (C++) по сслыке?

у меня есть функция написаная на C++(JNI) которая получает как параметр jobject (это по сути мой List) и заполняет его данными

117
Помогите с побитовыми операциями

Помогите с побитовыми операциями

Вот пример из книги которую читаю и совершенно не понимаю вот этого (fs&1 > 0) и аналогичных далее выражений

140
Android не показывается DatePickerDialog в DialogFragment

Android не показывается DatePickerDialog в DialogFragment

Задача: реализовать фрагмент, который позволяет вернуть в место (во фрагмент), откуда этот фрагмент вызван, выбранную пользователем дату

123