自定义 Meter 注册表
Micrometer 支持流行的计量器注册表(meter registries),因此您应该首先检查这些注册表。对于现有的计量器注册表,如果您认为您的需求具有普遍实用性,请考虑在 Micrometer 的 issue tracker 上创建一个 issue 或 PR。对于不存在的计量器注册表,如果它被广泛使用,请考虑为其创建一个 issue 或 PR。
如果你需要创建自己的自定义计量器注册表,可以通过扩展计量器注册表的基类之一来创建:MeterRegistry、PushMeterRegistry 或 StepMeterRegistry。
最常见的方式是扩展 StepMeterRegistry。你可以创建自己的自定义 StepMeterRegistry。
首先,通过扩展 StepRegistryConfig 来定义你自己的计量器注册表配置,如下所示:
public interface CustomRegistryConfig extends StepRegistryConfig {
CustomRegistryConfig DEFAULT = k -> null;
@Override
default String prefix() {
return "custom";
}
}
其次,通过扩展 StepMeterRegistry 来定义你自己的计量器注册表,如下所示:
public class CustomMeterRegistry extends StepMeterRegistry {
public CustomMeterRegistry(CustomRegistryConfig config, Clock clock) {
super(config, clock);
start(new NamedThreadFactory("custom-metrics-publisher"));
}
@Override
protected void publish() {
getMeters().stream().forEach(meter -> System.out.println("Publishing " + meter.getId()));
}
@Override
protected TimeUnit getBaseTimeUnit() {
return TimeUnit.MILLISECONDS;
}
}
最后,创建仪表注册表配置和仪表注册表。如果使用 Spring Boot,可以按照以下方式进行操作:
@Configuration
public class MetricsConfig {
@Bean
public CustomRegistryConfig customRegistryConfig() {
return CustomRegistryConfig.DEFAULT;
}
@Bean
public CustomMeterRegistry customMeterRegistry(CustomRegistryConfig customRegistryConfig, Clock clock) {
return new CustomMeterRegistry(customRegistryConfig, clock);
}
}