greek_fire 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6001cf601d2e1a55fcaea63b74aff762e12416bb
4
- data.tar.gz: 7a8a16dcef133314ea89ba7de80c8cf8f2de759b
3
+ metadata.gz: d7f0d9d8aad929d1b48c62705d0bf48d531faa3e
4
+ data.tar.gz: bb92e63f845ec8b553a13c8c15b0a46f21c1db32
5
5
  SHA512:
6
- metadata.gz: 5fecaf04786d7e7a344800be8d54b2c00c5c27a2e173814c2c0ff8857021ff6fc546d1926f46e4212d5f0e361838008fc97d1d7e6752550f4f75b70df512b3ee
7
- data.tar.gz: 8a671d0d3d15ecee6569b6dfbcfdef04418ae6ad43a43338a6caeb16442db5265c0a79309d82c90ffcd8354a31753974d9bdbc889ea21f63a380438d9234dea3
6
+ metadata.gz: 216eb48c9f105c73da3c1cf5b42d07d36403a0d1571e41a627ffe9bb7133762b6a1a96a6248c03de992030946b7f4565ec87a42d4cc4c47cccb21ed1b3bdb57f
7
+ data.tar.gz: 4a819edbf021874d150a6b0e8f5af261c356aeaa8131345793b0afc743df0ca0833caf05f69f0f4e5368ac5e27943b957542f4e405e0ad12929f08a4fe78fbf8
data/lib/greek_fire.rb CHANGED
@@ -1,6 +1,60 @@
1
1
  require "greek_fire/version"
2
2
  require "greek_fire/engine"
3
+ require "greek_fire/configuration"
3
4
 
4
5
  module GreekFire
5
- # Your code goes here...
6
+ class DuplicateMetricError < StandardError; end
7
+
8
+ class << self
9
+ attr_accessor :configuration
10
+
11
+ def configure
12
+ self.configuration ||= Configuration.new
13
+ yield(configuration) if block_given?
14
+ register_sidekiq_metrics if configuration.sidekiq_metrics && Object.const_defined?("Sidekiq")
15
+ end
16
+
17
+ private
18
+
19
+ def register_sidekiq_metrics
20
+ duplicate_metrics = []
21
+
22
+ sidekiq_metrics.each do |metric|
23
+ if metric_already_registered? metric[:name]
24
+ duplicate_metrics << metric[:name]
25
+ else
26
+ GreekFire::Gauge.register metric[:name], description: metric[:description], labels: metric[:labels], &metric[:proc]
27
+ end
28
+ end
29
+
30
+ raise DuplicateMetricError,
31
+ "The following metrics have already been registered by default. Please remove them from your greek_fire.rb initializer: #{duplicate_metrics.join(", ")}" if duplicate_metrics.any?
32
+ end
33
+
34
+ def metric_already_registered?(metric_name)
35
+ GreekFire::Metric.metrics.map(&:name).include? metric_name
36
+ end
37
+
38
+ def sidekiq_metrics
39
+ [
40
+ {
41
+ name: "sidekiq_process_count",
42
+ description: "How many sidekiq processes are running",
43
+ proc: Proc.new { |labels| Sidekiq::ProcessSet.new.size }
44
+ },
45
+ {
46
+ name: "sidekiq_job_latency",
47
+ description: "How long are jobs enqueued",
48
+ labels: { :queue => Proc.new { Sidekiq::Queue.all.map(&:name) }},
49
+ proc: Proc.new { |labels| Sidekiq::Queue.new(labels[:queue]).latency }
50
+ },
51
+ {
52
+ name: "sidekiq_job_count",
53
+ description: "How many jobs are enqueued",
54
+ labels: { :queue => Proc.new { Sidekiq::Queue.all.map(&:name) }},
55
+ proc: Proc.new { |labels| Sidekiq::Queue.new(labels[:queue]).size }
56
+ }
57
+ ]
58
+ end
59
+ end
6
60
  end
@@ -0,0 +1,9 @@
1
+ module GreekFire
2
+ class Configuration
3
+ attr_accessor :sidekiq_metrics
4
+
5
+ def initialize
6
+ @sidekiq_metrics = true
7
+ end
8
+ end
9
+ end
@@ -1,5 +1,9 @@
1
1
  module GreekFire
2
2
  class Engine < ::Rails::Engine
3
3
  isolate_namespace GreekFire
4
+
5
+ config.after_initialize do
6
+ GreekFire.configure
7
+ end
4
8
  end
5
9
  end
@@ -1,3 +1,3 @@
1
1
  module GreekFire
2
- VERSION = '0.5.0'
2
+ VERSION = '0.5.1'
3
3
  end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: greek_fire
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - cconstantine
8
+ - briansharon
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2017-07-21 00:00:00.000000000 Z
12
+ date: 2017-09-19 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: rspec-rails
@@ -69,6 +70,7 @@ dependencies:
69
70
  description: An easy way to export metrics for Prometheus.
70
71
  email:
71
72
  - chris@omadahealth.com
73
+ - brian.sharon@omadahealth.com
72
74
  executables: []
73
75
  extensions: []
74
76
  extra_rdoc_files: []
@@ -93,6 +95,7 @@ files:
93
95
  - app/views/greek_fire/metrics/_metric.html.erb
94
96
  - config/routes.rb
95
97
  - lib/greek_fire.rb
98
+ - lib/greek_fire/configuration.rb
96
99
  - lib/greek_fire/engine.rb
97
100
  - lib/greek_fire/version.rb
98
101
  - lib/tasks/greek_fire_tasks.rake
@@ -116,7 +119,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
116
119
  version: '0'
117
120
  requirements: []
118
121
  rubyforge_project:
119
- rubygems_version: 2.6.11
122
+ rubygems_version: 2.6.13
120
123
  signing_key:
121
124
  specification_version: 4
122
125
  summary: Prometheus metrics for rails.