2016-05-16 22 views
0

Ich verwende den Spring Actuator über seine JMX-Schnittstelle, um unserem Überwachungsteam Messwerte bereitzustellen.Zugriff auf interne MBean JMX-Attribute mit Federantrieb

Unser Überwachungsteam verwendet Tools, die bestimmte MBean-Attribute verfolgen können. Mit "Standard" JMX, wie der, der von Tomcat ausgesetzt wird, funktioniert das gut. Im Spring Actuator sind die freiliegenden MBeans jedoch einfach EMPFINDLICH, ENDPUNKT und DATEN. DATA enthält einen JSON mit ALLEN Attributen darin (ähnlich dem, was Sie in der http-Schnittstelle sehen werden).

Gibt es eine Möglichkeit, bestimmte Informationen (z. B. mem usage, threads.active usw.) als eigene MBean-Attribute verfügbar zu machen, anstatt alle Attribute als großen JSON anzuzeigen?

Die JMX-Lösung von Spring ist für viele Produktionsüberwachungstools nicht benutzerfreundlich.

Ich habe versucht, jolokia zu überprüfen, aber ich kann aus der Dokumentation nicht verstehen, ob dieses Framework das liefert, was ich brauche.

Danke!

Antwort

0

Verwenden Sie den folgenden Code, um den METRIX-Knoten in der MBEAN-Registerkarte auf jconsole anzuzeigen, der vollständige Details zum JVM-Speicher enthält, Thread & GC-Status.

import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 

import com.codahale.metrics.JmxReporter; 
import com.codahale.metrics.MetricRegistry; 
import com.codahale.metrics.jvm.GarbageCollectorMetricSet; 
import com.codahale.metrics.jvm.MemoryUsageGaugeSet; 
import com.codahale.metrics.jvm.ThreadStatesGaugeSet; 

@Configuration 
public class Metrix { 

    @Bean 
    public JmxReporter jmxReporter() { 
     JmxReporter reporter = JmxReporter.forRegistry(getMetricRegistry()).build(); 
     reporter.start(); 
     return reporter; 
    } 

    public MetricRegistry getMetricRegistry() { 
     MetricRegistry metricRegistry = new MetricRegistry(); 
     metricRegistry.register("jvm-thread-state", new ThreadStatesGaugeSet()); 
     metricRegistry.register("jvm-mem", new MemoryUsageGaugeSet()); 
     metricRegistry.register("jvm-gc", new GarbageCollectorMetricSet()); 
     return metricRegistry; 
    } 
} 

Use following libraries:- 
<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.3.5.RELEASE</version> 
</dependency> 
<dependency> 
    <groupId>io.dropwizard.metrics</groupId> 
    <artifactId>metrics-core</artifactId> 
    <version>3.1.2</version> 
</dependency> 
<dependency> 
    <groupId>io.dropwizard.metrics</groupId> 
    <artifactId>metrics-jvm</artifactId> 
    <version>3.1.2</version> 
</dependency> 
+0

Danke, ich werde es versuchen. Gibt es eine Dokumentation für alle verschiedenen Attributklassen, die ich veröffentlichen kann, außer diesen 3? – odedia

+0

Nicht viel Dokumentation kann gefunden werden, aber ich habe es einmal erforscht, während ich es implementiert habe. Sie sind BufferPoolMetricSet, CachedThreadStatesGaugeSet, ClassLoadingGaugeSet, GarbageCollectorMetricSet, MemoryUsageGaugeSet, ThreadStatesGaugeSet. – Avis

+0

Danke für die Hilfe, es ist ein guter Ausgangspunkt für mich. – odedia