2016-04-14 15 views
0

Guten Morgen an alle. Ich habe ein Problem bei der Konfiguration von Jboss Wildfly 8.2.0 auf Linux für JMX Remote Monitoring für Zabbix 3.0, in der Domänenkonfiguration. Ich benutze die Profile "full" und "full-ha". Dies sind die Zeichenfolge ich aktiviert haben:WildFly 8.2.0 und Zabbix 3.0 und Remote JMX Überwachung

(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"/> 

Im Inneren des host.xml, habe ich die Stimme für jeden virtuellen Server für die Fernüberwachung JMX die Konfiguration einzufügen, hier ein Beispiel:

<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> 

Für jeden Server habe ich einen anderen Port eingegeben.

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 

Also, ich habe versucht, diese Zeichenfolge in das domain.conf setzen:

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

Aber in diesem Fall habe ich die folgenden Fehler‘erhalten:

[Host Controller] 09:28:18,462 INFO [org.jboss.as.host.controller] (Controller Boot Thread) JBAS010922: Starting server server-one 
09:28:18,512 INFO [org.jboss.as.process.Server:server-one.status] (ProcessController-threads - 3) JBAS012017: Starting process 'Server:server-one' 
[Server:server-one] Could not load Logmanager "/application/jboss/modules/org/jboss/logmanager/main/jboss-logmanager-1.5.2.Final.jar" 
[Server:server-one] java.lang.ClassNotFoundException: /application/jboss/modules/org/jboss/logmanager/main/jboss-logmanager-1.5.2.Final.jar 
[Server:server-one]  at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
[Server:server-one]  at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
[Server:server-one]  at java.security.AccessController.doPrivileged(Native Method) 
[Server:server-one]  at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
[Server:server-one]  at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
[Server:server-one]  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
[Server:server-one]  at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
[Server:server-one]  at java.util.logging.LogManager$1.run(LogManager.java:191) 
[Server:server-one]  at java.security.AccessController.doPrivileged(Native Method) 
[Server:server-one]  at java.util.logging.LogManager.<clinit>(LogManager.java:181) 
[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) 
[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:28:19,384 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 

Also, was Kann ich tun? Warum bekomme ich diese Fehler und wie kann ich meinen virtuellen Server auflösen und starten?

Vielen Dank an alle für Ihre Hilfe

Grüße Red

+0

Nur ein generischer Kommentar. Darf nicht mit der spezifischen Frage verknüpft sein. Aus verschiedenen Gründen verwenden wir zabbix nicht, um die jmx-Parameter direkt von WildFly (oder einer anderen Java-basierten Anwendung) zu überwachen. Wir benutzen Jolokia dazwischen. Jolokia konvertiert JMX in http und zabbix liest die http-Daten. Es wirkt wie ein Zauber. –

Antwort

0

Genau dieses Problem gestern in Angriff genommen. Diese question fasst die Lösung, aber das zugrunde liegende Problem ist dies:

  • Die Befehlszeile außer Kraft setzen muss die java.util.logging.manager zu org.jboss.logmanager.LogManager mit der Richtlinie "java.util.logging.manager=org.jboss.logmanager.LogManager" (der Wert ist der Name der Klasse, nicht die jar)
  • Dies setzt voraus, dass sich das JBSS-Logging-JAR beim Booten im Klassenpfad befindet. Daher muss die Befehlszeile das JAR in den Boot-Klassenpfad mit dieser Direktive einfügen: "-Xbootclasspath/p:$JBOSS_HOME/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-1.5.2.Final-redhat-1.jar" (die tatsächliche Version kann je nach EAP-Version variieren Laufen).
  • Darüber hinaus müssen Sie das Jboss Logging-Paket zum Booten Modulliste hinzufügen. Das Launcher-Skript (conf-Modifikator) hat eine Zeile wie diese:

    if ["x $ JBOSS_MODULES_SYSTEM_PKGS" = "x"]; dann JBOSS_MODULES_SYSTEM_PKGS = "org.jboss.byteman" fi

und es muss erweitert werden, um die Jboss Logging-Paket enthalten:

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

An diesem letzten Teil, können Sie die env überspringen variabel, da das wird zu einer Befehlszeile Set Systemeigenschaft wie folgt umgerechnet:

-Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS 

das heißt, man muss nur dieses System propert einstellen könnte y direkt.

Die zugrunde liegende Ursache, die dieses Zwicken erfordert, ist die JMX-Befehlszeile Einstellungen, die die java.util aktiviert.sehr früh im Boot-Prozess der Anmeldung, wie in Ihrem Protokoll kann hier zu beachten:

[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) 

Als solches behebt die JMX-Befehlszeilenoptionen zu entfernen auch dieses Problem, die Sie durch die Aktivierung JMX Dienste später in dem kompensieren Boot-Prozess, damit Sie Optionen haben.

+0

Hallo, Ich habe versucht, Einstellungen die Optons, die Sie freigegeben haben, aber jetzt, auch mit dem -Xbootclasspath, das Logmanager-Modul zu laden, erhalte ich die folgenden Fehler: Fehler: Konnte nicht finden oder laden Hauptklasse org.jboss.logmanager Und dann verlassen Sie die Shell. Ich habe den Pfad jar von der Kommandozeile kopiert, also bin ich sicher, dass es korrekt ist. –

+0

Können Sie die Fehlerprotokollzeilen einfügen? Außerdem haben wir gefunden, und ich dachte, das wäre unser seltsames Setup, aber es könnte dich auch beeinflussen, die Datei configuration/logging.properties wird ** beim Start von jboss generiert, aber in diesem Fall wird util.logging sein initialisiert, bevor diese Datei erzeugt wird, so dass sie möglicherweise fehlt oder ungültige Einstellungen enthält (wir hatten ein nicht existierendes Verzeichnis für die Datei server.log). – Nicholas

+0

.... und der Fehler, der durch eine ungültige logging.properties-Datei verursacht wird, sprudelt tatsächlich zu einem ** ClassNotFound ** -Fehler, der sehr irreführend ist, aber der Fehler-Stack-Trace macht deutlich, was vor sich geht. – Nicholas