signalfx-tracing 1.1.0 → 1.2.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.
- data/README.md +30 -0
- data/bin/sfx-rb-trace-bootstrap +1 -0
- data/gem.deps.rb +1 -0
- data/lib/signalfx/tracing.rb +5 -3
- data/lib/signalfx/tracing/instrumentation/sidekiq.rb +35 -0
- data/lib/signalfx/tracing/register.rb +1 -0
- data/lib/signalfx/tracing/version.rb +1 -1
- data/signalfx-tracing.gemspec +1 -1
- metadata +33 -20
- checksums.yaml +0 -7
data/README.md
CHANGED
@@ -140,6 +140,7 @@ When interfacing with these web servers as a Rack application, please configure
|
|
140
140
|
| [Redis](#redis) | >= 4.0.0 |
|
141
141
|
| [RestClient](#restclient) | >= 1.5.0 |
|
142
142
|
| [Sequel](#sequel) | >= 3.47.0 |
|
143
|
+
| [Sidekiq](#sidekiq) | >= 0.7.0 |
|
143
144
|
| [Sinatra](#sinatra) | >= 1.0.0 |
|
144
145
|
|
145
146
|
## Active Record
|
@@ -460,6 +461,35 @@ Arguments:
|
|
460
461
|
- `tracer`: Optional custom tracer for this instrumentation
|
461
462
|
- Default: `OpenTracing.global_tracer`
|
462
463
|
|
464
|
+
## Sidekiq
|
465
|
+
|
466
|
+
Sidekiq instrumentation traces worker job submissions and execution via [Sidekiq middleware](https://github.com/mperham/sidekiq/wiki/Middleware).
|
467
|
+
The instrumenter registers both client and server middleware that use job metadata to
|
468
|
+
represent all job submissions and their invocations. Trace context propagation adds
|
469
|
+
to this job metadata to unifiy distributed client and server requests and processing.
|
470
|
+
|
471
|
+
The source for this instrumentation is located [here](https://github.com/signalfx/ruby-sidekiq-tracer).
|
472
|
+
|
473
|
+
### Usage
|
474
|
+
|
475
|
+
```bash
|
476
|
+
$ # install the instrumentation if not done previously
|
477
|
+
$ sfx-rb-trace-bootstrap -i sidekiq
|
478
|
+
```
|
479
|
+
|
480
|
+
```ruby
|
481
|
+
SignalFx::Tracing::Instrumenter.configure do |p|
|
482
|
+
p.instrument(:Sidekiq, propagate: false)
|
483
|
+
end
|
484
|
+
```
|
485
|
+
|
486
|
+
Arguments:
|
487
|
+
- `tracer`: Optional custom tracer for this instrumentation
|
488
|
+
- Default: `OpenTracing.global_tracer`
|
489
|
+
- `propagate`: Optional boolean to enable/disable trace context injection via job metadata
|
490
|
+
- Default: `true`
|
491
|
+
|
492
|
+
|
463
493
|
## Sinatra
|
464
494
|
|
465
495
|
Sinatra instrumentation traces requests and template rendering. The instrumenter
|
data/bin/sfx-rb-trace-bootstrap
CHANGED
@@ -16,6 +16,7 @@ instrumentations = {
|
|
16
16
|
"redis" => ["redis-instrumentation", "~> 0.1.1"],
|
17
17
|
"restclient" => ["restclient-instrumentation", "~> 0.1.1"],
|
18
18
|
"sequel" => ["sequel-instrumentation", "~> 0.1.0"],
|
19
|
+
"sidekiq" => ["sfx-sidekiq-opentracing", "~> 0.0.3"],
|
19
20
|
"sinatra" => ["sinatra-instrumentation", "~> 0.1.2"]
|
20
21
|
}
|
21
22
|
|
data/gem.deps.rb
CHANGED
@@ -9,6 +9,7 @@ group :instrumentations do
|
|
9
9
|
gem 'redis-instrumentation', '~> 0.1.1'
|
10
10
|
gem 'restclient-instrumentation', '~> 0.1.1'
|
11
11
|
gem 'sequel-instrumentation', '~> 0.1.0'
|
12
|
+
gem 'sfx-sidekiq-opentracing', '~> 0.0.3'
|
12
13
|
gem 'signalfx-elasticsearch-instrumentation', '~> 0.1.0'
|
13
14
|
gem 'signalfx-faraday-instrumentation', '~> 0.1.1'
|
14
15
|
gem 'sinatra-instrumentation', '~> 0.1.2'
|
data/lib/signalfx/tracing.rb
CHANGED
@@ -21,7 +21,7 @@ module SignalFx
|
|
21
21
|
@ingest_url = ingest_url
|
22
22
|
@service_name = service_name
|
23
23
|
@access_token = access_token
|
24
|
-
set_tracer(tracer: tracer, service_name: service_name, access_token: access_token)
|
24
|
+
set_tracer(tracer: tracer, service_name: service_name, access_token: access_token) if @tracer.nil?
|
25
25
|
|
26
26
|
if auto_instrument
|
27
27
|
Register.available_libs.each_pair do |key, value|
|
@@ -55,10 +55,12 @@ module SignalFx
|
|
55
55
|
@reporter = Jaeger::Client::Reporters::RemoteReporter.new(sender: @http_sender, flush_interval: 1)
|
56
56
|
|
57
57
|
injectors = {
|
58
|
-
OpenTracing::FORMAT_RACK => [Jaeger::Client::Injectors::B3RackCodec]
|
58
|
+
OpenTracing::FORMAT_RACK => [Jaeger::Client::Injectors::B3RackCodec],
|
59
|
+
OpenTracing::FORMAT_TEXT_MAP => [Jaeger::Client::Injectors::B3RackCodec]
|
59
60
|
}
|
60
61
|
extractors = {
|
61
|
-
OpenTracing::FORMAT_RACK => [Jaeger::Client::Extractors::B3RackCodec]
|
62
|
+
OpenTracing::FORMAT_RACK => [Jaeger::Client::Extractors::B3RackCodec],
|
63
|
+
OpenTracing::FORMAT_TEXT_MAP => [Jaeger::Client::Extractors::B3TextMapCodec]
|
62
64
|
}
|
63
65
|
|
64
66
|
@tracer = Jaeger::Client.build(
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module SignalFx
|
2
|
+
module Tracing
|
3
|
+
module Instrumenter
|
4
|
+
module Sidekiq
|
5
|
+
|
6
|
+
Register.add_lib :Sidekiq, self
|
7
|
+
|
8
|
+
class << self
|
9
|
+
def instrument(opts = {})
|
10
|
+
return if @instrumented
|
11
|
+
begin
|
12
|
+
require 'sidekiq'
|
13
|
+
rescue LoadError
|
14
|
+
return
|
15
|
+
end
|
16
|
+
|
17
|
+
begin
|
18
|
+
require 'sidekiq/tracer'
|
19
|
+
rescue LoadError => e
|
20
|
+
puts e.message
|
21
|
+
return
|
22
|
+
end
|
23
|
+
|
24
|
+
::Sidekiq::Tracer.instrument(
|
25
|
+
tracer: opts.fetch(:tracer, OpenTracing.global_tracer),
|
26
|
+
opts: { propagate_context: opts.fetch(:propagate, true) }
|
27
|
+
)
|
28
|
+
@instrumented = true
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
data/signalfx-tracing.gemspec
CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
|
|
25
25
|
|
26
26
|
# TODO pin versions once consistent across all dependencies
|
27
27
|
spec.add_dependency "opentracing", "> 0.3.0"
|
28
|
-
spec.add_dependency "jaeger-client", "~> 0.
|
28
|
+
spec.add_dependency "jaeger-client", "~> 1.0.0"
|
29
29
|
|
30
30
|
# We are no longer setting all available instrumentations as dependencies.
|
31
31
|
# Manual installation via bootstrapper or gem.deps.rb is now required.
|
metadata
CHANGED
@@ -1,83 +1,94 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: signalfx-tracing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- SignalFx, Inc.
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2019-
|
12
|
+
date: 2019-11-20 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: bundler
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
|
-
- -
|
19
|
+
- - ~>
|
18
20
|
- !ruby/object:Gem::Version
|
19
21
|
version: '1.16'
|
20
22
|
type: :development
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
|
-
- -
|
27
|
+
- - ~>
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: '1.16'
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
31
|
name: rake
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
30
34
|
requirements:
|
31
|
-
- -
|
35
|
+
- - ~>
|
32
36
|
- !ruby/object:Gem::Version
|
33
37
|
version: '10.0'
|
34
38
|
type: :development
|
35
39
|
prerelease: false
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
37
42
|
requirements:
|
38
|
-
- -
|
43
|
+
- - ~>
|
39
44
|
- !ruby/object:Gem::Version
|
40
45
|
version: '10.0'
|
41
46
|
- !ruby/object:Gem::Dependency
|
42
47
|
name: opentracing
|
43
48
|
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
44
50
|
requirements:
|
45
|
-
- -
|
51
|
+
- - '>'
|
46
52
|
- !ruby/object:Gem::Version
|
47
53
|
version: 0.3.0
|
48
54
|
type: :runtime
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
51
58
|
requirements:
|
52
|
-
- -
|
59
|
+
- - '>'
|
53
60
|
- !ruby/object:Gem::Version
|
54
61
|
version: 0.3.0
|
55
62
|
- !ruby/object:Gem::Dependency
|
56
63
|
name: jaeger-client
|
57
64
|
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
58
66
|
requirements:
|
59
|
-
- -
|
67
|
+
- - ~>
|
60
68
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.
|
69
|
+
version: 1.0.0
|
62
70
|
type: :runtime
|
63
71
|
prerelease: false
|
64
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
65
74
|
requirements:
|
66
|
-
- -
|
75
|
+
- - ~>
|
67
76
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.
|
77
|
+
version: 1.0.0
|
69
78
|
- !ruby/object:Gem::Dependency
|
70
79
|
name: nethttp-instrumentation
|
71
80
|
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
72
82
|
requirements:
|
73
|
-
- -
|
83
|
+
- - ~>
|
74
84
|
- !ruby/object:Gem::Version
|
75
85
|
version: 0.1.2
|
76
86
|
type: :runtime
|
77
87
|
prerelease: false
|
78
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
79
90
|
requirements:
|
80
|
-
- -
|
91
|
+
- - ~>
|
81
92
|
- !ruby/object:Gem::Version
|
82
93
|
version: 0.1.2
|
83
94
|
description:
|
@@ -88,7 +99,7 @@ executables:
|
|
88
99
|
extensions: []
|
89
100
|
extra_rdoc_files: []
|
90
101
|
files:
|
91
|
-
-
|
102
|
+
- .gitignore
|
92
103
|
- Gemfile
|
93
104
|
- LICENSE
|
94
105
|
- README.md
|
@@ -112,6 +123,7 @@ files:
|
|
112
123
|
- lib/signalfx/tracing/instrumentation/redis.rb
|
113
124
|
- lib/signalfx/tracing/instrumentation/restclient.rb
|
114
125
|
- lib/signalfx/tracing/instrumentation/sequel.rb
|
126
|
+
- lib/signalfx/tracing/instrumentation/sidekiq.rb
|
115
127
|
- lib/signalfx/tracing/instrumentation/sinatra.rb
|
116
128
|
- lib/signalfx/tracing/register.rb
|
117
129
|
- lib/signalfx/tracing/reporter/auto_reviving_async_reporter.rb
|
@@ -121,25 +133,26 @@ files:
|
|
121
133
|
homepage: https://github.com/signalfx/signalfx-ruby-tracing
|
122
134
|
licenses:
|
123
135
|
- Apache-2.0
|
124
|
-
metadata: {}
|
125
136
|
post_install_message:
|
126
137
|
rdoc_options: []
|
127
138
|
require_paths:
|
128
139
|
- lib
|
129
140
|
required_ruby_version: !ruby/object:Gem::Requirement
|
141
|
+
none: false
|
130
142
|
requirements:
|
131
|
-
- -
|
143
|
+
- - '>='
|
132
144
|
- !ruby/object:Gem::Version
|
133
145
|
version: '0'
|
134
146
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
147
|
+
none: false
|
135
148
|
requirements:
|
136
|
-
- -
|
149
|
+
- - '>='
|
137
150
|
- !ruby/object:Gem::Version
|
138
151
|
version: '0'
|
139
152
|
requirements: []
|
140
153
|
rubyforge_project:
|
141
|
-
rubygems_version:
|
154
|
+
rubygems_version: 1.8.25
|
142
155
|
signing_key:
|
143
|
-
specification_version:
|
156
|
+
specification_version: 3
|
144
157
|
summary: Auto-instrumentation framework for Ruby
|
145
158
|
test_files: []
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: ba2591d862b7c31748ce57e4011d1cf6e810811c
|
4
|
-
data.tar.gz: 5bd3c7c1d10012b3593f2eb9e474a2c4cd583fb4
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: 1270b6c9d02a08019277233f55f917a3257f05b559c5abaa31d0e10b1a8ea563caed502499a9642ec821d5d6cf33193a1e4cefb49c2c66035028a256660244ac
|
7
|
-
data.tar.gz: d03c8427a2c07913a447b831a2386150fe637025ce4114bb7dc1b72ec7596c410b0c2ecda3fd41a6082a6c821e7d27fe5edc2d789ba0782fda2fb40c0e928a90
|