Module: Philiprehberger::JobMeter::Exporter
- Defined in:
- lib/philiprehberger/job_meter/exporter.rb
Class Method Summary collapse
Class Method Details
.to_json_export(collector) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/philiprehberger/job_meter/exporter.rb', line 39 def to_json_export(collector) jobs = collector.all_job_classes.map do |job_class| data = collector.entries(job_class) next unless data stats = Stats.compute(data[:durations], data[:successes]) { job_class: job_class, stats: stats } end.compact JSON.generate({ jobs: jobs }) end |
.to_prometheus(collector) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/philiprehberger/job_meter/exporter.rb', line 10 def to_prometheus(collector) lines = [] collector.all_job_classes.each do |job_class| data = collector.entries(job_class) next unless data stats = Stats.compute(data[:durations], data[:successes]) sanitize_metric_name(job_class) lines << '# HELP job_duration_seconds Duration of job executions' lines << '# TYPE job_duration_seconds gauge' lines << "job_duration_seconds_avg{job_class=\"#{job_class}\"} #{format_value(stats[:avg_duration])}" lines << "job_duration_seconds_p50{job_class=\"#{job_class}\"} #{format_value(stats[:p50_duration])}" lines << "job_duration_seconds_p95{job_class=\"#{job_class}\"} #{format_value(stats[:p95_duration])}" lines << "job_duration_seconds_p99{job_class=\"#{job_class}\"} #{format_value(stats[:p99_duration])}" lines << '# HELP job_executions_total Total number of job executions' lines << '# TYPE job_executions_total counter' lines << "job_executions_total{job_class=\"#{job_class}\"} #{stats[:total]}" lines << '# HELP job_failures_total Total number of failed job executions' lines << '# TYPE job_failures_total counter' lines << "job_failures_total{job_class=\"#{job_class}\"} #{stats[:failed]}" lines << '# HELP job_success_rate Success rate of job executions' lines << '# TYPE job_success_rate gauge' lines << "job_success_rate{job_class=\"#{job_class}\"} #{format_value(stats[:success_rate])}" end "#{lines.join("\n")}\n" end |