2016-06-17 6 views
1

Ich verwende Spring Boot Metrics http://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-metrics.html#production-ready-metrics, um einige domänenspezifische Zähler zu verwalten.Wie können Spring Boot-Metrikwerte gelesen werden?

Ich habe @Autowired org.springframework.boot.actuate.metrics.CounterService in meinen Klassen und ich erhöhen Metriken auf Domain-spezifische Ereignisse (verschiedene Phasen der Analyse meiner Anfrage).

Ich möchte diese Metriken in meinem Test lesen (um zu überprüfen, ob meine Testanforderung alle erforderlichen Stufen durchlaufen hat), aber es gibt keine get-Methode für CounterService. Ich sehe, dass alle Implementierungen von CounterService einige private ConcurrentMap mit Metriken haben, aber es gibt keinen (sauberen) Weg, um zu dieser Datenstruktur zu gelangen.

Ich benutze Spring Boot 1.3.5.RELEASE.

bearbeiten: Ich interessiere mich für Integrationstest, und wenn möglich möchte ich keine Komponenten verspotten.

Derzeit verwende ich REST-Aufruf gegen/Metrik Endpunkt und ich parse zurückgegebene json, aber ich mag diesen Ansatz nicht.

Antwort

1

Ein Ansatz wäre, einen Schein CounterService zu verwenden und dann zu überprüfen, dass die erwarteten Methoden im Schein aufgerufen wurden.

Wenn Sie etwas bevorzugen, das eher ein Integrationstest ist, dann können Sie MetricReader verwenden, um die Metriken einzulesen, die CounterService geschrieben hat. Sie sollten @Autowire ein MetricReader oder MetricRepository (letzteres ist eine Kombination von MetricReader und MetricWriter) und findOne anrufen können.

+0

danke, MetricRepository sieht perfekt aus! Ich habe die Spring-Boot-Dokumentation gesehen, aber sie beschreibt eine andere Anwendungsfälle - Exportieren von Metriken in Redis und andere Datenbanken. Ich denke, dass MetricRepository ein anderes Problem löst, das ich habe- Ich möchte einen HTTP-Endpunkt haben (nur für interne oder Testzwecke), der Metriken zurücksetzen würde. Das wird das Testen erleichtern. Ich lese derzeit Metriken in Jmeter-Tests (vor und nach dem Erzeugen von Verkehr). –