bc-prometheus-ruby 0.8.1 → 0.8.2

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
  SHA256:
3
- metadata.gz: a7a2ca2f975be9d346e217c4a13e4ca702a573889383c43292094f66aa82c562
4
- data.tar.gz: 2724f8826c1ee9d668357676834f15dc24836ed1d05337f7b217133119fb4e26
3
+ metadata.gz: d996c929cb82a48d50a36f4bbd942a5cc7dd41d6ec7d10864808619a6ab08630
4
+ data.tar.gz: 10a28c621098fa9ecb0a06734d66c840663276dd3a3e84f5cdf5bb8bb21760b8
5
5
  SHA512:
6
- metadata.gz: c1e174d621f686a1d32b4db922d4409f1cdffa1f0afd2c6f6b853f51978150b53be7ae3237fc0a1b8daf139423c98f0186ad317345b16a070eb0824f00249ef3
7
- data.tar.gz: 8c215d4cb4349041e082bedaee24580afbc4f567bf6e8af848c0e00afa42b228a982790f6d21acfdbf6023de82aaa9cfecc2e55b625730e75102443c1e946ef1
6
+ metadata.gz: 1400c730adf70a8f4f1d836e8a1b78ae5d34c5f11c66848a7cb47001e8e0502d2981b898c52953f2e549945c5c82e0cd1ceaad7aa5901a909241af4a829c85cd
7
+ data.tar.gz: 03dc5e33614b1f4bb27bb1636d91a37704727b2279a981abaa2d1355c3fc679936df78633df774ee2ec240d0c3614ce370f237b10a4a417be7db2ed19f6a8685
data/CHANGELOG.md CHANGED
@@ -2,6 +2,16 @@ Changelog for the bc-prometheus-ruby gem.
2
2
 
3
3
  ### Pending Release
4
4
 
5
+ ## 0.8.2
6
+
7
+ - Add `version=0.0.4` to `Content-Type` header for Prometheus exposition format 0.0.4 compliance
8
+
9
+ ## 0.8.1
10
+
11
+ - Prometheus client respects the enabled setting
12
+ - Upgrade prometheus_exporter
13
+ - Expose SQL metrics for different dashboards
14
+
5
15
  ## 0.8.0
6
16
 
7
17
  - Add support for Ruby 3.4
@@ -31,7 +31,7 @@ Gem::Specification.new do |spec|
31
31
 
32
32
  spec.files = Dir['README.md', 'CHANGELOG.md', 'CODE_OF_CONDUCT.md', 'lib/**/*', 'bc-prometheus-ruby.gemspec']
33
33
  spec.require_paths = ['lib']
34
- spec.required_ruby_version = '>= 3.2'
34
+ spec.required_ruby_version = '>= 3.3'
35
35
 
36
36
  spec.add_runtime_dependency 'bigcommerce-multitrap', '~> 0.1'
37
37
  spec.add_runtime_dependency 'prometheus_exporter', '~> 0.7'
@@ -72,6 +72,8 @@ module Bigcommerce
72
72
  metrics = {}
73
73
  metrics = collect(metrics)
74
74
  push(metrics)
75
+ rescue StandardError => e
76
+ @logger.error("[bigcommerce-prometheus] Collector error (#{self.class}), continuing: #{e.message}")
75
77
  ensure
76
78
  sleep @frequency
77
79
  end
@@ -34,7 +34,7 @@ module Bigcommerce
34
34
  puma_collection_frequency: ENV.fetch('PROMETHEUS_PUMA_COLLECTION_FREQUENCY', 30).to_i,
35
35
  puma_process_label: ENV.fetch('PROMETHEUS_PUMA_PROCESS_LABEL', 'web').to_s,
36
36
  resque_collection_frequency: ENV.fetch('PROMETHEUS_RESQUE_COLLECTION_FREQUENCY', 30).to_i,
37
- resque_process_label: ENV.fetch('PROMETHEUS_REQUEST_PROCESS_LABEL', 'resque').to_s,
37
+ resque_process_label: ENV.fetch('PROMETHEUS_RESQUE_PROCESS_LABEL', 'resque').to_s,
38
38
 
39
39
  # Server configuration
40
40
  not_found_body: ENV.fetch('PROMETHEUS_SERVER_NOT_FOUND_BODY', 'Not Found! The Prometheus Ruby Exporter only listens on /metrics and /send-metrics').to_s,
@@ -80,11 +80,12 @@ module Bigcommerce
80
80
  #
81
81
  def stop
82
82
  @server.stop
83
- @run_thread.kill
84
- @running = false
83
+ @run_thread&.kill
85
84
  $stdout.puts "[bigcommerce-prometheus][#{@process_name}] Prometheus exporter cleanly shut down"
86
85
  rescue ::StandardError => e
87
86
  warn "[bigcommerce-prometheus][#{@process_name}] Failed to stop exporter: #{e.message}"
87
+ ensure
88
+ @running = false
88
89
  end
89
90
 
90
91
  ##
@@ -30,13 +30,15 @@ module Bigcommerce
30
30
  # @param [Bigcommerce::Prometheus::Servers::Puma::ServerMetrics]
31
31
  # @param [PrometheusExporter::Server::Collector] collector
32
32
  # @param [Logger] logger
33
+ # @param [Integer, nil] timeout scrape timeout in seconds; nil means no limit
33
34
  #
34
- def initialize(request:, response:, server_metrics:, collector:, logger:)
35
+ def initialize(request:, response:, server_metrics:, collector:, logger:, timeout: nil)
35
36
  @request = request
36
37
  @response = response
37
38
  @collector = collector
38
39
  @server_metrics = server_metrics
39
40
  @logger = logger
41
+ @timeout = timeout
40
42
  end
41
43
 
42
44
  def handle
@@ -34,12 +34,12 @@ module Bigcommerce
34
34
  def call
35
35
  collected_metrics = metrics
36
36
  if @request.accept_encoding.to_s.include?('gzip')
37
- write_gzip(metrics)
37
+ write_gzip(collected_metrics)
38
38
  else
39
39
  @response.write(collected_metrics)
40
40
  end
41
41
 
42
- set_header('Content-Type', 'text/plain; charset=utf-8')
42
+ set_header('Content-Type', 'text/plain; version=0.0.4; charset=utf-8')
43
43
  @response
44
44
  end
45
45
 
@@ -77,7 +77,8 @@ module Bigcommerce
77
77
  response: response,
78
78
  server_metrics: @server_metrics,
79
79
  collector: @collector,
80
- logger: @logger
80
+ logger: @logger,
81
+ timeout: @timeout
81
82
  )
82
83
  con.handle
83
84
  end
@@ -48,7 +48,7 @@ module Bigcommerce
48
48
  metric(:jobs_processed_total).observe(data['jobs_processed_total'], labels)
49
49
  metric(:queues_total).observe(data['queues_total'], labels)
50
50
 
51
- data['queues'].each do |name, size|
51
+ (data['queues'] || {}).each do |name, size|
52
52
  metric(:queue_sizes).observe(size, labels.merge(queue: name))
53
53
  end
54
54
  end
@@ -17,6 +17,6 @@
17
17
  #
18
18
  module Bigcommerce
19
19
  module Prometheus
20
- VERSION = '0.8.1'
20
+ VERSION = '0.8.2'
21
21
  end
22
22
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bc-prometheus-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shaun McCormick
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2026-05-19 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: bigcommerce-multitrap
@@ -135,7 +134,6 @@ homepage: https://github.com/bigcommerce/bc-prometheus-ruby
135
134
  licenses:
136
135
  - MIT
137
136
  metadata: {}
138
- post_install_message:
139
137
  rdoc_options: []
140
138
  require_paths:
141
139
  - lib
@@ -143,15 +141,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
143
141
  requirements:
144
142
  - - ">="
145
143
  - !ruby/object:Gem::Version
146
- version: '3.2'
144
+ version: '3.3'
147
145
  required_rubygems_version: !ruby/object:Gem::Requirement
148
146
  requirements:
149
147
  - - ">="
150
148
  - !ruby/object:Gem::Version
151
149
  version: '0'
152
150
  requirements: []
153
- rubygems_version: 3.5.7
154
- signing_key:
151
+ rubygems_version: 3.6.9
155
152
  specification_version: 4
156
153
  summary: Simple integration of ruby and puma servers with prometheus
157
154
  test_files: []