Module: Philiprehberger::JobMeter
- Defined in:
- lib/philiprehberger/job_meter.rb,
lib/philiprehberger/job_meter/stats.rb,
lib/philiprehberger/job_meter/bucket.rb,
lib/philiprehberger/job_meter/report.rb,
lib/philiprehberger/job_meter/version.rb,
lib/philiprehberger/job_meter/exporter.rb,
lib/philiprehberger/job_meter/collector.rb,
lib/philiprehberger/job_meter/histogram.rb
Defined Under Namespace
Modules: Exporter, Histogram, Report, Stats
Classes: Bucket, Collector
Constant Summary
collapse
- VERSION =
'0.3.0'
Class Method Summary
collapse
Class Method Details
.histogram(job_class, buckets:) ⇒ Object
41
42
43
44
45
46
|
# File 'lib/philiprehberger/job_meter.rb', line 41
def histogram(job_class, buckets:)
data = @collector.entries(job_class)
return nil unless data
Histogram.compute(data[:durations], buckets)
end
|
.record(job_class, duration:, success:, tags: {}) ⇒ Object
18
19
20
21
|
# File 'lib/philiprehberger/job_meter.rb', line 18
def record(job_class, duration:, success:, tags: {})
@collector.record(job_class, duration: duration, success: success, tags: tags)
(@buckets[job_class] ||= Bucket.new).record(duration: duration, success: success)
end
|
.reset! ⇒ Object
64
65
66
67
68
|
# File 'lib/philiprehberger/job_meter.rb', line 64
def reset!
@collector.reset!
@buckets.each_value(&:reset!)
@buckets.clear
end
|
.stats(job_class, tags: {}) ⇒ Object
34
35
36
37
38
39
|
# File 'lib/philiprehberger/job_meter.rb', line 34
def stats(job_class, tags: {})
data = @collector.entries(job_class, tags: tags)
return nil unless data
Stats.compute(data[:durations], data[:successes])
end
|
.to_json_export ⇒ Object
52
53
54
|
# File 'lib/philiprehberger/job_meter.rb', line 52
def to_json_export
Exporter.to_json_export(@collector)
end
|
.to_prometheus ⇒ Object
48
49
50
|
# File 'lib/philiprehberger/job_meter.rb', line 48
def to_prometheus
Exporter.to_prometheus(@collector)
end
|
.top_failing(num = 5) ⇒ Object
60
61
62
|
# File 'lib/philiprehberger/job_meter.rb', line 60
def top_failing(num = 5)
Report.top_failing(@collector, num)
end
|
.top_slowest(num = 5) ⇒ Object
56
57
58
|
# File 'lib/philiprehberger/job_meter.rb', line 56
def top_slowest(num = 5)
Report.top_slowest(@collector, num)
end
|
.trending(job_class) ⇒ Object
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/philiprehberger/job_meter.rb', line 23
def trending(job_class)
bucket = @buckets[job_class]
unless bucket
return Bucket::WINDOWS.each_with_object({}) do |(label, _), h|
h[label] = { avg_duration: 0.0, success_rate: 0.0, total: 0, failed: 0 }
end
end
bucket.trending
end
|