Ad Widget

Collapse

помогите в настройке: zabbix 2 + jmx

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • ramasik
    Junior Member
    • Feb 2012
    • 19

    #1

    помогите в настройке: zabbix 2 + jmx

    подскажите, кто сталкивался с мониторингом через jmx
    раньше в 1.8. версии все мониторилось через zapcat, а теперь хотят 2.0 с jmx

    собрал заббикс 2.0.1 на CentOS 6.2
    ./configure --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --enable-java

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

    в zabbix_server.conf
    Code:
    SourceIP=ip_zabbix_server
    ListenIP=ip_zabbix_server
    .....
    JavaGateway=ip_zabbix_server
    JavaGatewayPort=10052
    StartJavaPollers=5
    в джава_гейтвее:
    cat /usr/local/sbin/zabbix_java/settings.sh
    Code:
    LISTEN_IP=ip_zabbix_server
    LISTEN_PORT=10052
    PID_FILE="/tmp/zabbix_java.pid"
    START_POLLERS=5

    в процессах висит джава
    Code:
    ps aux|grep java
    root     26440  0.0  1.3 3842240 104040 pts/2  Sl   11:50   0:02 java -server -classpath lib:lib/logback-classic-0.9.27.jar:lib/logback-core-0.9.27.jar:lib/org-json-2010-12-28.jar:lib/slf4j-api-1.6.1.jar:bin/zabbix-java-gateway-2.0.1.jar -Dzabbix.pidFile=/tmp/zabbix_java.pid -Dzabbix.listenIP=ip_zabbix_server -Dzabbix.listenPort=10052 -Dzabbix.startPollers=5 com.zabbix.gateway.JavaGateway
    порт слушается и телнет на него проходит

    в логах zabbix_java.log:
    Code:
    2012-07-11 12:38:09.171 [main] INFO  com.zabbix.gateway.JavaGateway - Zabbix Java Gateway 2.0.1 (revision 28455) has started
    2012-07-11 12:38:09.177 [main] INFO  com.zabbix.gateway.JavaGateway - listening on /91.204.130.201:10052
    2012-07-11 12:38:11.889 [pool-1-thread-1] WARN  com.zabbix.gateway.SocketProcessor - error processing request
    com.zabbix.gateway.ZabbixException: java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.CommunicationException [Root exception is java.rmi.ConnectIOException: Exception creating connection to: IP_ZABBBIX_AGENT; nested exception is:
            java.net.NoRouteToHostException: No route to host]
            at com.zabbix.gateway.JMXItemChecker.getValues(JMXItemChecker.java:100) ~[zabbix-java-gateway-2.0.1.jar:na]
            at com.zabbix.gateway.SocketProcessor.run(SocketProcessor.java:63) ~[zabbix-java-gateway-2.0.1.jar:na]
            at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.7.0_04]
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.7.0_04]
            at java.lang.Thread.run(Unknown Source) [na:1.7.0_04]
    Caused by: java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.CommunicationException [Root exception is java.rmi.ConnectIOException: Exception creating connection to: IP_ZABBBIX_AGENT; nested exception is:
            java.net.NoRouteToHostException: No route to host]
            at javax.management.remote.rmi.RMIConnector.connect(Unknown Source) ~[na:1.7.0_04]
            at javax.management.remote.JMXConnectorFactory.connect(Unknown Source) ~[na:1.7.0_04]
            at com.zabbix.gateway.JMXItemChecker.getValues(JMXItemChecker.java:92) ~[zabbix-java-gateway-2.0.1.jar:na]
            ... 4 common frames omitted
    Caused by: javax.naming.CommunicationException: null
            at com.sun.jndi.rmi.registry.RegistryContext.lookup(Unknown Source) ~[na:1.7.0_04]
            at com.sun.jndi.toolkit.url.GenericURLContext.lookup(Unknown Source) ~[na:1.7.0_04]
            at javax.naming.InitialContext.lookup(Unknown Source) ~[na:1.7.0_04]
            at javax.management.remote.rmi.RMIConnector.findRMIServerJNDI(Unknown Source) ~[na:1.7.0_04]
            at javax.management.remote.rmi.RMIConnector.findRMIServer(Unknown Source) ~[na:1.7.0_04]
            ... 7 common frames omitted
    Caused by: java.rmi.ConnectIOException: Exception creating connection to: IP_ZABBBIX_AGENT; nested exception is:
            java.net.NoRouteToHostException: No route to host
            at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source) ~[na:1.7.0_04]
            at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source) ~[na:1.7.0_04]
            at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source) ~[na:1.7.0_04]
            at sun.rmi.server.UnicastRef.newCall(Unknown Source) ~[na:1.7.0_04]
            at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source) ~[na:1.7.0_04]
            ... 12 common frames omitted
    Caused by: java.net.NoRouteToHostException: No route to host
            at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.7.0_04]
            at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) ~[na:1.7.0_04]
            at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) ~[na:1.7.0_04]
            at java.net.AbstractPlainSocketImpl.connect(Unknown Source) ~[na:1.7.0_04]
            at java.net.SocksSocketImpl.connect(Unknown Source) ~[na:1.7.0_04]
            at java.net.Socket.connect(Unknown Source) ~[na:1.7.0_04]
            at java.net.Socket.connect(Unknown Source) ~[na:1.7.0_04]
            at java.net.Socket.<init>(Unknown Source) ~[na:1.7.0_04]
            at java.net.Socket.<init>(Unknown Source) ~[na:1.7.0_04]
            at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(Unknown Source) ~[na:1.7.0_04]
            at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(Unknown Source) ~[na:1.7.0_04]
            ... 17 common frames omitted
    2012-07-11 12:38:11.928 [pool-1-thread-2] WARN  com.zabbix.gateway.SocketProcessor - error processing request
    com.zabbix.gateway.ZabbixException: java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.CommunicationException [Root exception is java.rmi.ConnectIOException: Exception creating connection to: IP_ZABBBIX_AGENT_2; nested exception is:
            java.net.NoRouteToHostException: No route to host]
            at com.zabbix.gateway.JMXItemChecker.getValues(JMXItemChecker.java:100) ~[zabbix-java-gateway-2.0.1.jar:na]
            at com.zabbix.gateway.SocketProcessor.run(SocketProcessor.java:63) ~[zabbix-java-gateway-2.0.1.jar:na]

    подскажите что и как дальше сделать? что нужно на клиенте? по доке:
    Приложению не требуется никаких дополнительных программ, оно просто должно быть запущено с опцией командной строки -Dcom.sun.management.jmxremote.
    приложение так и запущено. но в вебке заббикса - упорно никаких данных
    при наведении на красный значок JMX выдает
    java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.CommunicationException [Root exception is java.rmi.ConnectI

    а как проверить вручную ответ ? дла заббикс_агента есть zabbix_get, а для джавы?
    Last edited by ramasik; 11-07-2012, 11:07.
  • neiromc
    Member
    • Sep 2010
    • 58

    #2
    а вы в настройках хоста прописали IP адрес и порт JMX interfaces-а?

    Comment

    • ramasik
      Junior Member
      • Feb 2012
      • 19

      #3
      Originally posted by neiromc
      а вы в настройках хоста прописали ip адрес и порт jmx interfaces-а?
      обязательно!
      айпи - тот же что и для агента, т.е. айпи хоста который будем мониторить
      порт 10052 (как раньше для запката)

      Comment

      • neiromc
        Member
        • Sep 2010
        • 58

        #4
        Originally posted by ramasik
        обязательно!
        айпи - тот же что и для агента, т.е. айпи хоста который будем мониторить
        порт 10052 (как раньше для запката)
        у вас на хосте мониторинга на :10052 слушает кто?
        и поле key в Item-ах хоста правильно указано?

        Comment

        • ramasik
          Junior Member
          • Feb 2012
          • 19

          #5
          Originally posted by neiromc
          у вас на хосте мониторинга на :10052 слушает кто?
          сама апликуха запускается вот с такими дополнительными ключами:

          -Dcom.sun.management.jmxremote
          -Dcom.sun.management.jmxremote.port=10052
          -Dcom.sun.management.jmxremote.authenticate=false
          -Dcom.sun.management.jmxremote.ssl=false

          но в нетстате я не вижу открытого порта 10052... и не знаю должен ли он быть именно от апликухи

          Comment

          • neiromc
            Member
            • Sep 2010
            • 58

            #6
            ОБЯЗАТЕЛЬНО должен быть поднят в LISTEN
            процесс java

            например у меня так:
            Code:
            netstat -antpu|grep :7009
            tcp        0      0 :::7009                 :::*                    LISTEN      25563/java
            посмотрите, висит ли в процессах это на аппликэйшн сервере, именно листнер. может он не может подняться из-за конфликта портов?

            Comment

            • ramasik
              Junior Member
              • Feb 2012
              • 19

              #7
              Originally posted by neiromc
              ОБЯЗАТЕЛЬНО должен быть поднят в LISTEN
              процесс java

              например у меня так:
              Code:
              netstat -antpu|grep :7009
              tcp        0      0 :::7009                 :::*                    LISTEN      25563/java
              это у вас через jmx мониторится? с какими вы ключами запускаете апликуху?
              ЗЫ
              итемы у меня все взяты из дефолтного шаблона jmx generic

              Comment

              • neiromc
                Member
                • Sep 2010
                • 58

                #8
                Originally posted by ramasik
                это у вас через jmx мониторится? с какими вы ключами запускаете апликуху?
                ЗЫ
                итемы у меня все взяты из дефолтного шаблона jmx generic
                Процесс на тестовом сервере поднят в таком виде:
                Code:
                ps ax|grep -i java | grep "port=7009"
                
                25563 pts/6    Sl     5:01  /usr/local/jdk1.7.0_03/jre/bin/java -Djava.util.logging.config.file=/home/username/apache-tomcat-5.5.28/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dcom.sun.management.jmxremote.port=7009 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false: -Duser.language=en -Duser.region=US -Djava.endorsed.dirs=/home/username/apache-tomcat-5.5.28/common/endorsed -classpath /home/username/apache-tomcat-5.5.28/bin/bootstrap.jar -Dcatalina.base=/home/username/apache-tomcat-5.5.28 -Dcatalina.home=/home/username/apache-tomcat-5.5.28 -Djava.io.tmpdir=/home/username/apache-tomcat-5.5.28/temp org.apache.catalina.startup.Bootstrap start

                item name: MaxSendDuration
                type: JMX agent
                key: jmx["{$CHANNEL_OBJECT}",MaxSendDuration]
                macros (прописан на вкладке Macros в настройках хоста): {$CHANNEL_OBJECT} = ru.myorg.app:type=MessageChannel,name=errorChannel
                Last edited by neiromc; 11-07-2012, 15:04.

                Comment

                • ramasik
                  Junior Member
                  • Feb 2012
                  • 19

                  #9
                  Originally posted by neiromc
                  Процесс на тестовом сервере поднят в таком виде:
                  Code:
                  ps ax|grep -i java | grep "port=7009"
                  
                  25563 pts/6    Sl     5:01  /usr/local/jdk1.7.0_03/jre/bin/java -Djava.util.logging.config.file=/home/username/apache-tomcat-5.5.28/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dcom.sun.management.jmxremote.port=7009 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false: -Duser.language=en -Duser.region=US -Djava.endorsed.dirs=/home/username/apache-tomcat-5.5.28/common/endorsed -classpath /home/username/apache-tomcat-5.5.28/bin/bootstrap.jar -Dcatalina.base=/home/username/apache-tomcat-5.5.28 -Dcatalina.home=/home/username/apache-tomcat-5.5.28 -Djava.io.tmpdir=/home/username/apache-tomcat-5.5.28/temp org.apache.catalina.startup.Bootstrap start

                  item name: MaxSendDuration
                  type: JMX agent
                  key: jmx["{$CHANNEL_OBJECT}",MaxSendDuration]
                  macros (прописан на вкладке Macros в настройках хоста): {$CHANNEL_OBJECT} = ru.myorg.app:type=MessageChannel,name=errorChannel
                  а веб-интерфейсе вы указываете JMX interface АйПи такой-то и порт 7009 - правильно?

                  Comment

                  • neiromc
                    Member
                    • Sep 2010
                    • 58

                    #10
                    Originally posted by ramasik
                    а веб-интерфейсе вы указываете JMX interface АйПи такой-то и порт 7009 - правильно?
                    да, в веб-интерфейсе, в настройках хоста указан именно IP хоста (который отвечает на jmx запросы) и порт 7009

                    Comment

                    • ramasik
                      Junior Member
                      • Feb 2012
                      • 19

                      #11
                      Originally posted by neiromc
                      да, в веб-интерфейсе, в настройках хоста указан именно IP хоста (который отвечает на jmx запросы) и порт 7009
                      порт поборол открылся ждем - что покажет через несколько минут

                      было 2 проблемы:
                      1. порядок указания ключей с остальными ключами
                      -Dcom.sun.management.jmxremote
                      -Dcom.sun.management.jmxremote.port=10052
                      -Dcom.sun.management.jmxremote.authenticate=false
                      -Dcom.sun.management.jmxremote.ssl=false

                      2. эта апликуха немогла отрезолвить локальное имя... и не хотела открывать порт.... ну блин кодеры....

                      Comment

                      • ramasik
                        Junior Member
                        • Feb 2012
                        • 19

                        #12
                        вообщем все работает все супер
                        спасибо за помощь.

                        теперь другая проблема появилась
                        сам ДжаваГейтвей - ни с того, ни с сего падает

                        Code:
                        ]# tail -f /tmp/zabbix_java.log
                        2012-07-11 17:58:07.297 [pool-1-thread-4] WARN  com.zabbix.gateway.SocketProcessor - error processing request
                        java.io.EOFException: null
                                at java.io.DataInputStream.readFully(DataInputStream.java:197) ~[na:1.7.0_05]
                                at java.io.DataInputStream.readFully(DataInputStream.java:169) ~[na:1.7.0_05]
                                at com.zabbix.gateway.BinaryProtocolSpeaker.getRequest(BinaryProtocolSpeaker.java:56) ~[zabbix-java-gateway-2.0.1.jar:na]
                                at com.zabbix.gateway.SocketProcessor.run(SocketProcessor.java:51) ~[zabbix-java-gateway-2.0.1.jar:na]
                                at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [na:1.7.0_05]
                                at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [na:1.7.0_05]
                                at java.lang.Thread.run(Thread.java:722) [na:1.7.0_05]
                        2012-07-11 17:58:34.683 [Thread-0] INFO  com.zabbix.gateway.JavaGateway - Zabbix Java Gateway 2.0.1 (revision 28455) has stopped
                        и что с ним делать? кроном все время запускать? тоже не выход......

                        Comment

                        • neiromc
                          Member
                          • Sep 2010
                          • 58

                          #13
                          java -version
                          ??

                          Comment

                          • ramasik
                            Junior Member
                            • Feb 2012
                            • 19

                            #14
                            Originally posted by neiromc
                            java -version
                            ??
                            $ java -version
                            java version "1.7.0_05"
                            Java(TM) SE Runtime Environment (build 1.7.0_05-b05)
                            Java HotSpot(TM) 64-Bit Server VM (build 23.1-b03, mixed mode)


                            $ rpm -qa|grep jre
                            jre-1.7.0_05-fcs.x86_64


                            $ rpm -qa|grep jdk
                            jdk-1.7.0_05-fcs.x86_64


                            РПМки скачаны с оракла

                            до этого из репозитариев стоял openjdk -- были те же проблемы с постоянным падением zabbix_java_gateway
                            не могу проследить зависимость почему и с каким интервалом падает
                            самим же заббиксом настроил мониторить
                            иногда отработает 19часов и потом упадет, а иногда и буквально через несколько минут падает

                            Comment

                            • neiromc
                              Member
                              • Sep 2010
                              • 58

                              #15
                              Сорри, но я не понимаю логов джавы))))) И рад бы помочь, но даже версия джавы у вас такая же как и у меня. У меня она не стартовала из-за кривой версии.

                              jre - не ставил, стоит только jdk, но этот факт никак не влияет на падение gateway. Похоже на баг

                              Comment

                              Working...