Quarkus extension that integrates SmallRye Metrics with MicroProfile Metrics for application monitoring and observability
—
Configuration properties and build-time setup for customizing SmallRye Metrics behavior in Quarkus applications.
Configuration interface defining all available properties for SmallRye Metrics extension.
/**
* Configuration mapping for SmallRye Metrics extension properties
* All properties use the quarkus.smallrye-metrics prefix
*/
@ConfigMapping(prefix = "quarkus.smallrye-metrics")
public interface SmallRyeMetricsConfig {
// Configuration properties are accessed via application.properties
// or environment variables with corresponding names
}// Property: quarkus.smallrye-metrics.path
// Default: "metrics"
// Type: String
// Description: The path for the metrics endpointUsage Example:
# Default metrics endpoint: /q/metrics
quarkus.smallrye-metrics.path=metrics
# Custom metrics endpoint: /q/custom-metrics
quarkus.smallrye-metrics.path=custom-metrics
# Root level metrics: /metrics
quarkus.smallrye-metrics.path=/metrics// Property: quarkus.smallrye-metrics.extensions.enabled
// Default: true
// Type: Boolean
// Description: Enable or disable extension-provided metricsUsage Example:
# Enable extension metrics (default)
quarkus.smallrye-metrics.extensions.enabled=true
# Disable extension metrics
quarkus.smallrye-metrics.extensions.enabled=false// Property: quarkus.smallrye-metrics.micrometer.compatibility
// Default: false
// Type: Boolean
// Description: Enable Micrometer compatibility mode for migrationUsage Example:
# Enable Micrometer compatibility (for migration)
quarkus.smallrye-metrics.micrometer.compatibility=true
# Standard SmallRye Metrics mode (default)
quarkus.smallrye-metrics.micrometer.compatibility=false// Property: quarkus.smallrye-metrics.jaxrs.enabled
// Default: false
// Type: Boolean
// Description: Enable automatic JAX-RS endpoint metrics collectionUsage Example:
# Enable JAX-RS metrics collection
quarkus.smallrye-metrics.jaxrs.enabled=true
# Disable JAX-RS metrics (default)
quarkus.smallrye-metrics.jaxrs.enabled=falseStandard MicroProfile Metrics properties are also supported:
// Property prefix: mp.metrics
// These are standard MicroProfile Metrics configuration optionsCommon MP Metrics Properties:
# Disable specific metric types
mp.metrics.tags=app=myapp,version=1.0
# Configure metric export format
mp.metrics.defaulted=trueThe extension provides the following capabilities and metadata:
/**
* Extension metadata from quarkus-extension.yaml
*/
public class ExtensionMetadata {
// Name: SmallRye Metrics
// Short Name: metrics
// Status: deprecated
// Categories: observability
// Configuration Prefixes: quarkus.smallrye-metrics., mp.metrics.
// Capabilities: io.quarkus.metrics, io.quarkus.smallrye.metrics
}/**
* Build item for metrics configuration (DEPRECATED)
* Used during deployment-time processing
*/
@Deprecated
public final class MetricsConfigurationBuildItem extends SimpleBuildItem {
/** Create build item with metrics path */
public MetricsConfigurationBuildItem(String path);
/** Get the configured metrics path */
public String getPath();
}# Metrics endpoint configuration
quarkus.smallrye-metrics.path=observability/metrics
# Enable extension and JAX-RS metrics
quarkus.smallrye-metrics.extensions.enabled=true
quarkus.smallrye-metrics.jaxrs.enabled=true
# Micrometer compatibility for migration
quarkus.smallrye-metrics.micrometer.compatibility=true
# MicroProfile Metrics tags
mp.metrics.tags=application=user-service,version=2.1.0,environment=production# Equivalent environment variables
QUARKUS_SMALLRYE_METRICS_PATH=observability/metrics
QUARKUS_SMALLRYE_METRICS_EXTENSIONS_ENABLED=true
QUARKUS_SMALLRYE_METRICS_JAXRS_ENABLED=true
QUARKUS_SMALLRYE_METRICS_MICROMETER_COMPATIBILITY=true
MP_METRICS_TAGS=application=user-service,version=2.1.0import org.eclipse.microprofile.config.ConfigProvider;
// Access configuration programmatically
Config config = ConfigProvider.getConfig();
String metricsPath = config.getValue("quarkus.smallrye-metrics.path", String.class);
boolean jaxrsEnabled = config.getValue("quarkus.smallrye-metrics.jaxrs.enabled", Boolean.class);# Step 1: Enable compatibility mode
quarkus.smallrye-metrics.micrometer.compatibility=true
# Step 2: Add Micrometer extension to dependencies
# <dependency>
# <groupId>io.quarkus</groupId>
# <artifactId>quarkus-micrometer</artifactId>
# </dependency>
# Step 3: Configure Micrometer
quarkus.micrometer.enabled=true
quarkus.micrometer.export.prometheus.enabled=true
# Step 4: Remove SmallRye Metrics extension after testing# Recommended production settings
quarkus.smallrye-metrics.path=metrics
quarkus.smallrye-metrics.extensions.enabled=true
quarkus.smallrye-metrics.jaxrs.enabled=true
# Production tags for monitoring
mp.metrics.tags=datacenter=us-east-1,service=user-api,instance=${HOSTNAME:unknown}
# Security: metrics endpoint typically behind management interface
quarkus.management.enabled=true
quarkus.management.port=9000<!-- Core dependency -->
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-metrics</artifactId>
</dependency>
<!-- Optional: Management interface for secure metrics -->
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-management</artifactId>
</dependency>-Dquarkus.smallrye-metrics.path=customQUARKUS_SMALLRYE_METRICS_PATH=customquarkus.smallrye-metrics.path=custom// Configuration mapping annotation
@ConfigMapping(prefix = "quarkus.smallrye-metrics")
public interface SmallRyeMetricsConfig {
// Properties are accessed via MicroProfile Config
}
// Build item for deployment processing
public final class MetricsConfigurationBuildItem extends SimpleBuildItem {
public MetricsConfigurationBuildItem(String path);
public String getPath();
}
// From MicroProfile Config
interface Config {
<T> T getValue(String propertyName, Class<T> propertyType);
<T> Optional<T> getOptionalValue(String propertyName, Class<T> propertyType);
}Install with Tessl CLI
npx tessl i tessl/maven-io-quarkus--quarkus-smallrye-metrics