WildFly 8.2.0和Zabbix 3.0以及远程JMX监控

时间:2016-04-14 07:38:57

标签: jboss wildfly jmx zabbix

大家早上好。 我在Linux上配置Jboss wildfly 8.2.0以便在域配置中为Zabbix 3.0进行jmx远程监控时遇到问题。 我正在使用个人资料" full"和"全ha"。 这些是我已启用的字符串:

[[1],
[1 2],
[1 2 3]]

在host.xml中,我为每个虚拟服务器插入了远程jmx监控配置的语音,例如:

(profile=full-ha)
<subsystem xmlns="urn:jboss:domain:jmx:1.3">
<expose-resolved-model/>
<expose-expression-model/>
<remoting-connector use-management-endpoint="false"/>

(Profile=full)
<subsystem xmlns="urn:jboss:domain:jdr:1.0"/>
<subsystem xmlns="urn:jboss:domain:jmx:1.3">
<expose-resolved-model/>
<expose-expression-model/>
<remoting-connector use-management-endpoint="false"/>

对于每台服务器,我都进入了不同的端口。

<servers>
        <server name="server-one" group="main-server-group">
            <!-- Remote JPDA debugging for a specific server-->
            <jvm name="default">
              <jvm-options>
                <!--<option value="-agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n"/>-->
<option value="-Dcom.sun.management.jmxremote"/>
<option value="-Dcom.sun.management.jmxremote.port=10150"/>
<option value="-Dcom.sun.management.jmxremote.authenticate=false"/>
<option value="-Dcom.sun.management.jmxremote.ssl=false"/>
<!--<option value="-Dcom.sun.logmanager.Logmanager"/>-->
<!--org.jboss.logmanager.LogManager-->
              </jvm-options>
           </jvm>
           <!--      -->
        </server>

所以,我已经尝试将这个字符串放入domain.conf:

But when I try to start the domain, I receive the following error:
09:26:50,762 INFO  [org.jboss.as.process.Server:server-one.status] (ProcessController-threads - 3) JBAS012017: Starting process 'Server:server-one'
[Server:server-one] WARNING: Failed to load the specified log manager class org.jboss.logmanager.LogManager
[Server:server-one] Exception in thread "main" java.lang.IllegalStateException: The LogManager was not properly installed (you must set the "java.util.logging.manager" system property to "org.jboss.logmanager.LogManager")
[Server:server-one]     at org.jboss.logmanager.Logger.getLogger(Logger.java:61)
[Server:server-one]     at org.jboss.as.server.DomainServerMain.main(DomainServerMain.java:86)
[Server:server-one]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[Server:server-one]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[Server:server-one]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[Server:server-one]     at java.lang.reflect.Method.invoke(Method.java:606)
[Server:server-one]     at org.jboss.modules.Module.run(Module.java:312)
[Server:server-one]     at org.jboss.modules.Main.main(Main.java:460)
09:26:51,682 INFO  [org.jboss.as.process.Server:server-one.status] (reaper for Server:server-one) JBAS012010: Process 'Server:server-one' finished with an exit status of 1
[Host Controller] 09:26:51,684 INFO  [org.jboss.as.host.controller] (ProcessControllerConnection-thread - 2) JBAS010926: Unregistering server server-one

但在这种情况下,我&#39;收到以下错误:

JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=$JBOSS_HOME/modules/org/jboss/logmanager/main/jboss-logmanager-1.5.2.Final.jar"

那么,我该怎么办?为什么我收到这些错误,如何解决并最终启动我的虚拟服务器?

感谢大家的帮助

问候 红色

1 个答案:

答案 0 :(得分:0)

昨天刚刚解决了这个问题。这个question总结了解决方案,但潜在的问题是:

  • 命令行必须使用指令java.util.logging.manager覆盖"java.util.logging.manager=org.jboss.logmanager.LogManager" org.jboss.logmanager.LogManager (值是类名,而不是jar)< / LI>
  • 这要求jbss日志记录jar在引导时位于类路径中,因此命令行必须使用此指令将jar插入引导类路径:"-Xbootclasspath/p:$JBOSS_HOME/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-1.5.2.Final-redhat-1.jar"(实际版本可能因EAP版本而异你正在跑步。)
  • 此外,您必须将jboss日志记录包添加到引导时模块列表中。启动器脚本(conf修饰符)有一行如下:

    if [“x $ JBOSS_MODULES_SYSTEM_PKGS”=“x”];然后    JBOSS_MODULES_SYSTEM_PKGS = “org.jboss.byteman” 网络

需要扩展以包含jboss日志包:

if [ "x$JBOSS_MODULES_SYSTEM_PKGS" = "x" ]; then
   JBOSS_MODULES_SYSTEM_PKGS="org.jboss.byteman, org.jboss.logmanager"
fi

在最后一部分,您可以跳过env变量,因为它会转换为命令行集系统属性,如下所示:

-Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS

也就是说,您可以直接设置该系统属性。

需要进行此调整的根本原因是JMX命令行设置,它在启动过程的早期就会激活java.util.logging,这可以在您的日志中看到:

[Server:server-one]     at java.util.logging.Logger.demandLogger(Logger.java:339)
[Server:server-one]     at java.util.logging.Logger.getLogger(Logger.java:393)
[Server:server-one]     at com.sun.jmx.remote.util.ClassLogger.<init>(ClassLogger.java:55)
[Server:server-one]     at sun.management.jmxremote.ConnectorBootstrap.<clinit>(ConnectorBootstrap.java:823)
[Server:server-one]     at sun.management.Agent.startAgent(Agent.java:260)
[Server:server-one]     at sun.management.Agent.startAgent(Agent.java:456)

因此,删除JMX命令行选项也可以解决此问题,您可以通过稍后在启动过程中激活JMX服务来弥补这一问题,因此您可以选择。