or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

core-processors.mdframework-binders.mdindex.mdmp-metrics-compatibility.mdregistry-exports.md
tile.json

tessl/maven-io-quarkus--quarkus-micrometer-deployment

Quarkus Micrometer deployment module that provides build-time processing for metrics collection and monitoring capabilities in Quarkus applications

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/io.quarkus/quarkus-micrometer-deployment@3.26.x

To install, run

npx @tessl/cli install tessl/maven-io-quarkus--quarkus-micrometer-deployment@3.26.0

index.mddocs/

Quarkus Micrometer Deployment

Quarkus 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.

Package Information

  • Package Name: quarkus-micrometer-deployment
  • Package Type: maven
  • Language: Java
  • Group ID: io.quarkus
  • Artifact ID: quarkus-micrometer-deployment
  • Installation: Add to pom.xml as a build dependency (typically used by Quarkus extensions, not directly by applications)

Core Imports

import io.quarkus.micrometer.deployment.MicrometerRegistryProviderBuildItem;
import io.quarkus.micrometer.deployment.RootMeterRegistryBuildItem;
import io.quarkus.micrometer.deployment.MicrometerProcessor;

Basic Usage

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);
}

Architecture

The Quarkus Micrometer deployment module is organized into several key components:

  • Core Build Items: MicrometerRegistryProviderBuildItem and RootMeterRegistryBuildItem for registry management
  • Main Processors: Core deployment logic in MicrometerProcessor and MicrometerConfigAlwaysEnabledProcessor
  • Framework Binders: Automatic instrumentation for HTTP, gRPC, Kafka, Redis, and other technologies
  • Export Processors: Registry endpoint configuration for Prometheus and JSON formats
  • MicroProfile Metrics Compatibility: Bridge layer for MP Metrics API compatibility

Capabilities

Core Build Items

Essential 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

Framework Integration Binders

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();

Framework Integration Binders

Registry Export Processors

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();

Registry Export Processors

MicroProfile Metrics Compatibility

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

Types

Core Types

// 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  
}

Framework Integration Types

// 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;

MicroProfile Metrics Types

// 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
    );
}