跳到主要内容

传递到 Dropwizard 的控制台报告器

DeepSeek V3 中英对照 Passing through to Dropwizard’s console reporter Passing through to Dropwizard’s Console Reporter

本指南展示了如何接入较少使用的 Dropwizard Reporter 实现 —— 在本例中为 ConsoleReporter

@Bean
public MetricRegistry dropwizardRegistry() {
return new MetricRegistry();
}

@Bean
public ConsoleReporter consoleReporter(MetricRegistry dropwizardRegistry) {
ConsoleReporter reporter = ConsoleReporter.forRegistry(dropwizardRegistry)
.convertRatesTo(TimeUnit.SECONDS)
.convertDurationsTo(TimeUnit.MILLISECONDS)
.build();
reporter.start(1, TimeUnit.SECONDS);
return reporter;
}

@Bean
public MeterRegistry consoleLoggingRegistry(MetricRegistry dropwizardRegistry) {
DropwizardConfig consoleConfig = new DropwizardConfig() {

@Override
public String prefix() {
return "console";
}

@Override
public String get(String key) {
return null;
}

};

return new DropwizardMeterRegistry(consoleConfig, dropwizardRegistry, HierarchicalNameMapper.DEFAULT, Clock.SYSTEM) {
@Override
protected Double nullGaugeValue() {
return null;
}
};
}
java

请注意,在 Spring 环境中,此注册表会与其他实现一起添加到组合中,并用于所有指标,包括自定义和自动配置的指标。

class MyComponent {
private final MeterRegistry registry;

public MyComponent(MeterRegistry registry) {
this.registry = registry;
}

public void doSomeWork(String lowCardinalityInput) {
registry.timer("my.latency", "input", lowCardinalityInput).record(() -> {
// do work
});
}
}
java

下面的列表展示了这个自定义计时器的典型输出:

3/2/18 10:14:27 AM =============================================================

-- Timers ----------------------------------------------------------------------
myLatency.lowCardinalityInput.INPUT
count = 1
mean rate = 1.02 calls/second
1-minute rate = 0.00 calls/second
5-minute rate = 0.00 calls/second
15-minute rate = 0.00 calls/second
min = 100.00 milliseconds
max = 100.00 milliseconds
mean = 100.00 milliseconds
stddev = 0.00 milliseconds
median = 100.00 milliseconds
75% <= 100.00 milliseconds
95% <= 100.00 milliseconds
98% <= 100.00 milliseconds
99% <= 100.00 milliseconds
99.9% <= 100.00 milliseconds
txt