greek_fire 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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.