2017-05-30 1 views
0

J'essaie d'enregistrer le nombre d'applications de démarrage de printemps que j'ai dans mon environnement de cloud pvt. La logique doit utiliser Counter métrique à increment pendant le démarrage et decrement pendant l'arrêt. Tous les différents déploiements publieront au même metricPreFix (--assumption).
Après le graphe je reçois en graphite: Counter vs TimeCompteur Dropwizard ne conservant pas la valeur dans Spring App App

#application.properties 
spring.metrics.export.delay-millis=100 

Pourquoi je vois la valeur de descendre à 0 même lorsque l'application est en cours d'exécution? J'ai essayé avec 2 implémentations différentes avec le même résultat. Quelqu'un peut-il s'il vous plaît souligner l'écart dans ma compréhension? PFB le code

@Component 
public class AppStartupBean implements CommandLineRunner { 

private static final String appMetricName = "MyApp.currentCount.GraphOne"; 
private static final String metricName = "MyApp.currentCount.GraphTwo"; 

@Autowired 
DropwizardMetricServices dwMetricService; 

@Autowired 
private MetricRegistry registry; 

@Override 
public void run(String... arg0) throws Exception { 
    dwMetricService.increment(appMetricName); 

    Counter counter = registry.counter(metricName); 
    counter.inc(); 
} 
} 

Répondre

1

La configuration pour DropwizardMetricServices était incorrecte. J'utilisais

@Bean 
public DropwizardMetricServices dwMetricService(MetricRegistry registry) { 
    return new DropwizardMetricServices(registry); 
} 

Au lieu de cela nous devrions juste @Autowire DropwizardMetricServices comme nécessaire. PFB

Lorsque les mesures Dropwizard sont en cours d'utilisation, le CounterService par défaut et GaugeService sont remplacés par un DropwizardMetricServices, ce qui est une enveloppe autour du MetricRegistry (vous pouvez @Autowired un de ces services et de l'utiliser comme d'habitude).