我需要将计数器和仪表导出到 csv 以便以后处理它们。通过使用 gradle,我得到了 codahale 指标 3.1.2 的罐子:
compile('io.dropwizard.metrics:metrics-core:${metricsVersion}' )
compile('io.dropwizard.metrics:metrics-annotations:${metricsVersion}' )
对于 csv 导出,我使用以下代码行创建了一名记者:
@Configuration
public class MetricsConfiguration {
@Autowired
MetricRegistry metricRegistry;
@Bean
public CsvReporter configureReporters() {
CsvReporter reporter = CsvReporter.forRegistry(metricRegistry).build(new File("C:/temp/metrics"));
reporter.start(5, TimeUnit.SECONDS);
return reporter;
}
}
我可以看到文件已创建并且它们包含时间戳和值(在此示例中,值是为仪表设置的):
1444137261,42.0
1444137266,42.0
1444137271,42.0
1444137276,1.0
1444137281,1.0
1444137286,1.0
唯一的问题是该文件重复设置的最后一个值,直到它被我使用覆盖gaugeService.submit()
。在这种情况下,我将仪表值设置为42.0
一次,等待几分钟,然后设置一个新值1.0
.
这使得我很难解析 csv 并自己创建平均值或创建直方图,因为我不知道42.0
提交了一次还是三次。
我查看了这些 SO 帖子,但它们并没有帮助我解决我的问题: