Sha256: de6fd6da66ade68e6deec7af4c523392aae1151d27f77cc3bf5d7da9f309f841

Contents?: true

Size: 1.16 KB

Versions: 3

Compression:

Stored size: 1.16 KB

Contents

module PrometheusExporter::Server
  class DelayedJobCollector < TypeCollector

    def type
      "delayed_job"
    end

    def collect(obj)
      ensure_delayed_job_metrics
      @delayed_job_duration_seconds.observe(obj["duration"], job_name: obj["name"])
      @delayed_jobs_total.observe(1, job_name: obj["name"])
      @delayed_failed_jobs_total.observe(1, job_name: obj["name"]) if !obj["success"]
    end

    def metrics
      if @delayed_jobs_total
        [@delayed_job_duration_seconds, @delayed_jobs_total, @delayed_failed_jobs_total]
      else
        []
      end
    end

    protected

    def ensure_delayed_job_metrics
      if !@delayed_jobs_total

        @delayed_job_duration_seconds =
        PrometheusExporter::Metric::Counter.new(
          "delayed_job_duration_seconds", "Total time spent in delayed jobs.")

        @delayed_jobs_total =
        PrometheusExporter::Metric::Counter.new(
          "delayed_jobs_total", "Total number of delayed jobs executed.")

        @delayed_failed_jobs_total =
        PrometheusExporter::Metric::Counter.new(
          "delayed_failed_jobs_total", "Total number failed delayed jobs executed.")
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
prometheus_exporter-0.3.1 lib/prometheus_exporter/server/delayed_job_collector.rb
prometheus_exporter-0.3.0 lib/prometheus_exporter/server/delayed_job_collector.rb
prometheus_exporter-0.2.0 lib/prometheus_exporter/server/delayed_job_collector.rb