prometheus-client-mmap 0.27.0 → 0.28.0

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
  SHA256:
3
- metadata.gz: 1fa5327014f798bb7bef9e76ccc647d987edd242be6f360f9ff149106a3cea03
4
- data.tar.gz: 72d0ea672dd2e55089d17ccace847905de1cf2822e344b92538249dc29ca2a5d
3
+ metadata.gz: 9e98f876a9a4daaffc3a801d3298db438d4f5bab85a6ce3aadc2a3e7fcc6ef2b
4
+ data.tar.gz: 8c6feabd1d264dab83ec33e19995abe8b1ecc2950dd17ec87c22d21f51dcdef5
5
5
  SHA512:
6
- metadata.gz: a5f02faf732c2d7610f3dcc726ded14eac0ac53f64f5acc559fd5f7f0620a83fb94352e5a2a81a0d4f2f5bb39df9727d1363ce7462a6dc466d1467e45cc43fc1
7
- data.tar.gz: d0981f67379cf967041ed9852d465596dbd5fa04495d0c6f745e1a7c7389ea771dde7ecb120997c1793a04d20e875ff2314c8a0f45a2096a49cffebcb712115b
6
+ metadata.gz: 939c7890f19355bf746c00abd2e47624b96a63384d7c60dc55e101e7664bcda0f8aa9f15db22b98640a38309439661be446b3e95ac17f283232a2acf9b192bf7
7
+ data.tar.gz: 451f1b6594a7f3c84f1fc1a57930cb7d663a99c21bffbd9ae3e91328f34427a1aadd9934a4894b4b1f3337cd24f35093321485749bc040c668c3cbcd6b82d77f
data/README.md CHANGED
@@ -241,8 +241,8 @@ To use the C extension, set the environment variable
241
241
 
242
242
  ### PID cardinality
243
243
 
244
- In multiprocess setup e.g. running under Unicorn, having worker process restart often can
245
- lead to performance problems when proccesing metric files. By default each process using
244
+ In multiprocess setup e.g. running under Unicorn or Puma, having worker process restart often
245
+ can lead to performance problems when proccesing metric files. By default each process using
246
246
  Prometheus metrics will create a set of files based on that process PID. With high worker
247
247
  churn this will lead to creation of thousands of files and in turn will cause very noticable
248
248
  slowdown when displaying metrics
@@ -250,14 +250,20 @@ slowdown when displaying metrics
250
250
  To reduce this problem, a surrogate process id can be used. Set of all such IDs needs
251
251
  have low cardinality, and each process id must be unique among all running process.
252
252
 
253
- For Unicorn a worker id/number can be used to greatly speedup the metrics rendering.
253
+ For Unicorn and Puma a worker id/number can be used to greatly speedup the metrics rendering.
254
254
 
255
- To use it add this line to your `configure` block:
255
+ If you are using Unicorn, add this line to your `configure` block:
256
256
 
257
257
  ```ruby
258
258
  config.pid_provider = Prometheus::Client::Support::Unicorn.method(:worker_pid_provider)
259
259
  ```
260
260
 
261
+ If you are using Puma, add this line to your `configure` block:
262
+
263
+ ```ruby
264
+ config.pid_provider = Prometheus::Client::Support::Puma.method(:worker_pid_provider)
265
+ ```
266
+
261
267
  ## Tools
262
268
 
263
269
  ### `bin/parse`
@@ -0,0 +1,44 @@
1
+ module Prometheus
2
+ module Client
3
+ module Support
4
+ module Puma
5
+ extend self
6
+
7
+ def worker_pid_provider
8
+ wid = worker_id
9
+ if wid = worker_id
10
+ wid
11
+ else
12
+ "process_id_#{Process.pid}"
13
+ end
14
+ end
15
+
16
+ private
17
+
18
+ def object_based_worker_id
19
+ return unless defined?(::Puma::Cluster::Worker)
20
+
21
+ workers = ObjectSpace.each_object(::Puma::Cluster::Worker)
22
+ return if workers.nil?
23
+
24
+ workers_first = workers.first
25
+ workers_first.index unless workers_first.nil?
26
+ end
27
+
28
+ def program_name
29
+ $PROGRAM_NAME
30
+ end
31
+
32
+ def worker_id
33
+ if matchdata = program_name.match(/puma.*cluster worker ([0-9]+):/)
34
+ "puma_#{matchdata[1]}"
35
+ elsif object_worker_id = object_based_worker_id
36
+ "puma_#{object_worker_id}"
37
+ elsif program_name.include?('puma')
38
+ 'puma_master'
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -1,5 +1,5 @@
1
1
  module Prometheus
2
2
  module Client
3
- VERSION = '0.27.0'.freeze
3
+ VERSION = '0.28.0'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prometheus-client-mmap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.27.0
4
+ version: 0.28.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tobias Schmidt
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2023-07-31 00:00:00.000000000 Z
14
+ date: 2023-09-02 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rb_sys
@@ -191,6 +191,7 @@ files:
191
191
  - lib/prometheus/client/registry.rb
192
192
  - lib/prometheus/client/simple_value.rb
193
193
  - lib/prometheus/client/summary.rb
194
+ - lib/prometheus/client/support/puma.rb
194
195
  - lib/prometheus/client/support/unicorn.rb
195
196
  - lib/prometheus/client/uses_value_type.rb
196
197
  - lib/prometheus/client/version.rb