signalfx-tracing 0.1.0 → 0.1.1
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 +4 -4
- data/README.md +24 -4
- data/lib/signalfx/tracing/instrumentation/net_http.rb +3 -2
- data/lib/signalfx/tracing/instrumentation/restclient.rb +3 -1
- data/lib/signalfx/tracing/instrumentation/sinatra.rb +1 -1
- data/lib/signalfx/tracing/version.rb +1 -1
- data/lib/signalfx/tracing.rb +17 -1
- data/signalfx-tracing.gemspec +4 -3
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1c6ff836a9a573045e3aac0ea378a834f286b98f
|
4
|
+
data.tar.gz: 6f195c1c6bfc7bb9ae83b7c554af22b2451e7532
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e7c2c8fe68cc903d5a3d378d30810fcb14ed1eed352261d80081f07c1534609cdf789698cfff2b78b5fd34699aaaaa8c2ea18681a85915a3dc44083a4153fba6
|
7
|
+
data.tar.gz: 6e3fa6cdbbf10bc991a7b3b7039536c6af3681806e5ae6172c9afa2b0359515e58f7deb4c45930f9b6188df6b0224486d2aca18537ca3ea6445e9f12eb07c57f
|
data/README.md
CHANGED
@@ -1,5 +1,19 @@
|
|
1
1
|
# Ruby auto-instrumenter
|
2
2
|
|
3
|
+
## Installation
|
4
|
+
|
5
|
+
Add this line to your application's Gemfile:
|
6
|
+
|
7
|
+
```ruby
|
8
|
+
gem 'signalfx-tracing'
|
9
|
+
```
|
10
|
+
|
11
|
+
and then execute:
|
12
|
+
|
13
|
+
```bash
|
14
|
+
$ bundle install
|
15
|
+
```
|
16
|
+
|
3
17
|
## Usage
|
4
18
|
|
5
19
|
Configure the instrumentation anywhere in the setup portion of your code or before doing anything
|
@@ -75,8 +89,8 @@ This section contains details and configuration for specific frameworks.
|
|
75
89
|
| Mongo | >= 2.1 |
|
76
90
|
| Mysql2 | >= 0.5.0 |
|
77
91
|
| Net::HTTP | Ruby > 2.0 |
|
78
|
-
| Rack |
|
79
|
-
| Rails |
|
92
|
+
| Rack | >= 2.0 |
|
93
|
+
| Rails | >= 4.2.0 |
|
80
94
|
| REST Client | >= 2.0.0 |
|
81
95
|
| Sinatra | >= 1.1.4 |
|
82
96
|
|
@@ -151,7 +165,7 @@ conn = Faraday.new(url: 'http://localhost:3000/') do |faraday|
|
|
151
165
|
end
|
152
166
|
```
|
153
167
|
|
154
|
-
For more detailed usage, please check the
|
168
|
+
For more detailed usage, please check the instrumentation's page.
|
155
169
|
|
156
170
|
## Mysql2
|
157
171
|
|
@@ -232,10 +246,16 @@ The source for this instrumentation is located [here](https://github.com/signalf
|
|
232
246
|
|
233
247
|
```ruby
|
234
248
|
SignalFx::Tracing::Instrumenter.configure do |p|
|
235
|
-
p.instrument(:RestClient)
|
249
|
+
p.instrument(:RestClient, tracer: tracer, propagate: true)
|
236
250
|
end
|
237
251
|
```
|
238
252
|
|
253
|
+
Arguments:
|
254
|
+
- `tracer`: Optional custom tracer to use for this instrumentation
|
255
|
+
- Default: `OpenTracing.global_tracer`
|
256
|
+
- `propagate`: Propagate spans to the request endpoint.
|
257
|
+
- Default: `false`
|
258
|
+
|
239
259
|
## Sinatra
|
240
260
|
|
241
261
|
Sinatra instrumentation traces requests and template rendering. The instrumenter
|
@@ -8,10 +8,11 @@ module SignalFx
|
|
8
8
|
class << self
|
9
9
|
|
10
10
|
def instrument(opts = {})
|
11
|
-
require 'net/http/
|
11
|
+
require 'net/http/instrumentation'
|
12
12
|
|
13
|
+
tracer = opts.fetch(:tracer, OpenTracing.global_tracer)
|
13
14
|
ignore_request = lambda { Thread.current.thread_variable_get(:http_sender_thread) }
|
14
|
-
::Net::Http::
|
15
|
+
::Net::Http::Instrumentation.instrument(tracer: tracer, ignore_request: ignore_request)
|
15
16
|
end
|
16
17
|
end
|
17
18
|
end
|
@@ -16,7 +16,9 @@ module SignalFx
|
|
16
16
|
|
17
17
|
require 'restclient/instrumentation'
|
18
18
|
|
19
|
-
|
19
|
+
tracer = opts.fetch(:tracer, OpenTracing.global_tracer)
|
20
|
+
propagate = opts.fetch(:propagate, false)
|
21
|
+
::RestClient::Instrumentation.instrument(tracer: tracer, propagate: propagate)
|
20
22
|
end
|
21
23
|
end
|
22
24
|
end
|
data/lib/signalfx/tracing.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
require 'jaeger/client'
|
2
|
+
require 'jaeger/client/injectors'
|
3
|
+
require 'jaeger/client/extractors'
|
2
4
|
require 'signalfx/tracing/http_sender'
|
3
5
|
require 'signalfx/tracing/register'
|
4
6
|
require 'thread'
|
@@ -48,7 +50,18 @@ module SignalFx
|
|
48
50
|
|
49
51
|
http_sender = SignalFx::Tracing::HttpSenderWithFlag.new(url: @ingest_url, headers: headers, encoder: encoder)
|
50
52
|
|
51
|
-
|
53
|
+
injectors = {
|
54
|
+
OpenTracing::FORMAT_RACK => [Jaeger::Client::Injectors::B3RackCodec]
|
55
|
+
}
|
56
|
+
extractors = {
|
57
|
+
OpenTracing::FORMAT_RACK => [Jaeger::Client::Extractors::B3RackCodec]
|
58
|
+
}
|
59
|
+
|
60
|
+
@tracer = Jaeger::Client.build(service_name: service_name,
|
61
|
+
sender: http_sender,
|
62
|
+
injectors: injectors,
|
63
|
+
extractors: extractors,
|
64
|
+
flush_interval: 1)
|
52
65
|
OpenTracing.global_tracer = @tracer
|
53
66
|
else
|
54
67
|
@tracer = tracer
|
@@ -56,5 +69,8 @@ module SignalFx
|
|
56
69
|
end
|
57
70
|
end
|
58
71
|
end
|
72
|
+
|
73
|
+
# auto-configure if the correct env var is set
|
74
|
+
Instrumenter.configure(auto_instrument: true) if ENV['SIGNALFX_AUTO_INSTRUMENT'] == 'true'
|
59
75
|
end
|
60
76
|
end
|
data/signalfx-tracing.gemspec
CHANGED
@@ -36,7 +36,8 @@ 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"
|
39
|
+
# spec.add_dependency "jaeger-client", "~> 0.6.1"
|
40
|
+
spec.add_dependency "jaeger-client", "~> 0.7.0"
|
40
41
|
|
41
42
|
spec.add_dependency "sinatra-instrumentation", "~> 0.1"
|
42
43
|
spec.add_dependency "nethttp-instrumentation", "~> 0.1"
|
@@ -45,8 +46,8 @@ Gem::Specification.new do |spec|
|
|
45
46
|
spec.add_dependency "mysql2-instrumentation", "~> 0.1"
|
46
47
|
|
47
48
|
# forks
|
48
|
-
spec.add_dependency "signalfx-rails-instrumentation", "~> 0.1
|
49
|
-
spec.add_dependency "signalfx-elasticsearch-instrumentation", "~> 0.1
|
49
|
+
spec.add_dependency "signalfx-rails-instrumentation", "~> 0.1"
|
50
|
+
spec.add_dependency "signalfx-elasticsearch-instrumentation", "~> 0.1"
|
50
51
|
|
51
52
|
# external
|
52
53
|
spec.add_dependency "faraday-tracer", "~> 0.7.0"
|
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.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ashwin Chandrasekar
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-12-
|
11
|
+
date: 2018-12-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.
|
61
|
+
version: 0.7.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.
|
68
|
+
version: 0.7.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: sinatra-instrumentation
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -142,28 +142,28 @@ dependencies:
|
|
142
142
|
requirements:
|
143
143
|
- - "~>"
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version: 0.1
|
145
|
+
version: '0.1'
|
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'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
name: signalfx-elasticsearch-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'
|
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'
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
168
|
name: faraday-tracer
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|