Skip to content

enhancement: add job execution metrics #206

@CybotTM

Description

@CybotTM

Description

Built-in metrics collection for job execution would simplify observability integration.

Current Approach

Users must implement metrics via hooks:

cron.WithObservabilityHooks(cron.ObservabilityHooks{
    OnJobComplete: func(id EntryID, job Job, scheduled time.Time, dur time.Duration, panic any) {
        myMetrics.JobDuration.Observe(dur.Seconds())
        if panic != nil {
            myMetrics.JobErrors.Inc()
        }
    },
})

Proposed Enhancement

// Built-in metrics collection
c := cron.New(
    cron.WithMetrics(&cron.MetricsConfig{
        Namespace: "myapp",
        Subsystem: "cron",
    }),
)

// Exposes:
// - cron_jobs_total{job_id, status}
// - cron_job_duration_seconds{job_id}
// - cron_job_last_execution_timestamp{job_id}
// - cron_scheduler_entries_total
// - cron_scheduler_running_jobs

// Prometheus integration
cron.WithPrometheusMetrics(registry)

// OpenTelemetry integration
cron.WithOTelMetrics(meterProvider)

Severity

🟡 Medium - Production monitoring requirement

Found By

Pre-1.0 release code review with Zen/Gemini

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions