honeykiq 1.1.0.pre → 1.1.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: 52c98d7685025080d69c27b4639144cbb78c1f5405a3fb440652e3836252557c
4
- data.tar.gz: 1d792568a79281e6f41f3a92e4d3e060ba73b473e0d0baa3195befdafaf55438
3
+ metadata.gz: 29a3d18dbdcd28d505474e7066089b0bbde7b9db3faa0b994fbc0e54fa412dc2
4
+ data.tar.gz: b31189efcefaabde05722510097b1ad746c92f542f4e749993c94d775223af9e
5
5
  SHA512:
6
- metadata.gz: 3a4fbae5b7c9c60678ce677be5388f5887691e577f3a219a4280b533330e8fec03c689c8de0856b75c781dbad3181ee9c0469af79e09ee72dce9a8b25770f177
7
- data.tar.gz: 6f26f2a3b1e836f800be3f2fca13a9da1199875551b3c717c0297dcda5e2f7e51a8a0a6518a40a2e664bff256d2e8d51a06574563a6f401a3f70023fd585808f
6
+ metadata.gz: '0495bb5f2d2ba5f2848e4dbe8a58c4d8d97c7c905bca2d33b2692a33ac33ad56ec49ff0368a52f0bbc8265ea971e356a49237bd8aa006efcbc40245110362667'
7
+ data.tar.gz: 7c702869ffdcc5bedcad9145c3d9979a63d96fa8540b01140272ee743d5b825839ace3dfe478fc2f2b7762ea31050b69001720f8d4dd790d82e47e44f7031730
data/CHANGELOG.md CHANGED
@@ -5,6 +5,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
5
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
7
  ## [Unreleased]
8
+
9
+ ## [1.1.0]
10
+ ### Added
11
+ - Honeycomb beeline support (#9)
12
+
8
13
  ## [1.0.0]
9
14
  ### Added
10
15
  - CODE_OF_CONDUCT.md
@@ -28,7 +33,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
28
33
  ### Removed
29
34
  - `Honeykiq.periodic_reporter`. (Use `Honeykiq::PeriodicReporter.new` instead.)
30
35
 
31
- [Unreleased]: https://github.com/carwow/honeykiq/compare/v1.0.0...HEAD
36
+ [Unreleased]: https://github.com/carwow/honeykiq/compare/v1.1.0...HEAD
37
+ [1.1.0]: https://github.com/carwow/honeykiq/compare/v1.0.0...v1.1.0
32
38
  [1.0.0]: https://github.com/carwow/honeykiq/compare/v0.3.1...v1.0.0
33
39
  [0.3.1]: https://github.com/carwow/honeykiq/compare/v0.3.0...v0.3.1
34
40
  [0.3.0]: https://github.com/carwow/honeykiq/compare/v0.2.0...v0.3.0
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- honeykiq (1.1.0.pre)
4
+ honeykiq (1.1.0)
5
5
  sidekiq
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -32,11 +32,13 @@ to see what kind of information it sends.
32
32
  [server_middleware.rb]: https://github.com/carwow/honeykiq/blob/master/lib/honeykiq/server_middleware.rb
33
33
 
34
34
  ```ruby
35
- # Configure Honeycomb and add the middleware to Sidekiq chain
35
+ # Configure Honeycomb beeline
36
36
  Honeycomb.configure do |config|
37
37
  config.writekey = ENV.fetch('HONEYCOMB_WRITE_KEY')
38
38
  config.dataset = ENV.fetch('HONEYCOMB_DATASET')
39
39
  end
40
+
41
+ # Add the middleware to Sidekiq chain
40
42
  Sidekiq.configure_server do |config|
41
43
  config.server_middleware do |chain|
42
44
  chain.add Honeykiq::ServerMiddleware
@@ -47,7 +49,7 @@ end
47
49
  Sidekiq.configure_server do |config|
48
50
  config.server_middleware do |chain|
49
51
  chain.add Honeykiq::ServerMiddleware,
50
- honey_client: Libhoney::Client.new(
52
+ libhoney: Libhoney::Client.new(
51
53
  writekey: ENV.fetch('HONEYCOMB_WRITE_KEY'),
52
54
  dataset: ENV.fetch('HONEYCOMB_DATASET')
53
55
  )
@@ -56,7 +58,7 @@ end
56
58
  ```
57
59
 
58
60
  You can add your own data or functions to the Honeycomb event by subclassing
59
- `Honeykiq::ServerMiddleware`, and overriding the the `extra_fields` method with
61
+ `Honeykiq::ServerMiddleware`, and overriding the `extra_fields` method with
60
62
  your own hash. The contents will be serialized into individual items in the
61
63
  event:
62
64
 
@@ -72,16 +74,16 @@ end
72
74
 
73
75
  Sidekiq.configure_server do |config|
74
76
  config.server_middleware do |chain|
75
- chain.add MyServerMiddleware, honey_client: ...
76
- ...
77
+ chain.add MyServerMiddleware
78
+ end
79
+ end
77
80
  ```
78
81
 
79
82
  **Note:** If you have long running jobs, an event is only sent to Honeycomb
80
83
  when the job finishes. Therefore, it may appear as though no jobs are currently
81
84
  running. Additionally, if the process receives a `SIGKILL` then no event is
82
85
  sent about that job, and the job may keep retrying without appearing in
83
- Honeycomb. The `PeriodicReporter` should help with this, but we are thinking of
84
- a nicer approach.
86
+ Honeycomb. The `PeriodicReporter` provides visibility for these cases.
85
87
 
86
88
  ### Honeykiq::PeriodicReporter
87
89
 
@@ -98,37 +100,27 @@ type.
98
100
 
99
101
  A setup using [clockwork] to report every 30 seconds would look like this:
100
102
 
101
-
102
103
  ```ruby
104
+ require 'honeycomb-beeline'
103
105
  require 'clockwork'
104
- require 'libhoney'
105
106
  require 'honeykiq'
106
107
 
107
- module Clockwork
108
- every(30, 'Honeykiq', thread: true) { SidekiqHealth.report }
108
+ Honeycomb.configure do |config|
109
+ config.writekey = ENV.fetch('HONEYCOMB_WRITE_KEY')
110
+ config.dataset = ENV.fetch('HONEYCOMB_DATASET')
109
111
  end
110
112
 
111
- module SidekiqHealth
112
- def self.report
113
- reporter.report
114
- end
115
-
116
- def self.reporter
117
- @reporter ||= Honeykiq::PeriodicReporter.new(honey_client: honey_client)
118
- end
119
-
120
- def self.honey_client
121
- Libhoney::Client.new(
122
- writekey: ENV.fetch('HONEYCOMB_WRITE_KEY'),
123
- dataset: ENV.fetch('HONEYCOMB_DATASET')
124
- )
113
+ module Clockwork
114
+ every(30, 'Honeykiq::PeriodicReporter') do
115
+ Honeykiq::PeriodicReporter.new.report
125
116
  end
126
117
  end
127
118
  ```
128
119
 
129
120
  ## Contributing
130
121
 
131
- [Pull requests](https://github.com/carwow/honeykiq/pulls) are very welcome! Don't forget to add yourself to [CONTRIBUTORS.txt].
122
+ [Pull requests](https://github.com/carwow/honeykiq/pulls) are very welcome!
123
+ Don't forget to add yourself to [CONTRIBUTORS.txt].
132
124
 
133
125
  Please report bugs in a [new issue](https://github.com/carwow/honeykiq/issues/new).
134
126
 
@@ -136,6 +128,7 @@ Please report bugs in a [new issue](https://github.com/carwow/honeykiq/issues/ne
136
128
 
137
129
  ## License
138
130
 
139
- The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
131
+ The gem is available as open source under the terms of the
132
+ [MIT License](https://opensource.org/licenses/MIT).
140
133
 
141
134
  [clockwork]: https://github.com/Rykian/clockwork
@@ -2,8 +2,8 @@ require 'sidekiq/api'
2
2
 
3
3
  module Honeykiq
4
4
  class PeriodicReporter
5
- def initialize(honey_client:)
6
- @honey_client = honey_client
5
+ def initialize(libhoney: nil, honey_client: nil)
6
+ @libhoney = libhoney || honey_client || Honeycomb.libhoney
7
7
  end
8
8
 
9
9
  def report(&extra)
@@ -14,10 +14,10 @@ module Honeykiq
14
14
 
15
15
  private
16
16
 
17
- attr_reader :honey_client
17
+ attr_reader :libhoney
18
18
 
19
19
  def send_instance_event(&extra)
20
- honey_client.event.add(
20
+ libhoney.event.add(
21
21
  type: :instance,
22
22
  **instance_stats,
23
23
  **redis_stats,
@@ -57,7 +57,7 @@ module Honeykiq
57
57
  end
58
58
 
59
59
  def send_process_event(process, &extra)
60
- honey_client.event.add(
60
+ libhoney.event.add(
61
61
  type: :process,
62
62
  'meta.dyno': process['hostname'],
63
63
  'meta.process_id': process['pid'],
@@ -68,7 +68,7 @@ module Honeykiq
68
68
  end
69
69
 
70
70
  def send_queue_event(queue, &extra)
71
- honey_client.event.add(
71
+ libhoney.event.add(
72
72
  type: :queue,
73
73
  'queue.name': queue.name,
74
74
  'queue.latency_sec': queue.latency.to_f,
@@ -2,20 +2,16 @@ require 'sidekiq/api'
2
2
 
3
3
  module Honeykiq
4
4
  class ServerMiddleware
5
- def initialize(options = {})
6
- @honey_client = options[:honey_client]
5
+ def initialize(libhoney: nil, honey_client: nil)
6
+ @libhoney = libhoney || honey_client
7
7
  end
8
8
 
9
9
  def call(_worker, msg, queue_name)
10
10
  job = Sidekiq::Job.new(msg, queue_name)
11
+ queue = Sidekiq::Queue.new(queue_name)
11
12
 
12
13
  start_span(name: job.display_class) do |event|
13
- call_with_event(event, job, queue_name) { yield }
14
- rescue StandardError => error
15
- on_error(event, error)
16
- raise
17
- ensure
18
- event&.add(extra_fields)
14
+ call_with_event(event, job, queue) { yield }
19
15
  end
20
16
  end
21
17
 
@@ -25,9 +21,15 @@ module Honeykiq
25
21
 
26
22
  private
27
23
 
24
+ attr_reader :libhoney
25
+
26
+ def libhoney?
27
+ !!libhoney
28
+ end
29
+
28
30
  def start_span(name:)
29
- if @honey_client
30
- @honey_client.event.tap do |event|
31
+ if libhoney?
32
+ libhoney.event.tap do |event|
31
33
  duration_ms(event) { yield event }
32
34
  ensure
33
35
  event.send
@@ -37,17 +39,22 @@ module Honeykiq
37
39
  end
38
40
  end
39
41
 
40
- def call_with_event(event, job, queue_name)
41
- event.add(default_fields(job, queue_name))
42
+ def call_with_event(event, job, queue)
43
+ event.add(default_fields(job, queue))
42
44
  yield
43
45
  event.add_field(:'job.status', 'finished')
46
+ rescue StandardError => error
47
+ on_error(event, error)
48
+ raise
49
+ ensure
50
+ event.add(extra_fields)
44
51
  end
45
52
 
46
- def default_fields(job, queue_name)
53
+ def default_fields(job, queue)
47
54
  {
48
55
  type: :job,
49
56
  **job_fields(job),
50
- **queue_fields(Sidekiq::Queue.new(queue_name)),
57
+ **queue_fields(queue),
51
58
  'meta.thread_id': Thread.current.object_id
52
59
  }
53
60
  end
@@ -82,7 +89,7 @@ module Honeykiq
82
89
  return unless event
83
90
 
84
91
  event.add_field(:'job.status', 'failed')
85
- return unless @honey_client
92
+ return unless libhoney?
86
93
 
87
94
  event.add(
88
95
  'error.class': error.class.name,
@@ -1,3 +1,3 @@
1
1
  module Honeykiq
2
- VERSION = '1.1.0.pre'.freeze
2
+ VERSION = '1.1.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: honeykiq
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0.pre
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - carwow Developers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-10 00:00:00.000000000 Z
11
+ date: 2020-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sidekiq
@@ -148,9 +148,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
148
148
  version: '0'
149
149
  required_rubygems_version: !ruby/object:Gem::Requirement
150
150
  requirements:
151
- - - ">"
151
+ - - ">="
152
152
  - !ruby/object:Gem::Version
153
- version: 1.3.1
153
+ version: '0'
154
154
  requirements: []
155
155
  rubygems_version: 3.1.2
156
156
  signing_key: