prometheus-client-mmap 0.7.0.beta2 → 0.7.0.beta3

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: 82b0822293d2669014f8790678dc824da3281383
4
- data.tar.gz: 7b9d4e382530810a0db3ea9074afd23cd806d0d2
3
+ metadata.gz: cbf674d68c795209cafac2fd8084b48243ce83bf
4
+ data.tar.gz: 57ce2be5c369876f6f0783cbb33b5a0b8f6f1ebd
5
5
  SHA512:
6
- metadata.gz: e100f0a72eadec532716e375bca0c7899484cb62f7fca463730e7cdcdf09fb90517de079642e66dbceef8b0e1013d845b165a5c5a9a0d5f91897ee81ac78f8e5
7
- data.tar.gz: 36379031c3797f6a88e2a2376e4341de1f0dbc057322c25b8881ec4679117bcd5b56a7aef010ea18e727d7e1fb42d04f43b946c77af543f25615397d8e33c08d
6
+ metadata.gz: 41b21a3ccbcf1ba6b7e96d9c3d83f66e214f4818f06a6ba4b7ffebb057a81a6204156e37e0aac45607e593c41fe87d30564fce30362877c54241f916ad4f7a0c
7
+ data.tar.gz: dfe1456e7b4d279a981efb28080e4616e473700a5fc5e44f4bc51325bc580785b196cc1bfb89ea66e1142c2d7eadd08f57a263cbbdeefc2662e82f5d85e89373
@@ -85,38 +85,13 @@ module Prometheus
85
85
  else # all/liveall
86
86
  samples[[name, labels]] = value
87
87
  end
88
- when :histogram
89
- bucket = labels.select{|l| l[0] == 'le' }.map {|k, v| v.to_f}.first
90
- if bucket
91
- without_le = labels.select{ |l| l[0] != 'le' }
92
- b = buckets.fetch(without_le, {})
93
- v = b.fetch(bucket, 0.0) + value
94
- if !buckets.has_key?(without_le)
95
- buckets[without_le] = {}
96
- end
97
- buckets[without_le][bucket] = v
98
- else
99
- s = samples.fetch([name, labels], 0.0)
100
- samples[[name, labels]] = s + value
101
- end
102
88
  else
103
- # Counter and Summary.
89
+ # Counter, Histogram and Summary.
90
+ without_pid = labels.select{ |l| l[0] != 'pid' }
104
91
  s = samples.fetch([name, without_pid], 0.0)
105
92
  samples[[name, without_pid]] = s + value
106
93
  end
107
94
 
108
- if metric[:type] == :histogram
109
- buckets.each do |labels, values|
110
- acc = 0.0
111
- values.sort.each do |bucket, value|
112
- acc += value
113
- # TODO: handle Infinity
114
- samples[[metric[:metric_name] + '_bucket', labels + [['le', bucket.to_s]]]] = acc
115
- end
116
- samples[[metric[:metric_name] + '_count', labels]] = acc
117
- end
118
- end
119
-
120
95
  metric[:samples] = samples.map do |name_labels, value|
121
96
  name, labels = name_labels
122
97
  [name, labels.to_h, value]
@@ -13,13 +13,12 @@ module Prometheus
13
13
  attr_accessor :sum, :total
14
14
 
15
15
  def initialize(type, name, labels, buckets)
16
- @sum = ValueClass.new(type, name, name.to_s + '_sum', labels)
16
+ @sum = ValueClass.new(type, name, "#{name}_sum", labels)
17
17
  # TODO: get rid of total and use +Inf bucket instead.
18
- @total = ValueClass.new(type, name, name.to_s + '_count', labels)
18
+ @total = ValueClass.new(type, name, "#{name}_count", labels)
19
19
 
20
20
  buckets.each do |bucket|
21
- # TODO: check that there are no user-defined "le" labels.
22
- self[bucket] = ValueClass.new(type, name, name.to_s + '_bucket', labels.merge({'le' => bucket.to_s}))
21
+ self[bucket] = ValueClass.new(type, name, "#{name}_bucket", labels.merge({:le => bucket.to_s}))
23
22
  end
24
23
  end
25
24
 
@@ -61,10 +60,6 @@ module Prometheus
61
60
  end
62
61
 
63
62
  def observe(labels, value)
64
- if labels[:le]
65
- raise ArgumentError, 'Label with name "le" is not permitted'
66
- end
67
-
68
63
  label_set = label_set_for(labels)
69
64
  synchronize { @values[label_set].observe(value) }
70
65
  end
@@ -13,7 +13,8 @@ module Prometheus
13
13
  class InvalidLabelError < LabelSetError; end
14
14
  class ReservedLabelError < LabelSetError; end
15
15
 
16
- def initialize
16
+ def initialize(reserved_labels = [])
17
+ @reserved_labels = (reserved_labels + RESERVED_LABELS).freeze
17
18
  @validated = {}
18
19
  end
19
20
 
@@ -60,7 +61,7 @@ module Prometheus
60
61
  end
61
62
 
62
63
  def validate_reserved_key(key)
63
- return true unless RESERVED_LABELS.include?(key)
64
+ return true unless @reserved_labels.include?(key)
64
65
 
65
66
  raise ReservedLabelError, "#{key} is reserved"
66
67
  end
@@ -12,7 +12,14 @@ module Prometheus
12
12
 
13
13
  def initialize(name, docstring, base_labels = {})
14
14
  @mutex = Mutex.new
15
- @validator = LabelSetValidator.new
15
+ case type
16
+ when :summary
17
+ @validator = LabelSetValidator.new(['quantile'])
18
+ when :histogram
19
+ @validator = LabelSetValidator.new(['le'])
20
+ else
21
+ @validator = LabelSetValidator.new
22
+ end
16
23
  @values = Hash.new { |hash, key| hash[key] = default(key) }
17
24
 
18
25
  validate_name(name)
@@ -41,6 +41,10 @@ module Prometheus
41
41
  )
42
42
  @durations = @registry.summary(
43
43
  :http_request_duration_seconds,
44
+ 'A summary of the response latency.',
45
+ )
46
+ @durations_hist = @registry.histogram(
47
+ :http_req_duration_seconds,
44
48
  'A histogram of the response latency.',
45
49
  )
46
50
  end
@@ -72,8 +76,10 @@ module Prometheus
72
76
  def record(labels, duration)
73
77
  @requests.increment(labels)
74
78
  @durations.observe(labels, duration)
75
- rescue
76
- # TODO: log unexpected exception during request recording
79
+ @durations_hist.observe(labels, duration)
80
+ rescue => exception
81
+ @exceptions.increment(exception: exception.class.name)
82
+ raise
77
83
  nil
78
84
  end
79
85
  end
@@ -14,17 +14,30 @@ module Prometheus
14
14
  class Value < Hash
15
15
  attr_accessor :sum, :total
16
16
 
17
- def initialize(name, labels, estimator)
18
- @sum = ValueClass.new(name, name + '_sum', labels, estimator.sum)
19
- @total = ValueClass.new(name, name + '_count', labels, estimator.observations)
17
+ def initialize(type, name, labels)
18
+ @sum = ValueClass.new(type, name, "#{name}_sum", labels)
19
+ @total = ValueClass.new(type, name, "#{name}_count", labels)
20
+ @estimator = Quantile::Estimator.new
21
+ @estimator.invariants.each do |invariant|
22
+ self[invariant.quantile] = ValueClass.new(type, name, "#{name}_summary", labels.merge({:quantile => invariant.quantile}))
23
+ end
24
+ end
20
25
 
21
- estimator.invariants.each do |invariant|
22
- self[invariant.quantile] = ValueClass.new(type, name, labels, estimator.query(invariant.quantile), nil)
26
+ def observe(value)
27
+ @sum.increment(value)
28
+ @total.increment()
29
+ # TODO: The quantile info is innaccurate as it only contains
30
+ # observations per-process. What needs to happen is for
31
+ # observations to be read into the estimator and then reported.
32
+ # Alternatively it could be done in the exporter.
33
+ @estimator.observe(value)
34
+ @estimator.invariants.each do |invariant|
35
+ self[invariant.quantile].set(@estimator.query(invariant.quantile))
23
36
  end
24
37
  end
25
38
  end
26
39
 
27
- def initialize(name, docstring, base_labels = {}, multiprocess_mode)
40
+ def initialize(name, docstring, base_labels = {})
28
41
  super(name, docstring, base_labels)
29
42
  end
30
43
 
@@ -45,7 +58,7 @@ module Prometheus
45
58
  @validator.valid?(labels)
46
59
 
47
60
  synchronize do
48
- Value.new(@values[labels])
61
+ Value.new(@values[labels].sum)
49
62
  end
50
63
  end
51
64
 
@@ -53,7 +66,7 @@ module Prometheus
53
66
  def values
54
67
  synchronize do
55
68
  @values.each_with_object({}) do |(labels, value), memo|
56
- memo[labels] = value
69
+ memo[labels] = value.sum
57
70
  end
58
71
  end
59
72
  end
@@ -61,7 +74,7 @@ module Prometheus
61
74
  private
62
75
 
63
76
  def default(labels)
64
- Value.new(type, @name, labels, Quantile::Estimator.new)
77
+ Value.new(type, @name, labels)
65
78
  end
66
79
  end
67
80
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Prometheus
4
4
  module Client
5
- VERSION = '0.7.0.beta2'
5
+ VERSION = '0.7.0.beta3'
6
6
  end
7
7
  end
@@ -0,0 +1,11 @@
1
+ # encoding: UTF-8
2
+
3
+ module Prometheus
4
+ module Client
5
+ <<<<<<< HEAD
6
+ VERSION = '0.7.0.beta3'
7
+ =======
8
+ VERSION = '0.7.0.beta2'
9
+ >>>>>>> prometheus-client-mmap
10
+ end
11
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prometheus-client-mmap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0.beta2
4
+ version: 0.7.0.beta3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tobias Schmidt
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-09 00:00:00.000000000 Z
11
+ date: 2017-05-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: quantile
@@ -47,6 +47,7 @@ files:
47
47
  - lib/prometheus/client/summary.rb
48
48
  - lib/prometheus/client/valuetype.rb
49
49
  - lib/prometheus/client/version.rb
50
+ - lib/prometheus/client/version.rb.orig
50
51
  homepage: https://github.com/pchojnacki/client_ruby
51
52
  licenses:
52
53
  - Apache 2.0