prometheus_exporter 0.1.13 → 0.1.14

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
- SHA1:
3
- metadata.gz: 405a56b4f80812423e624398bc135af0ba955af9
4
- data.tar.gz: 597a3f4587b851f436dafc8687a85c97373e5e06
2
+ SHA256:
3
+ metadata.gz: fd8e78f5b3845845709c7479c94326c24f24b8a6e46b124b88c8f3d1a433f66e
4
+ data.tar.gz: 8813dc2dede6682afa0cf0ffa148bdd482f2a2affc6d5c719b825f1f1f8b8612
5
5
  SHA512:
6
- metadata.gz: d2a19111517b005751654f0084e66300cc6e2c70207c1529ced65d84031b19aa90f218daf71e10624653c976213833e4bc88551371f21e627410fef6b8e9355e
7
- data.tar.gz: 1c94b5f7d8606c0384211faeaf91e2595e154cbef85013764e7de3d0bda39c966527bd153696b8aa48418ade3c7507dccdb2104156a399638d706da9457bdadf
6
+ metadata.gz: de2d4650f99c955d1bc22a0f364504d17670628d03130f47aa50c835c2933e57547a093d0c6807dd9763255b3bdcc6f8ba469bbe1b8c2094419f55907ad1f893
7
+ data.tar.gz: 04e43b29d74c7f938d667c70dde47b94330482344edcb1134a39f9d9d70a7187b02c6e4a746452cdc6c236574b7fdb7d0d38986bd057daa5f1c1009fe8a31f85
@@ -6,76 +6,69 @@ require_relative "./../lib/prometheus_exporter"
6
6
  require_relative "./../lib/prometheus_exporter/server"
7
7
 
8
8
  def run
9
- port = PrometheusExporter::DEFAULT_PORT
10
- prefix = "ruby_"
11
- collector_filename = nil
12
- verbose = false
13
- type_collectors = []
14
- collector_class = PrometheusExporter::Server::Collector
9
+ options = {}
10
+ custom_collector_filename = nil
11
+ custom_type_collectors_filenames = []
15
12
 
16
13
  OptionParser.new do |opt|
14
+ opt.banner = "Usage: prometheus_exporter [options]"
17
15
  opt.on('-p',
18
16
  '--port INTEGER',
19
17
  Integer,
20
- "Port exporter should listen on (default: #{port})") do |o|
21
- port = o.to_i
18
+ "Port exporter should listen on (default: #{PrometheusExporter::DEFAULT_PORT})") do |o|
19
+ options[:port] = o.to_i
22
20
  end
23
- opt.on('--prefix METRIC_PREFIX', String, "Prefix to apply to all metrics (default: #{prefix})") do |o|
24
- prefix = o.to_s
21
+ opt.on('--prefix METRIC_PREFIX', String, "Prefix to apply to all metrics (default: #{PrometheusExporter::DEFAULT_PREFIX})") do |o|
22
+ options[:prefix] = o.to_s
25
23
  end
26
24
  opt.on('-c', '--collector FILE', String, "(optional) Custom collector to run") do |o|
27
- collector_filename = o.to_s
25
+ custom_collector_filename = o.to_s
28
26
  end
29
27
  opt.on('-a', '--type-collector FILE', String, "(optional) Custom type collectors to run in main collector") do |o|
30
- type_collectors << o
28
+ custom_type_collectors_filenames << o
31
29
  end
32
30
  opt.on('-v', '--verbose') do |o|
33
- verbose = true
31
+ options[:verbose] = true
34
32
  end
35
33
 
36
34
  end.parse!
37
35
 
38
- PrometheusExporter::Metric::Base.default_prefix = prefix
39
-
40
- if collector_filename
41
- eval File.read(collector_filename), nil, File.expand_path(collector_filename)
42
-
36
+ if custom_collector_filename
37
+ eval File.read(custom_collector_filename), nil, File.expand_path(custom_collector_filename)
43
38
  found = false
44
39
 
40
+ base_klass = PrometheusExporter::Server::CollectorBase
41
+
45
42
  ObjectSpace.each_object(Class) do |klass|
46
- if klass < PrometheusExporter::Server::CollectorBase
47
- collector_class = klass
48
- found = true
43
+ if klass < base_klass && klass != base_klass
44
+ options[:collector_class] = klass
49
45
  end
50
46
  end
51
47
 
52
48
  if !found
53
- STDERR.puts "Can not find a class inheriting off PrometheusExporter::Server::CollectorBase"
54
- usage
49
+ STDERR.puts "[Error] Can not find a class inheriting off PrometheusExporter::Server::CollectorBase"
55
50
  exit 1
56
51
  end
57
52
  end
58
53
 
59
- collector = collector_class.new
60
-
61
- if type_collectors.length > 0
62
- type_collectors.each do |t|
54
+ if custom_type_collectors_filenames.length > 0
55
+ custom_type_collectors_filenames.each do |t|
63
56
  eval File.read(t), nil, File.expand_path(t)
64
57
  end
65
58
 
66
59
  ObjectSpace.each_object(Class) do |klass|
67
60
  if klass < PrometheusExporter::Server::TypeCollector
68
- collector.register_collector klass.new
69
- STDERR.puts "Registered TypeCollector: #{klass}" if verbose
61
+ options[:type_collectors] ||= []
62
+ options[:type_collectors] << klass
70
63
  end
71
64
  end
72
65
  end
73
66
 
74
- puts "#{Time.now} Starting prometheus exporter on port #{port}"
75
- server = PrometheusExporter::Server::WebServer.new port: port, collector: collector, verbose: verbose
76
- server.start
77
- sleep
67
+ runner = PrometheusExporter::Server::Runner.new(options)
78
68
 
69
+ puts "#{Time.now} Starting prometheus exporter on port #{runner.port}"
70
+ runner.start
71
+ sleep
79
72
  end
80
73
 
81
74
  run
@@ -83,7 +83,8 @@ module PrometheusExporter::Metric
83
83
  nil
84
84
  end
85
85
 
86
- def observe(value, labels = {})
86
+ def observe(value, labels = nil)
87
+ labels ||= {}
87
88
  ensure_summary(labels)
88
89
  rotate_if_needed
89
90
 
@@ -0,0 +1,89 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PrometheusExporter::Server
4
+ class RunnerException < StandardError; end;
5
+ class WrongInheritance < RunnerException; end;
6
+
7
+ class Runner
8
+ def initialize(options = {})
9
+ options.each do |k, v|
10
+ send("#{k}=", v) if self.class.method_defined?("#{k}=")
11
+ end
12
+ end
13
+
14
+ def start
15
+ PrometheusExporter::Metric::Base.default_prefix = prefix
16
+
17
+ register_type_collectors
18
+
19
+ unless collector.is_a?(PrometheusExporter::Server::CollectorBase)
20
+ raise WrongInheritance, 'Collector class must be inherited from PrometheusExporter::Server::CollectorBase'
21
+ end
22
+
23
+ server = server_class.new port: port, collector: collector, verbose: verbose
24
+ server.start
25
+ end
26
+
27
+ def prefix=(prefix)
28
+ @prefix = prefix
29
+ end
30
+
31
+ def prefix
32
+ @prefix || PrometheusExporter::DEFAULT_PREFIX
33
+ end
34
+
35
+ def port=(port)
36
+ @port = port
37
+ end
38
+
39
+ def port
40
+ @port || PrometheusExporter::DEFAULT_PORT
41
+ end
42
+
43
+ def collector_class=(collector_class)
44
+ @collector_class = collector_class
45
+ end
46
+
47
+ def collector_class
48
+ @collector_class || PrometheusExporter::Server::Collector
49
+ end
50
+
51
+ def type_collectors=(type_collectors)
52
+ @type_collectors = type_collectors
53
+ end
54
+
55
+ def type_collectors
56
+ @type_collectors || []
57
+ end
58
+
59
+ def verbose=(verbose)
60
+ @verbose = verbose
61
+ end
62
+
63
+ def verbose
64
+ return @verbose if defined? @verbose
65
+ false
66
+ end
67
+
68
+ def server_class=(server_class)
69
+ @server_class = server_class
70
+ end
71
+
72
+ def server_class
73
+ @server_class || PrometheusExporter::Server::WebServer
74
+ end
75
+
76
+ def collector
77
+ @_collector ||= collector_class.new
78
+ end
79
+
80
+ private
81
+
82
+ def register_type_collectors
83
+ type_collectors.each do |klass|
84
+ collector.register_collector klass.new
85
+ STDERR.puts "Registered TypeCollector: #{klass}" if verbose
86
+ end
87
+ end
88
+ end
89
+ end
@@ -1,3 +1,4 @@
1
+ require_relative "metric"
1
2
  require_relative "server/type_collector"
2
3
  require_relative "server/web_collector"
3
4
  require_relative "server/process_collector"
@@ -5,4 +6,4 @@ require_relative "server/sidekiq_collector"
5
6
  require_relative "server/collector_base"
6
7
  require_relative "server/collector"
7
8
  require_relative "server/web_server"
8
- require_relative "metric"
9
+ require_relative "server/runner"
@@ -1,3 +1,3 @@
1
1
  module PrometheusExporter
2
- VERSION = "0.1.13"
2
+ VERSION = "0.1.14"
3
3
  end
@@ -5,4 +5,5 @@ require "thread"
5
5
  module PrometheusExporter
6
6
  # per: https://github.com/prometheus/prometheus/wiki/Default-port-allocations
7
7
  DEFAULT_PORT = 9394
8
+ DEFAULT_PREFIX = 'ruby_'
8
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prometheus_exporter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.13
4
+ version: 0.1.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Saffron
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-08 00:00:00.000000000 Z
11
+ date: 2018-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -131,6 +131,7 @@ files:
131
131
  - lib/prometheus_exporter/server/collector.rb
132
132
  - lib/prometheus_exporter/server/collector_base.rb
133
133
  - lib/prometheus_exporter/server/process_collector.rb
134
+ - lib/prometheus_exporter/server/runner.rb
134
135
  - lib/prometheus_exporter/server/sidekiq_collector.rb
135
136
  - lib/prometheus_exporter/server/type_collector.rb
136
137
  - lib/prometheus_exporter/server/web_collector.rb
@@ -157,7 +158,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
157
158
  version: '0'
158
159
  requirements: []
159
160
  rubyforge_project:
160
- rubygems_version: 2.5.2
161
+ rubygems_version: 2.7.3
161
162
  signing_key:
162
163
  specification_version: 4
163
164
  summary: Prometheus Exporter