signalfx-tracing 0.1.6 → 0.1.7

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: a2500771a323b85fcf4948487ea747b189cf33f617bc352588f85431e81c985d
4
- data.tar.gz: 650f933316eb342764780d85423453bce13f94c5f7f6a36b549a3cdb9a9a49fb
3
+ metadata.gz: cba6686f3650fe7e78107b4361557d19f6c113027130637e6a0fa951ab9572d6
4
+ data.tar.gz: 0016fde2502c3f243c5c8041763883ec1563ee50de05f273f5084916d0b8257f
5
5
  SHA512:
6
- metadata.gz: 67d3029eafada474fba523cc94bc590aa225785da84a343925b5cb07520bed3a4b673c7e58fa8de35c1f5e8bf4666042bd331aa89ca1d18c615c87a29bc2609c
7
- data.tar.gz: 652bf97c1b07d61d45c24c3f51446cd2018c84bd10e0ba79c9fbf8b684bec2ff0179b4614219f88197c792aeed0813e69f4232028a2335b2f024d2e6bf3b15c3
6
+ metadata.gz: fe820cfaebb70a14236557a2c0b3d56da086845b5bf32ad8fc423535d6abb3925b0777135ffffba44fc13d069c2540f8f0f42e2ad6c8c2b17d07b129bb4b22fa
7
+ data.tar.gz: d63db2fd564d7bda03cc6ac0a16b9dea32c75561d9a5c1facdbbeff99c246805dac1c77f65b82d440dd104584632038174d6976733e8ab5030b6af82cb1fb85e
data/README.md CHANGED
@@ -50,9 +50,6 @@ Valid lib names are listed below with the instrumentation documentation.
50
50
  - Default: `signalfx-ruby-tracing`
51
51
  - `access_token`: SignalFx access token for authentication.
52
52
  - Default: `''`
53
- - `fork_safe`: If `true`, makes the tracer safe to fork if events cannot
54
- be controlled
55
- - Default: `false`
56
53
 
57
54
  Environment variables can be used to configure `service_name` and `access_token`
58
55
  if not given to the `configure` method.
@@ -326,17 +323,3 @@ SignalFx::Tracing::Instrumenter.configure do |p|
326
323
  end
327
324
  ```
328
325
 
329
- ## Troubleshooting
330
-
331
- ### Forking
332
-
333
- If spans are no longer sent after forking a process, the span reporter thread
334
- has been lost while copying to the process.
335
-
336
- The reporter can be revived by calling `SignalFx::Tracing::Instrumenter.revive`
337
- in the newly created process.
338
-
339
- When the new process can't be handled directly, setting `fork_safe: true`
340
- when configuring the instrumentation will use a reporter that checks and revives
341
- itself every time a span is reported.
342
-
@@ -1,9 +1,5 @@
1
1
  require 'jaeger/client'
2
- require 'jaeger/client/injectors'
3
- require 'jaeger/client/extractors'
4
- require 'signalfx/tracing/reporter/auto_reviving_async_reporter'
5
2
  require 'signalfx/tracing/http_sender'
6
- require 'signalfx/tracing/tracer'
7
3
  require 'signalfx/tracing/register'
8
4
  require 'signalfx/tracing/compat'
9
5
  require 'thread'
@@ -15,18 +11,16 @@ module SignalFx
15
11
  class << self
16
12
 
17
13
  attr_reader :ingest_url, :service_name, :access_token
18
- attr_accessor :tracer
14
+ attr_accessor :tracer, :reporter
19
15
 
20
16
  def configure(tracer: nil,
21
17
  ingest_url: ENV['SIGNALFX_INGEST_URL'] || 'https://ingest.signalfx.com/v1/trace',
22
18
  service_name: ENV['SIGNALFX_SERVICE_NAME'] || "signalfx-ruby-tracing",
23
19
  access_token: ENV['SIGNALFX_ACCESS_TOKEN'],
24
- auto_instrument: false,
25
- fork_safe: false)
20
+ auto_instrument: false)
26
21
  @ingest_url = ingest_url
27
22
  @service_name = service_name
28
23
  @access_token = access_token
29
- @fork_safe = fork_safe
30
24
  set_tracer(tracer: tracer, service_name: service_name, access_token: access_token)
31
25
 
32
26
  if auto_instrument
@@ -58,9 +52,7 @@ module SignalFx
58
52
 
59
53
  encoder = Jaeger::Client::Encoders::ThriftEncoder.new(service_name: service_name)
60
54
  @http_sender = SignalFx::Tracing::HttpSenderWithFlag.new(url: @ingest_url, headers: headers, encoder: encoder)
61
- reporter = create_reporter(@http_sender)
62
-
63
- sampler = Jaeger::Client::Samplers::Const.new(true)
55
+ @reporter = Jaeger::Client::Reporters::RemoteReporter.new(sender: @http_sender, flush_interval: 1)
64
56
 
65
57
  injectors = {
66
58
  OpenTracing::FORMAT_RACK => [Jaeger::Client::Injectors::B3RackCodec]
@@ -69,29 +61,20 @@ module SignalFx
69
61
  OpenTracing::FORMAT_RACK => [Jaeger::Client::Extractors::B3RackCodec]
70
62
  }
71
63
 
72
- @tracer = SignalFx::Tracing::Tracer.new(reporter: reporter, sampler: sampler, injectors: injectors, extractors: extractors)
64
+ @tracer = Jaeger::Client.build(
65
+ service_name: service_name,
66
+ reporter: @reporter,
67
+ injectors: injectors,
68
+ extractors: extractors
69
+ )
73
70
  OpenTracing.global_tracer = @tracer
74
71
  else
75
72
  @tracer = tracer
76
73
  end
77
74
  end
78
75
 
79
- # This method will either use the default reporter, which will not check
80
- # for the sender thread, or if fork_safe is true then it will create the
81
- # self-reviving reporter. The main use for this is
82
- # when the process with the tracer gets forked or goes through some
83
- # other process that kills child threads.
84
- def create_reporter(sender)
85
- if @fork_safe
86
- SignalFx::Tracing::AutoRevivingAsyncReporter.new(sender, 1)
87
- else
88
- Jaeger::Client::AsyncReporter.create(sender: sender, flush_interval: 1)
89
- end
90
- end
91
-
92
- # at the moment this just sets a new reporter in the tracer
93
76
  def revive
94
- @tracer.set_reporter(create_reporter(@http_sender)) if @tracer.respond_to? :set_reporter
77
+ set_tracer(service_name: @service_name, access_token: @access_token)
95
78
  end
96
79
  end
97
80
  end
@@ -1,4 +1,3 @@
1
- require 'jaeger/client/http_sender'
2
1
 
3
2
  # This child class of HttpSender exists to allow Net::HTTP instrumentation to
4
3
  # ignore requests made by the tracer. The tracer uses the Thrift HTTP Transport,
@@ -1,5 +1,3 @@
1
- require 'jaeger/client/async_reporter'
2
-
3
1
  # The Jaeger client's AsyncReporter creates a thread to handle sending spans on
4
2
  # a flush interval. However, when a forking web server like Passenger forks a
5
3
  # process that includes the tracer, the sender thread is lost.
@@ -1,4 +1,3 @@
1
- require 'jaeger/client/tracer'
2
1
 
3
2
  # The default jaeger tracer doesn't expose @reporter, and attr_accessor can't
4
3
  # be added after the fact in a child class. So this just adds an old-fashioned
@@ -1,5 +1,5 @@
1
1
  module Signalfx
2
2
  module Tracing
3
- VERSION = "0.1.6"
3
+ VERSION = "0.1.7"
4
4
  end
5
5
  end
@@ -36,20 +36,19 @@ Gem::Specification.new do |spec|
36
36
 
37
37
  # TODO pin versions once consistent across all dependencies
38
38
  spec.add_dependency "opentracing", "> 0.3.0"
39
- # spec.add_dependency "jaeger-client", "~> 0.6.1"
40
- spec.add_dependency "jaeger-client", "~> 0.7.0"
39
+ spec.add_dependency "jaeger-client", "~> 0.10.0"
41
40
 
42
- spec.add_dependency "sinatra-instrumentation", "~> 0.1"
43
- spec.add_dependency "nethttp-instrumentation", "~> 0.1"
44
- spec.add_dependency "restclient-instrumentation", "~> 0.1"
45
- spec.add_dependency "mongodb-instrumentation", "~> 0.1"
46
- spec.add_dependency "mysql2-instrumentation", "~> 0.1"
47
- spec.add_dependency "redis-instrumentation", "~> 0.1"
41
+ spec.add_dependency "sinatra-instrumentation", "~> 0.1.2"
42
+ spec.add_dependency "nethttp-instrumentation", "~> 0.1.2"
43
+ spec.add_dependency "restclient-instrumentation", "~> 0.1.1"
44
+ spec.add_dependency "mongodb-instrumentation", "~> 0.1.1"
45
+ spec.add_dependency "mysql2-instrumentation", "~> 0.1.0"
46
+ spec.add_dependency "redis-instrumentation", "~> 0.1.0"
48
47
 
49
48
  # forks
50
- spec.add_dependency "signalfx-rails-instrumentation", "~> 0.1"
51
- spec.add_dependency "signalfx-elasticsearch-instrumentation", "~> 0.1"
52
- spec.add_dependency "signalfx-faraday-instrumentation", "~> 0.1.0"
49
+ spec.add_dependency "signalfx-rails-instrumentation", "~> 0.1.4"
50
+ spec.add_dependency "signalfx-elasticsearch-instrumentation", "~> 0.1.0"
51
+ spec.add_dependency "signalfx-faraday-instrumentation", "~> 0.1.1"
53
52
 
54
53
  # external
55
54
  spec.add_dependency "rack-tracer", "~> 0.8"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: signalfx-tracing
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ashwin Chandrasekar
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-01-23 00:00:00.000000000 Z
11
+ date: 2019-01-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -58,140 +58,140 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.7.0
61
+ version: 0.10.0
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.7.0
68
+ version: 0.10.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: sinatra-instrumentation
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0.1'
75
+ version: 0.1.2
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0.1'
82
+ version: 0.1.2
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: nethttp-instrumentation
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0.1'
89
+ version: 0.1.2
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0.1'
96
+ version: 0.1.2
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: restclient-instrumentation
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '0.1'
103
+ version: 0.1.1
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '0.1'
110
+ version: 0.1.1
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: mongodb-instrumentation
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '0.1'
117
+ version: 0.1.1
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '0.1'
124
+ version: 0.1.1
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: mysql2-instrumentation
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '0.1'
131
+ version: 0.1.0
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '0.1'
138
+ version: 0.1.0
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: redis-instrumentation
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: '0.1'
145
+ version: 0.1.0
146
146
  type: :runtime
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: '0.1'
152
+ version: 0.1.0
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: signalfx-rails-instrumentation
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: '0.1'
159
+ version: 0.1.4
160
160
  type: :runtime
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: '0.1'
166
+ version: 0.1.4
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: signalfx-elasticsearch-instrumentation
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
171
  - - "~>"
172
172
  - !ruby/object:Gem::Version
173
- version: '0.1'
173
+ version: 0.1.0
174
174
  type: :runtime
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - "~>"
179
179
  - !ruby/object:Gem::Version
180
- version: '0.1'
180
+ version: 0.1.0
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: signalfx-faraday-instrumentation
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
185
  - - "~>"
186
186
  - !ruby/object:Gem::Version
187
- version: 0.1.0
187
+ version: 0.1.1
188
188
  type: :runtime
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
192
  - - "~>"
193
193
  - !ruby/object:Gem::Version
194
- version: 0.1.0
194
+ version: 0.1.1
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: rack-tracer
197
197
  requirement: !ruby/object:Gem::Requirement