You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何监控Quartz Scheduler任务并获取可推送Prometheus的量化指标

Quartz Scheduler Prometheus 指标采集方案

方案一:使用Micrometer Quartz集成(推荐)

Micrometer是Java生态通用的指标采集库,原生兼容Prometheus格式,自带Quartz指标采集能力,无需自己实现监听器逻辑。

依赖配置

SpringBoot项目Maven依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

普通Java项目Maven依赖:

<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-core</artifactId>
    <version>最新稳定版</version>
</dependency>
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
    <version>和micrometer-core同版本</version>
</dependency>

绑定Scheduler到指标采集器

import io.micrometer.core.instrument.Metrics;
import io.micrometer.core.instrument.Tag;
import io.micrometer.core.instrument.binder.quartz.QuartzMetrics;
import org.quartz.Scheduler;
import org.quartz.impl.StdSchedulerFactory;

public class QuartzPrometheusDemo {
    public static void main(String[] args) throws Exception {
        // 初始化Quartz调度器
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
        // 绑定调度器到Micrometer指标注册表,可自定义扩展标签
        new QuartzMetrics(scheduler, Tag.empty()).bindTo(Metrics.globalRegistry);
        scheduler.start();
    }
}

默认采集的核心指标

  • quartz_job_running:Gauge类型,实时统计当前正在运行的任务数量,支持按任务名、任务组过滤
  • quartz_job_execution_seconds:直方图类型,统计每个任务的执行时长,附带任务名、任务组、执行结果(成功/异常)标签
  • quartz_job_execution_total:计数器类型,统计任务累计执行次数,支持按执行结果维度拆分
  • quartz_trigger_fired_total:计数器类型,统计触发器累计触发次数,附带触发器名、触发器组标签
  • quartz_scheduler_jobs_total:Gauge类型,统计调度器内注册的总任务数

指标导出方式

  • 拉取模式:SpringBoot项目直接配置开启prometheus端点,Prometheus直接拉取/actuator/prometheus接口即可获取所有Quartz指标
  • 推送模式:配置Micrometer对接Prometheus PushGateway,按自定义周期将指标主动推送到PushGateway,Prometheus从PushGateway拉取指标即可

方案二:自定义监听器实现(无第三方依赖)

如果不想引入Micrometer相关依赖,可以自己实现Quartz的JobListener和TriggerListener接口,手动统计指标:

  1. 定义Counter、Gauge类型的指标存储结构,记录运行中任务数、执行时长、执行次数等数据
  2. 在jobToBeExecuted回调中更新运行中任务数+1,记录任务开始时间
  3. 在jobWasExecuted回调中更新运行中任务数-1,计算任务执行时长并更新对应指标,成功/异常分别计数
  4. 开发轻量HTTP接口,按照Prometheus文本格式输出所有统计的指标,或者直接调用PushGateway的HTTP接口推送指标

内容的提问来源于stack exchange,提问作者Ritika Garg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 20:24:02