yabeda-latency 0.1.2 → 1.0.0

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: 7129185f3b35549c6d47c870f34f802b761d1c50d69576d4cbe7741f03681408
4
- data.tar.gz: 351cc540bfd2dd6b9e154f7e59f6bcd9ce44990c041475426f6dded4c86a3725
3
+ metadata.gz: 46a9033d5d31b43832cbe2a31fb0c9cb7ecc902ad3491b395bfdcdc5236992f1
4
+ data.tar.gz: cf505472b9c141f73b2a62f37e212e22574ece21878c9645fdf48a0fdb8ee436
5
5
  SHA512:
6
- metadata.gz: 7769f03056bf2172b72168908ce4399eeac3d41d97fc0b744a8a3d9ea9184f61f0cdd7ec22bfc80e7c405f731684e5aa8d7b589d91e2a1d4e53c1b933cf8c575
7
- data.tar.gz: 8cfdfd3687096f837d7f49d9f8cedee8e91c2d36fe8bc50d50fde3b29f72c1ae67efff8dfece3596aac3b30ac7ad24b05dc304391b1dc7b75a4901d1d1942ff9
6
+ metadata.gz: 9f7c53fda1382f3e19cd9f9d4680e6686759e399bec66a5135f6434593df6894a5ddd54b4a20b49bff16fa18830e30e31a4a73f3f8efc9ba4daf1529fa34e318
7
+ data.tar.gz: 92e3d71a789e64944846d9ae217fd1891c7f5c888e0ccc63c13b18d936dc9013eda3f795ae8bca61dcf1d9d4c8bf0c2215ad452cee3b77900d8850b646f73a5c
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Yabeda
4
4
  module Latency
5
- LATENCY_BUCKETS = [0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10].freeze
5
+ LATENCY_BUCKETS = [0.0025, 0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5].freeze
6
6
  EMPTY_HASH = {}.freeze
7
7
  REQUEST_START_HEADER = 'HTTP_X_REQUEST_START'
8
8
 
@@ -14,14 +14,17 @@ module Yabeda
14
14
  class Collector
15
15
  attr_reader :app, :registry
16
16
 
17
- def initialize(app, metrics_prefix: :http_server)
17
+ def initialize(app, metrics_prefix: :http_server, debug: false)
18
18
  @app = app
19
19
  @metrics_prefix = metrics_prefix
20
+ @debug = debug
20
21
 
21
22
  init_request_metrics
22
23
  end
23
24
 
24
25
  def call(env) # :nodoc:
26
+ return @app.call(env) if env['rack.warming_up']
27
+
25
28
  now = Time.now
26
29
  observe(env, now)
27
30
  @app.call(env)
@@ -32,8 +35,8 @@ module Yabeda
32
35
  def observe(env, now)
33
36
  latency_seconds = calculate_latency_seconds(env, now)
34
37
  measure(latency_seconds) unless latency_seconds.nil?
35
- rescue StandardError
36
- # ok
38
+ rescue StandardError => e
39
+ warn "Could not observe latency (#{e.message})" if @debug
37
40
  end
38
41
 
39
42
  # rubocop:disable Metrics/MethodLength
@@ -43,7 +46,7 @@ module Yabeda
43
46
  Yabeda.configure do
44
47
  group prefix do
45
48
  histogram(
46
- :request_latency_seconds,
49
+ :request_latency,
47
50
  comment: 'The time for the HTTP request to reach Rack application',
48
51
  unit: :seconds,
49
52
  per: :field,
@@ -56,7 +59,7 @@ module Yabeda
56
59
  # rubocop:enable Metrics/MethodLength
57
60
 
58
61
  def metric
59
- @metric ||= Yabeda.__send__(@metrics_prefix).request_latency_seconds
62
+ @metric ||= Yabeda.__send__(@metrics_prefix).request_latency
60
63
  end
61
64
 
62
65
  def measure(latency_seconds)
@@ -67,11 +70,13 @@ module Yabeda
67
70
 
68
71
  def calculate_latency_seconds(env, now)
69
72
  raw_header_value = env[REQUEST_START_HEADER]
70
- request_start_timestamp_ms = extract_timestamp_from_header_value(raw_header_value)
73
+ request_start_timestamp_s = extract_timestamp_from_header_value(raw_header_value)
74
+
75
+ puts "X-Request-Start: #{raw_header_value}, Now: #{now.to_f}" if @debug
71
76
 
72
- return unless request_start_timestamp_ms
77
+ return unless request_start_timestamp_s
73
78
 
74
- now.to_f - (request_start_timestamp_ms / 1000)
79
+ now.to_f - request_start_timestamp_s
75
80
  end
76
81
 
77
82
  def extract_timestamp_from_header_value(value)
@@ -86,7 +91,7 @@ module Yabeda
86
91
 
87
92
  return unless str
88
93
 
89
- str.to_i
94
+ str.to_f
90
95
  end
91
96
  end
92
97
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Yabeda
4
4
  module Latency
5
- VERSION = '0.1.2'
5
+ VERSION = '1.0.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yabeda-latency
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ian Ker-Seymer
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-02-12 00:00:00.000000000 Z
11
+ date: 2021-05-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: yabeda
@@ -67,7 +67,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  requirements: []
70
- rubygems_version: 3.0.3
70
+ rubygems_version: 3.1.2
71
71
  signing_key:
72
72
  specification_version: 4
73
73
  summary: Collects metrics to monitor latency of HTTP requests