CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-io-quarkus--quarkus-smallrye-metrics

Quarkus extension that integrates SmallRye Metrics with MicroProfile Metrics for application monitoring and observability

Pending
Overview
Eval results
Files

configuration.mddocs/

Configuration

Configuration properties and build-time setup for customizing SmallRye Metrics behavior in Quarkus applications.

Capabilities

SmallRyeMetricsConfig

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
}

Configuration Properties

Metrics Endpoint Path

// Property: quarkus.smallrye-metrics.path
// Default: "metrics"
// Type: String
// Description: The path for the metrics endpoint

Usage 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

Extension Metrics Control

// Property: quarkus.smallrye-metrics.extensions.enabled
// Default: true
// Type: Boolean
// Description: Enable or disable extension-provided metrics

Usage Example:

# Enable extension metrics (default)
quarkus.smallrye-metrics.extensions.enabled=true

# Disable extension metrics
quarkus.smallrye-metrics.extensions.enabled=false

Micrometer Compatibility Mode

// Property: quarkus.smallrye-metrics.micrometer.compatibility
// Default: false
// Type: Boolean  
// Description: Enable Micrometer compatibility mode for migration

Usage Example:

# Enable Micrometer compatibility (for migration)
quarkus.smallrye-metrics.micrometer.compatibility=true

# Standard SmallRye Metrics mode (default)
quarkus.smallrye-metrics.micrometer.compatibility=false

JAX-RS Metrics Control

// Property: quarkus.smallrye-metrics.jaxrs.enabled
// Default: false
// Type: Boolean
// Description: Enable automatic JAX-RS endpoint metrics collection

Usage Example:

# Enable JAX-RS metrics collection
quarkus.smallrye-metrics.jaxrs.enabled=true

# Disable JAX-RS metrics (default)
quarkus.smallrye-metrics.jaxrs.enabled=false

MicroProfile Metrics Configuration

Standard MicroProfile Metrics properties are also supported:

// Property prefix: mp.metrics
// These are standard MicroProfile Metrics configuration options

Common MP Metrics Properties:

# Disable specific metric types
mp.metrics.tags=app=myapp,version=1.0

# Configure metric export format
mp.metrics.defaulted=true

Extension Metadata

Extension Definition

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

SPI Build Item (Deprecated)

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

Complete Configuration Example

Application Properties

# 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

Environment Variables

# 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.0

Programmatic Configuration

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

Migration Configuration

Transitioning to Micrometer

# 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

Production Configuration

# 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

Configuration Validation

Required Dependencies

<!-- 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>

Configuration Precedence

  1. System Properties: -Dquarkus.smallrye-metrics.path=custom
  2. Environment Variables: QUARKUS_SMALLRYE_METRICS_PATH=custom
  3. application.properties: quarkus.smallrye-metrics.path=custom
  4. Default Values: Built-in defaults from extension

Types

Configuration Types

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

docs

configuration.md

http-integration.md

index.md

runtime-api.md

tile.json