Quarkus如何将Micrometer指标推送至Prometheus并在Grafana可视化
Quarkus Micrometer指标对接Prometheus+Grafana实现可视化方案
前置准备
首先确保你已经安装了micrometer-registry-prometheus扩展,执行以下命令添加即可:
quarkus extension add micrometer-registry-prometheus
Maven用户也可以直接在pom.xml中添加依赖:
<dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-micrometer-registry-prometheus</artifactId> </dependency>
基础配置
在application.properties中添加以下配置,开启Prometheus指标导出:
# 启用Prometheus指标导出能力 quarkus.micrometer.export.prometheus.enabled=true # 开放metrics端点访问权限,生产环境可根据需要调整权限策略 quarkus.http.auth.permission.metrics.paths=/q/metrics quarkus.http.auth.permission.metrics.policy=permitAll
配置完成后重启服务,你自定义的request计数器等所有Micrometer指标就会按Prometheus标准格式暴露在/q/metrics端点。
指标同步到Prometheus
Prometheus支持两种同步模式,你可以根据自己的业务场景选择:
方案1:Prometheus主动拉取(推荐)
这是Prometheus原生的工作模式,适合长生命周期运行的Quarkus服务,配置成本最低:
- 打开Prometheus的配置文件
prometheus.yml,在scrape_configs节点下新增抓取任务:
scrape_configs: - job_name: 'quarkus-application' scrape_interval: 15s # 如果你服务的metrics路径带上下文前缀,取消下面的注释修改为实际路径 # metrics_path: '/hello/q/metrics' static_configs: - targets: ['<Quarkus服务的IP:端口>']
- 重启Prometheus服务,等待1-2个抓取周期后就能在Prometheus中查询到你上报的指标。
方案2:主动推送至Prometheus Pushgateway
如果你的Quarkus服务是短生命周期任务(比如定时任务、Serverless函数),无法被Prometheus主动拉取,可以选择推送模式:
- 首先部署好Prometheus Pushgateway组件
- 给Quarkus添加Pushgateway扩展:
quarkus extension add micrometer-registry-prometheus-pushgateway
- 在
application.properties中添加推送配置:
# 开启Pushgateway推送能力 quarkus.micrometer.export.prometheus.pushgateway.enabled=true # 替换为你实际部署的Pushgateway访问地址 quarkus.micrometer.export.prometheus.pushgateway.base-url=http://<Pushgateway地址>:9091 # 配置推送任务名和推送频率 quarkus.micrometer.export.prometheus.pushgateway.job=quarkus-app quarkus.micrometer.export.prometheus.pushgateway.push-rate=15s
配置完成后服务会自动按设定的频率把指标推送到Pushgateway,Prometheus只需配置抓取Pushgateway的指标即可。
Grafana可视化配置
- 打开Grafana控制台,进入「数据源」页面,添加Prometheus数据源,填写你部署的Prometheus服务访问地址并保存。
- 新建大盘或者导入现成的Quarkus通用大盘模板,添加面板时选择对应的Prometheus数据源,直接搜索你自定义的
request指标即可生成调用次数的可视化图表,也可以根据需求添加JVM、接口耗时等其他Micrometer内置指标的面板。
如果你后续还是要尝试对接Graphite,Quarkus也提供了对应的
micrometer-registry-graphite扩展,添加后配置Graphite服务地址即可实现指标推送。
内容的提问来源于stack exchange,提问作者rightjoin
相关产品推荐
相关产品推荐

