Export Spring-Boot-Antrieb Metriken (& Dropwizard Metriken) zu Statsd
Ich versuche exportieren Sie alle Metriken, die sichtbar sind auf dem Endpunkt /metrics
zu einem StatsdMetricWriter
.
Ich habe folgende Konfiguration-Klasse so weit:
package com.tonyghita.metricsdriven.service.config;
import com.codahale.metrics.MetricRegistry;
import com.ryantenney.metrics.spring.config.annotation.EnableMetrics;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.actuate.autoconfigure.ExportMetricReader;
import org.springframework.boot.actuate.autoconfigure.ExportMetricWriter;
import org.springframework.boot.actuate.metrics.reader.MetricReader;
import org.springframework.boot.actuate.metrics.reader.MetricRegistryMetricReader;
import org.springframework.boot.actuate.metrics.statsd.StatsdMetricWriter;
import org.springframework.boot.actuate.metrics.writer.MetricWriter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableMetrics(proxyTargetClass = true)
public class MetricsConfig {
private static final Logger LOGGER = LoggerFactory.getLogger(MetricsConfig.class);
@Value("${statsd.host:localhost}")
private String host = "localhost";
@Value("${statsd.port:8125}")
private int port;
@Autowired
private MetricRegistry metricRegistry;
@Bean
@ExportMetricReader
public MetricReader metricReader() {
return new MetricRegistryMetricReader(metricRegistry);
}
@Bean
@ExportMetricWriter
public MetricWriter metricWriter() {
LOGGER.info("Configuring StatsdMetricWriter to export to {}:{}", host, port);
return new StatsdMetricWriter(host, port);
}
}
Schreibt alle Metriken, die ich Hinzugefügt habe, Statsd, aber ich möchte auch gerne das system/JVM-Metriken angezeigt, die auf die /metrics
Endpunkt.
Was bin ich?
- Vielleicht das PR (pending merge) helfen würde
- Hoffe, dass bekommt zusammengeführt @StéphaneNicoll! Das ändern, fügt Bequemlichkeit rund um die Einrichtung der Statsd Schriftsteller, aber meine Frage ist mehr entlang den Linien von, wie man ein
@ExportMetricReader
Bohnen für den Export der Metriken verfügbar in den/metrics
Endpunkt. - FTR, es ist zusammengeführt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche problem und fand eine Lösung hier: https://github.com/tzolov/export-metrics-example
Fügen Sie einfach ein
MetricsEndpointMetricReader
in deine config und alles auf th e/Metriken-Endpunkt veröffentlicht werden, um dieStatsdMetricWriter
.Hier ist ein vollständiges Beispiel-config für spring-boot-1.3.x und dropwizard-Metriken-jvm 3.1.x:
Was ich gesehen habe, in spring-boot-code, nur Anrufe
CounterService
undGaugeService
- Implementierungen weitergeleitet dropwizard istMetricRegistry
.Daher ist, wie Sie bereits beobachtet, nur
counter.*
undgauge.*
Metriken aus der/metrics
Endpunkt wird am Ende inStatsd
.System und JVM-Metriken ausgesetzt sind, durch benutzerdefinierte
SystemPublicMetrics
Klasse, die nicht mit counter oder gauge-service.Ich bin mir nicht sicher, ob es eine einfachere Lösung (vielleicht hat jemand von Frühling-team kommentiert wird), aber ein Weg, es zu tun (nicht spring-boot-spezifisch), würde ein geplanter task, der regelmäßig schreibt-system-stats auf das
MetricRegistry
.SystemPublicMetrics
, aber wie gesagt, es ist nicht so einfach. Glücklicherweise gibt es eine'io.dropwizard.metrics:metrics-jvm'
Bibliothek, mit der ausführenden jvm-Metriken schön. Ich würde noch gerne zu exportieren schöne tomcat-Metriken, obwohl, so kann es wertvoll sein zu entdecken, dass die Lösung, die Sie vorgeschlagen.Registrieren JVM-Metriken können Sie die JVM im Zusammenhang MetricSets geliefert codehale.Metriken.jvm library. Sie können fügen Sie einfach den ganzen Satz ohne Angabe, ob Sie lehren oder die Zähler.
Hier ist mein Beispiel code wo ich mich registrieren jvm verwandten Metriken:
}
Hinweis: ich bin mit spring boot-version 1.3.0.M4
'io.dropwizard.metrics:metrics-jvm:3.1.2'
um meine Abhängigkeiten, und registrierenGarbageCollectorMetricSet
,MemoryUsageGaugeSet
, undThreadStatesGaugeSet
zu denmetricRegistry
. Ich hatte gehofft, in der Lage sein, die Nutzung der bestehendenSystemPublicMetrics
Mechanismus, aber auch die bekommt den job getan. Sieht aus wie es ist auch einemetrics-jdbi
Bibliothek! Zeit zu Graben, in das 🙂Genießen! (siehe die öffentlichen Metriken angemeldet Konsole als dropwizard Metriken)