Quarkus Micrometer deployment module that provides build-time processing for metrics collection and monitoring capabilities in Quarkus applications
npx @tessl/cli install tessl/maven-io-quarkus--quarkus-micrometer-deployment@3.26.0Quarkus Micrometer deployment module provides build-time processing for integrating Micrometer metrics library into Quarkus applications. It handles automatic configuration, metric annotation processing, framework integrations, and registry setup during the build phase for comprehensive observability in cloud-native Java applications.
import io.quarkus.micrometer.deployment.MicrometerRegistryProviderBuildItem;
import io.quarkus.micrometer.deployment.RootMeterRegistryBuildItem;
import io.quarkus.micrometer.deployment.MicrometerProcessor;This module is primarily used by Quarkus extension developers to integrate metrics into their extensions. Application developers typically don't interact with this module directly.
// Example: Registering a custom meter registry in an extension
@BuildStep
MicrometerRegistryProviderBuildItem createCustomRegistry() {
return new MicrometerRegistryProviderBuildItem(CustomMeterRegistry.class);
}
// Example: Adding custom metric binder
@BuildStep(onlyIf = CustomBinderEnabled.class)
AdditionalBeanBuildItem addCustomBinder() {
return AdditionalBeanBuildItem.unremovableOf(CustomMeterBinder.class);
}The Quarkus Micrometer deployment module is organized into several key components:
MicrometerRegistryProviderBuildItem and RootMeterRegistryBuildItem for registry managementMicrometerProcessor and MicrometerConfigAlwaysEnabledProcessorEssential build items for registry management and configuration during Quarkus build time.
public final class MicrometerRegistryProviderBuildItem extends MultiBuildItem {
public MicrometerRegistryProviderBuildItem(Class<?> providedRegistryClass);
public MicrometerRegistryProviderBuildItem(String registryClassName);
public Class<? extends MeterRegistry> getRegistryClass();
}
public final class RootMeterRegistryBuildItem extends SimpleBuildItem {
public RootMeterRegistryBuildItem(RuntimeValue<MeterRegistry> value);
public RuntimeValue<MeterRegistry> getValue();
}Core Build Items and Processors
Automatic instrumentation processors for various Quarkus frameworks and technologies.
// HTTP metrics enablement
@BuildStep(onlyIf = HttpServerBinderEnabled.class)
AdditionalBeanBuildItem enableHttpServerSupport();
// Vert.x metrics configuration
@BuildStep(onlyIf = VertxBinderEnabled.class)
RuntimeConfigSetterBuildItem setVertxConfig();
// gRPC interceptors
@BuildStep(onlyIf = GrpcClientSupportEnabled.class)
UnremovableBeanBuildItem addGrpcClientMetricInterceptor();Configuration processors for exposing metrics through various registry endpoints.
public final class RegistryBuildItem extends MultiBuildItem {
public RegistryBuildItem(String name, String path);
public String name();
public String path();
}
@BuildStep(onlyIf = PrometheusEnabled.class)
MicrometerRegistryProviderBuildItem createPrometheusRegistry();Compatibility layer providing seamless migration from MicroProfile Metrics to Micrometer.
@BuildStep(onlyIf = MicroprofileMetricsEnabled.class)
void processAnnotatedMetrics(
CombinedIndexBuildItem indexBuildItem,
BuildProducer<GeneratedClassBuildItem> generatedClasses
);
// Annotation transformation utilities
public static AnnotationTransformerBuildItem transformAnnotations(
IndexView index,
DotName sourceAnnotation
);MicroProfile Metrics Compatibility
// Build-time enablement conditions
public static class MicrometerEnabled implements BooleanSupplier {
public boolean getAsBoolean();
}
// Registry provider configuration
public final class MicrometerRegistryProviderBuildItem extends MultiBuildItem {
// See Core Build Items section above
}
// Root registry access
public final class RootMeterRegistryBuildItem extends SimpleBuildItem {
// See Core Build Items section above
}// HTTP binder conditions
public static class HttpServerBinderEnabled implements BooleanSupplier;
public static class HttpClientBinderEnabled implements BooleanSupplier;
// Vert.x integration types
public static class VertxBinderEnabled implements BooleanSupplier;
// gRPC integration conditions
public static class GrpcClientSupportEnabled implements BooleanSupplier;
public static class GrpcServerSupportEnabled implements BooleanSupplier;// Annotation processing utilities
public final class MetricAnnotationInfo {
public final String name;
public final String description;
public final String unit;
public final String[] tags;
public MetricAnnotationInfo(AnnotationInstance annotation, ClassInfo classInfo);
}
// Annotation transformation support
public final class AnnotationHandler {
public static AnnotationTransformerBuildItem transformAnnotations(
IndexView index,
DotName sourceAnnotation
);
}