如何通过Spring Boot 3.2 Actuator暴露嵌入式ActiveMQ Artemis指标
问题描述
使用Spring Boot 3.2版本,希望通过Prometheus端点暴露嵌入式ActiveMQ Artemis的指标,但目前Prometheus端点未提供相关指标。已添加的依赖和配置如下:
已添加的依赖
implementation 'org.apache.activemq:artemis-jakarta-server' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation 'io.micrometer:micrometer-tracing-bridge-otel' implementation 'org.springframework.boot:spring-boot-starter-artemis' runtimeOnly 'io.micrometer:micrometer-registry-prometheus'
已配置的application.properties
spring.artemis.mode=embedded spring.artemis.password=test spring.artemis.user=test spring.artemis.embedded.enabled=true spring.artemis.embedded.persistent=true spring.artemis.embedded.data-directory=./mq-data spring.artemis.embedded.cluster-password=test spring.artemis.embedded.topics=module1.out.topic management.endpoint.health.show-components=always management.endpoint.health.show-details=always management.endpoints.web.exposure.include=prometheus,health,hawtio management.server.port=8090
解决方案
要使嵌入式ActiveMQ Artemis的指标暴露到Prometheus端点,需完成以下配置:
1. 添加Artemis-Micrometer集成依赖
Spring Boot的spring-boot-starter-artemis默认未包含Artemis与Micrometer的集成组件,需手动添加对应依赖:
implementation 'org.apache.activemq:artemis-micrometer-plugin'
注意:该依赖版本需与
artemis-jakarta-server版本保持一致,避免版本冲突。
2. 配置嵌入式Artemis启用指标收集
创建EmbeddedArtemisConfigurationCustomizer类型的Bean,为嵌入式Artemis服务器绑定Micrometer注册表:
import org.apache.activemq.artemis.core.server.embedded.EmbeddedActiveMQ; import org.apache.activemq.artemis.metrics.plugin.ArtemisMetricsPlugin; import io.micrometer.core.instrument.MeterRegistry; import org.springframework.boot.autoconfigure.jms.artemis.EmbeddedArtemisConfigurationCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class ArtemisMetricsConfig { @Bean public EmbeddedArtemisConfigurationCustomizer artemisMetricsCustomizer(MeterRegistry meterRegistry) { return configuration -> { ArtemisMetricsPlugin metricsPlugin = new ArtemisMetricsPlugin(); metricsPlugin.setMeterRegistry(meterRegistry); configuration.setMetricsPlugin(metricsPlugin); }; } }
该Bean会在嵌入式Artemis启动时,将Micrometer的注册表注入到Artemis的指标插件中,让Artemis生成的指标能被Micrometer收集并传递到Prometheus端点。
3. 验证配置效果
启动应用后,访问Prometheus端点http://localhost:8090/actuator/prometheus,搜索artemis_前缀的指标(如artemis_messages_total、artemis_queue_size),确认指标已正常暴露。
额外注意事项
- Spring Boot 3.2中引入
micrometer-registry-prometheus后会自动配置Prometheus类型的MeterRegistry,无需手动创建。 - 若使用自定义MeterRegistry配置,需确保Artemis插件能正确获取到该实例。
内容的提问来源于stack exchange,提问作者AverageLukas
相关产品推荐
相关产品推荐

