Search in sources :

Example 1 with JobStatus

use of net.nemerosa.ontrack.job.JobStatus in project ontrack by nemerosa.

the class JobMetrics method metrics.

@Override
public Collection<Metric<?>> metrics() {
    // Gets the statuses
    Collection<JobStatus> statuses = scheduler.getJobStatuses();
    // Collects all metrics
    List<Metric<?>> metrics = new ArrayList<>();
    // Statuses
    JobMetric general = new JobMetric();
    Map<String, JobMetric> categories = new HashMap<>();
    for (JobStatus status : statuses) {
        general.count++;
        JobMetric.getCategory(categories, status).count++;
        if (status.isRunning()) {
            general.running++;
            JobMetric.getCategory(categories, status).running++;
        }
        if (status.isDisabled()) {
            general.disabled++;
            JobMetric.getCategory(categories, status).disabled++;
        }
        if (!status.isValid()) {
            general.invalid++;
            JobMetric.getCategory(categories, status).invalid++;
        }
        if (status.isPaused()) {
            general.paused++;
            JobMetric.getCategory(categories, status).paused++;
        }
        if (status.isError()) {
            general.error++;
            JobMetric.getCategory(categories, status).error++;
        }
    }
    // Collection of metrics
    metrics.add(new Metric<>("gauge.jobs", general.count));
    metrics.add(new Metric<>("gauge.jobs.running", general.running));
    metrics.add(new Metric<>("gauge.jobs.disabled", general.disabled));
    metrics.add(new Metric<>("gauge.jobs.error", general.error));
    metrics.add(new Metric<>("gauge.jobs.invalid", general.invalid));
    metrics.add(new Metric<>("gauge.jobs.paused", general.paused));
    // Per categories
    for (Map.Entry<String, JobMetric> entry : categories.entrySet()) {
        String category = entry.getKey();
        JobMetric metric = entry.getValue();
        metrics.add(new Metric<>("gauge.jobs." + category, metric.count));
        metrics.add(new Metric<>("gauge.jobs." + category + ".running", metric.running));
        metrics.add(new Metric<>("gauge.jobs." + category + ".disabled", metric.disabled));
        metrics.add(new Metric<>("gauge.jobs." + category + ".error", metric.error));
        metrics.add(new Metric<>("gauge.jobs." + category + ".invalid", metric.invalid));
        metrics.add(new Metric<>("gauge.jobs." + category + ".paused", metric.paused));
    }
    // OK
    return metrics;
}
Also used : JobStatus(net.nemerosa.ontrack.job.JobStatus) TaggedMetric(net.nemerosa.ontrack.model.metrics.TaggedMetric) Metric(org.springframework.boot.actuate.metrics.Metric)

Aggregations

JobStatus (net.nemerosa.ontrack.job.JobStatus)1 TaggedMetric (net.nemerosa.ontrack.model.metrics.TaggedMetric)1 Metric (org.springframework.boot.actuate.metrics.Metric)1