signalfx-tracing 1.1.0 → 1.3.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.gitignore +5 -1
- data/README.md +265 -165
- data/bin/sfx-rb-trace-bootstrap +5 -3
- data/gem.deps.rb +3 -1
- data/lib/signalfx/tracing.rb +26 -6
- data/lib/signalfx/tracing/instrumentation/pg.rb +41 -0
- data/lib/signalfx/tracing/instrumentation/redis.rb +1 -1
- data/lib/signalfx/tracing/instrumentation/sidekiq.rb +35 -0
- data/lib/signalfx/tracing/register.rb +2 -0
- data/lib/signalfx/tracing/sfx_logger.rb +57 -0
- data/lib/signalfx/tracing/version.rb +1 -1
- data/signalfx-tracing.gemspec +1 -1
- metadata +13 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e8255be0adcf8bd4fe4412bfed79136715ec13962fa187d08e6e199bba5b3311
|
4
|
+
data.tar.gz: 93708387b7486bd4995b0b509f0ba02cb9fa544f963666b5f2d56eb489395735
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1b1a21c3a139f0accc57cebd68c736112eeae7b9c6c4d63cbad374969f677c8901026ec06acec13d458c34dccb04d541528b395f2f2adb8c2715f5d67187d05f
|
7
|
+
data.tar.gz: 61fbd5998c46d0c44551308598da14a92e8a7f1d08a00715ee8ca1e4bfd508c1bd4fad991fe76fa5913e857fab28eed35fa593404524c2b6a15f9f7105892f79
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,155 +1,163 @@
|
|
1
|
-
# SignalFx
|
1
|
+
# SignalFx Tracing Library for Ruby
|
2
2
|
|
3
|
-
|
3
|
+
The SignalFx Tracing Library for Ruby helps you instrument Ruby applications
|
4
|
+
with the OpenTracing API to capture and report distributed traces to SignalFx.
|
4
5
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
The library consists of an auto-instrumentor that works with OpenTracing
|
7
|
+
community-provided instrumentations, and provides a bootstrap utility to help
|
8
|
+
install instrumentations. It also configures and uses a
|
9
|
+
[Jaeger tracer](https://github.com/salemove/jaeger-client-ruby) to send trace
|
10
|
+
data to SignalFx.
|
10
11
|
|
11
|
-
##
|
12
|
+
## Requirements and supported software
|
12
13
|
|
13
|
-
|
14
|
+
Here are the requirements and supported software for the library.
|
14
15
|
|
15
|
-
|
16
|
-
$ gem install signalfx-tracing
|
17
|
-
```
|
18
|
-
|
19
|
-
The SignalFx Tracing Library for Ruby requires just enough dependencies to allow custom instrumentation for your application, with target library instrumentations needing to be installed manually.
|
20
|
-
The basic installation provides an `sfx-rb-trace-bootstrap` executable to assist with this process, which allows you to specify the desired libraries for instrumentation as a comma-separated list:
|
21
|
-
|
22
|
-
```bash
|
23
|
-
$ sfx-rb-trace-bootstrap --install-deps rack,rails,activerecord,restclient
|
24
|
-
$ # use the --list option to see all available instrumentations
|
25
|
-
$ sfx-rb-trace-bootstrap --list
|
26
|
-
Available target libraries:
|
27
|
-
{"activerecord"=>["activerecord-opentracing", "~> 0.2.1"],
|
28
|
-
< ... >
|
29
|
-
"sinatra"=>["sinatra-instrumentation", "~> 0.1.2"]}
|
30
|
-
```
|
16
|
+
### Supported runtimes
|
31
17
|
|
32
|
-
|
18
|
+
- MRI Ruby (CRuby) 2.0+
|
33
19
|
|
34
|
-
|
35
|
-
$ # Run from a cloned and updated https://github.com/signalfx/signalfx-ruby-tracing.git
|
36
|
-
$ cd signalfx-ruby-tracing
|
37
|
-
$ bundle install
|
38
|
-
$ gem install -g
|
39
|
-
```
|
20
|
+
### Supported servers
|
40
21
|
|
41
|
-
|
22
|
+
- Puma >= 3.0.0
|
23
|
+
- Passenger >= 5.0.25
|
42
24
|
|
43
|
-
|
25
|
+
### Supported libraries
|
26
|
+
|
27
|
+
| Library | Instrumentation name | Versions Supported |
|
28
|
+
| ------------------------------- | -------------------------------------- | ------------------ |
|
29
|
+
| [ActiveRecord](#active-record) | activerecord-opentracing | ~> 5.0 |
|
30
|
+
| [Elasticsearch](#elasticsearch) | signalfx-elasticsearch-instrumentation | >= 6.0.2 |
|
31
|
+
| [Faraday](#faraday) | signalfx-faraday-instrumentation | >= 0.9.0 |
|
32
|
+
| [Grape](#grape) | grape-instrumentation | >= 0.13.0 |
|
33
|
+
| [Mongo](#mongo) | mongodb-instrumentation | >= 2.1.0 |
|
34
|
+
| [Mysql2](#mysql2) | mysql2-instrumentation | >= 0.4.0 |
|
35
|
+
| [Net::HTTP](#nethttp) | nethttp-instrumentation | Ruby >= 2.0 |
|
36
|
+
| [Pg](#pg) | pg-instrumentation | >= 0.18.0 |
|
37
|
+
| [Rack](#rack) | rack-tracer | >= 0.1 |
|
38
|
+
| [Rails](#rails) | rails-instrumentation | >= 3.0.0 |
|
39
|
+
| [Redis](#redis) | redis-instrumentation | >= 4.0.0 |
|
40
|
+
| [RestClient](#restclient) | restclient-instrumentation | >= 1.5.0 |
|
41
|
+
| [Sequel](#sequel) | sequel-instrumentation | >= 3.47.0 |
|
42
|
+
| [Sidekiq](#sidekiq) | sfx-sidekiq-opentracing | >= 0.7.0 |
|
43
|
+
| [Sinatra](#sinatra) | sinatra-instrumentation | >= 1.0.0 |
|
44
|
+
|
45
|
+
Instrumentation for routes using Puma or Passenger is provided through
|
46
|
+
Rack. If you use a framework that builds on top of Rack, such as Rails or
|
47
|
+
Sinatra, install the `rack-tracer` instrumentation with your dependency manager
|
48
|
+
or with the bootstrap utility. In these cases, the routes through the web
|
49
|
+
server are automatically traced.
|
50
|
+
|
51
|
+
## Install the SignalFx Tracing Library for Ruby
|
52
|
+
|
53
|
+
Follow these steps to install the tracing library. You can either use the
|
54
|
+
bootstrap utility to install the tracing library and its dependencies or
|
55
|
+
manually install everything.
|
56
|
+
|
57
|
+
The bootstrap utility updates your Gemfile and installs the required
|
58
|
+
dependencies for you. For information about the bootstrap utility, see the
|
59
|
+
[sfx-rb-trace-bootstrap](bin/sfx-rb-trace-bootstrap) file.
|
60
|
+
|
61
|
+
The steps assume you have RubyGems and Bundler.
|
62
|
+
|
63
|
+
### Install the library with the bootstrap utility
|
64
|
+
|
65
|
+
1. Install the tracing library:
|
66
|
+
```bash
|
67
|
+
$ gem install signalfx-tracing
|
68
|
+
```
|
69
|
+
2. View the list of instrumentations you can install with the bootstrap utility:
|
70
|
+
```bash
|
71
|
+
$ sfx-rb-trace-bootstrap --list
|
72
|
+
```
|
73
|
+
3. Use the bootstrap utility to install applicable instrumentations for your
|
74
|
+
application. For example, this is how you add Rails and Redis:
|
75
|
+
```bash
|
76
|
+
$ sfx-rb-trace-bootstrap --install-deps rails,redis
|
77
|
+
```
|
78
|
+
For information about instrumentation names, see supported libraries and their
|
79
|
+
current versions in `gem.deps.rb`. If you configure Rails instrumentation, it
|
80
|
+
also configures Active Record instrumentation, so you don't need to instrument both.
|
81
|
+
|
82
|
+
### Manually install the library
|
83
|
+
|
84
|
+
1. Download the [latest release](https://github.com/signalfx/signalfx-ruby-tracing/releases/latest) of the tracing library.
|
85
|
+
2. Add `signalfx-tracing` to your application's Gemfile:
|
86
|
+
```bash
|
87
|
+
$ gem 'signalfx-tracing'
|
88
|
+
```
|
89
|
+
3. Add each applicable instrumentation to your application's Gemfile. For
|
90
|
+
example, this is how you add Rails and Redis:
|
91
|
+
```bash
|
92
|
+
$ gem 'rails-instrumentation'
|
93
|
+
$ gem 'redis-instrumentation'
|
94
|
+
```
|
95
|
+
For information about instrumentation names, see supported libraries and their
|
96
|
+
current versions in `gem.deps.rb`. If you configure Rails instrumentation, it
|
97
|
+
also configures Active Record instrumentation, so you don't need to instrument both.
|
98
|
+
4. Install the gems for the tracing library and instrumentations:
|
99
|
+
```bash
|
100
|
+
$ bundle install
|
101
|
+
```
|
102
|
+
|
103
|
+
## Configure instrumentation for a Ruby application
|
104
|
+
|
105
|
+
Configure the instrumentation anywhere in the setup portion of your code or
|
106
|
+
before importing and using any libraries that need to be traced.
|
107
|
+
|
108
|
+
For example, with Rails, configure instrumentation in `config/initializer/tracing.rb`.
|
109
|
+
|
110
|
+
You can configure instrumentation automatically or manually. Manual
|
111
|
+
instrumentation is convenient when you want to trace only some libraries.
|
112
|
+
|
113
|
+
### Set configuration values
|
114
|
+
|
115
|
+
If the default configuration values don't apply for your environment, override them before running the process you instrument.
|
116
|
+
|
117
|
+
| `configure` parameter | Environment variable | Default | Notes |
|
118
|
+
| ------------------- | -------------------- | -------------------------------- | ----- |
|
119
|
+
| tracer | N/A | `nil` | The OpenTracing global tracer. |
|
120
|
+
| ingest_url | SIGNALFX_ENDPOINT_URL | `http://localhost:9080/v1/trace` | The endpoint the tracer sends spans to. Send spans to a Smart Agent, OpenTelemetry Collector, or a SignalFx ingest endpoint. |
|
121
|
+
| service_name | SIGNALFX_SERVICE_NAME | `signalfx-ruby-tracing` | The name to identify the service in SignalFx. |
|
122
|
+
| access_token | SIGNALFX_ACCESS_TOKEN | `''` | The SignalFx organization access token. |
|
123
|
+
|
124
|
+
### Automatically instrument code:
|
125
|
+
|
126
|
+
Configure the auto-instrumentor to check for modules defined in the code and
|
127
|
+
instrument them if available:
|
44
128
|
|
45
129
|
```ruby
|
46
|
-
|
47
|
-
```
|
48
|
-
|
49
|
-
Then execute the following (or use your desired installation method for your application).
|
130
|
+
require 'signalfx/tracing'
|
50
131
|
|
51
|
-
|
52
|
-
$ bundle install
|
132
|
+
SignalFx::Tracing::Instrumenter.configure(auto_instrument:true)
|
53
133
|
```
|
54
134
|
|
55
|
-
|
56
|
-
|
57
|
-
Configure the instrumentation anywhere in the setup portion of your code or before doing anything
|
58
|
-
that needs to be traced.
|
59
|
-
|
60
|
-
For Rails, this would go in `config/initializer/tracing.rb`.
|
135
|
+
### Manually specify which libraries to instrument
|
61
136
|
|
62
|
-
|
63
|
-
check for modules defined in the code and instrument them if available:
|
137
|
+
Specify which libraries to instrument:
|
64
138
|
|
65
139
|
```ruby
|
66
140
|
require 'signalfx/tracing'
|
67
141
|
|
68
|
-
SignalFx::Tracing::Instrumenter.configure
|
69
|
-
|
70
|
-
|
71
|
-
Manual configuration may be desirable when only some libraries should be traced.
|
72
|
-
These instrumentations to can be selected in a block:
|
73
|
-
|
74
|
-
```ruby
|
75
|
-
SignalFx::Tracing::Instrumenter.configure do |patcher|
|
76
|
-
patcher.instrument(:LibName)
|
142
|
+
SignalFx::Tracing::Instrumenter.configure do |p|
|
143
|
+
p.instrument(<:myLibName>)
|
77
144
|
...
|
78
145
|
end
|
79
146
|
```
|
80
147
|
|
81
|
-
|
82
|
-
|
83
|
-
`configure` accepts several optional parameters:
|
84
|
-
- `tracer`: a preconfigured OpenTracing tracer to use. If one is not provided,
|
85
|
-
a new tracer will be initialized.
|
86
|
-
- Default: `nil`
|
87
|
-
- `ingest_url`: this is the Smart Agent or Smart Gateway endpoint to which spans are sent by the tracer.
|
88
|
-
- Default: `http://localhost:9080/v1/trace`
|
89
|
-
- `service_name`: service name to send spans under.
|
90
|
-
- Default: `signalfx-ruby-tracing`
|
91
|
-
- `access_token`: SignalFx access token for authentication. Unnecessary for most deployments.
|
92
|
-
- Default: `''`
|
93
|
-
|
94
|
-
Environment variables can be used to configure `service_name` and `access_token`
|
95
|
-
if not given to the `configure` method.
|
96
|
-
|
97
|
-
```bash
|
98
|
-
export SIGNALFX_SERVICE_NAME="<service_name>"
|
99
|
-
export SIGNALFX_ENDPOINT_URL="<url>"
|
100
|
-
export SIGNALFX_ACCESS_TOKEN="<token>"
|
101
|
-
```
|
102
|
-
|
103
|
-
If these environment variables are not set, the values will default to the ones
|
104
|
-
listed above.
|
105
|
-
|
106
|
-
# Instrumentation
|
107
|
-
|
108
|
-
This section contains details and configuration for specific frameworks.
|
109
|
-
|
110
|
-
### Runtimes
|
111
|
-
|
112
|
-
- MRI Ruby (CRuby) 2.0+
|
148
|
+
## Usage information for each library
|
113
149
|
|
114
|
-
|
150
|
+
Here's information about instrumenting each supported library.
|
115
151
|
|
116
|
-
|
117
|
-
- Passenger >= 5.0.25
|
118
|
-
|
119
|
-
Instrumentation for routes using these web servers is provided through Rack.
|
120
|
-
If using a framework that builds on top of Rack, such as Rails or Sinatra, our
|
121
|
-
instrumentation includes Rack instrumentation. In these cases, the routes
|
122
|
-
through the web server will be automatically traced.
|
123
|
-
|
124
|
-
When interfacing with these web servers as a Rack application, please configure
|
125
|
-
[Rack instrumentation](#rack) and insert it as middleware.
|
126
|
-
|
127
|
-
### Libraries/Frameworks
|
128
|
-
|
129
|
-
| Library | Versions Supported |
|
130
|
-
| ----------------------------------- | ------------------ |
|
131
|
-
| [ActiveRecord](#active-record) | ~> 5.0 |
|
132
|
-
| [Elasticsearch](#elasticsearch) | >= 6.0.2 |
|
133
|
-
| [Faraday](#faraday) | >= 0.9.0 |
|
134
|
-
| [Grape](#grape) | >= 0.13.0 |
|
135
|
-
| [Mongo](#mongo) | >= 2.1.0 |
|
136
|
-
| [Mysql2](#mysql2) | >= 0.4.0 |
|
137
|
-
| [Net::HTTP](#nethttp) | Ruby >= 2.0 |
|
138
|
-
| [Rack](#rack) | >= 0.1 |
|
139
|
-
| [Rails](#rails) | >= 3.0.0 |
|
140
|
-
| [Redis](#redis) | >= 4.0.0 |
|
141
|
-
| [RestClient](#restclient) | >= 1.5.0 |
|
142
|
-
| [Sequel](#sequel) | >= 3.47.0 |
|
143
|
-
| [Sinatra](#sinatra) | >= 1.0.0 |
|
144
|
-
|
145
|
-
## Active Record
|
152
|
+
### Active Record
|
146
153
|
|
147
154
|
This instrumentation creates spans for each Active Record query using the Active
|
148
|
-
Support notifications framework.
|
155
|
+
Support notifications framework. If you configure Rails instrumentation, it also configures Active Record instrumentation, so you don't need to instrument both.
|
149
156
|
|
150
|
-
The source for this instrumentation is located
|
157
|
+
The source for this instrumentation is located
|
158
|
+
[here](https://github.com/salemove/ruby-activerecord-opentracing).
|
151
159
|
|
152
|
-
|
160
|
+
#### Usage
|
153
161
|
|
154
162
|
```bash
|
155
163
|
$ # install the instrumentation if not done previously
|
@@ -162,14 +170,15 @@ SignalFx::Tracing::Instrumenter.configure do |p|
|
|
162
170
|
end
|
163
171
|
```
|
164
172
|
|
165
|
-
|
173
|
+
### Elasticsearch
|
166
174
|
|
167
175
|
Elasticsearch queries through the Ruby client are traced using a wrapper around
|
168
176
|
the transport.
|
169
177
|
|
170
|
-
The forked source for the instrumentation is located
|
178
|
+
The forked source for the instrumentation is located
|
179
|
+
[here](https://github.com/signalfx/ruby-elasticsearch-tracer).
|
171
180
|
|
172
|
-
|
181
|
+
#### Usage
|
173
182
|
|
174
183
|
```bash
|
175
184
|
$ # install the instrumentation if not done previously
|
@@ -199,15 +208,16 @@ client.transport = Elasticsearch::Tracer::Transport.new(tracer: OpenTracing.glob
|
|
199
208
|
transport: client.transport)
|
200
209
|
```
|
201
210
|
|
202
|
-
|
211
|
+
### Faraday
|
203
212
|
|
204
213
|
Faraday HTTP client instrumentation automatically creates spans for outgoing
|
205
214
|
requests. If the remote service has instrumentation that is aware of Rack,
|
206
215
|
those spans will be automatically nested with Faraday's spans.
|
207
216
|
|
208
|
-
The source for this instrumentation is located
|
217
|
+
The source for this instrumentation is located
|
218
|
+
[here](https://github.com/opentracing-contrib/ruby-faraday-tracer).
|
209
219
|
|
210
|
-
|
220
|
+
#### Usage
|
211
221
|
|
212
222
|
```bash
|
213
223
|
$ # install the instrumentation if not done previously
|
@@ -230,15 +240,16 @@ end
|
|
230
240
|
|
231
241
|
For more detailed usage, please check the instrumentation's page.
|
232
242
|
|
233
|
-
|
243
|
+
### Grape
|
234
244
|
|
235
245
|
This instrumentation subscribes to ActiveSupport notifications emitted by the
|
236
246
|
Grape API. It patches `Grape::API` to automatically insert the `Rack::Tracer`
|
237
247
|
middleware and trace requests.
|
238
248
|
|
239
|
-
The source for this instrumentation is located
|
249
|
+
The source for this instrumentation is located
|
250
|
+
[here](https://github.com/signalfx/ruby-grape-instrumentation)
|
240
251
|
|
241
|
-
|
252
|
+
#### Usage
|
242
253
|
|
243
254
|
```bash
|
244
255
|
$ # install the instrumentation if not done previously
|
@@ -253,8 +264,10 @@ end
|
|
253
264
|
|
254
265
|
`instrument` takes these optional arguments:
|
255
266
|
- `tracer`: custom tracer to use. Defaults to `OpenTracing.global_tracer`
|
256
|
-
- `parent_span`: parent span to group spans or block that returns a span.
|
257
|
-
|
267
|
+
- `parent_span`: parent span to group spans or block that returns a span.
|
268
|
+
Default: `nil`
|
269
|
+
- `disable_patching`: disable patching if managing the middleware stack
|
270
|
+
manually. Default: `false`
|
258
271
|
|
259
272
|
If patching is disabled, but spans nested by request are still desired, then the
|
260
273
|
Rack middleware must be manually added to the API class.
|
@@ -275,13 +288,15 @@ end
|
|
275
288
|
|
276
289
|
Please see the instrumentation's page for more details.
|
277
290
|
|
278
|
-
|
291
|
+
### Mongo
|
279
292
|
|
280
|
-
Mongo driver instrumentation traces queries performed through the Ruby Mongodb
|
293
|
+
Mongo driver instrumentation traces queries performed through the Ruby Mongodb
|
294
|
+
driver.
|
281
295
|
|
282
|
-
The source for this instrumentation is located
|
296
|
+
The source for this instrumentation is located
|
297
|
+
[here](https://github.com/signalfx/ruby-mongodb-instrumentation)
|
283
298
|
|
284
|
-
|
299
|
+
#### Usage
|
285
300
|
|
286
301
|
```bash
|
287
302
|
$ # install the instrumentation if not done previously
|
@@ -294,13 +309,14 @@ SignalFx::Tracing::Instrumenter.configure do |p|
|
|
294
309
|
end
|
295
310
|
```
|
296
311
|
|
297
|
-
|
312
|
+
### Mysql2
|
298
313
|
|
299
314
|
Mysql2 instrumentation traces all queries performed with the Mysql2 client.
|
300
315
|
|
301
|
-
The source for this instrumentation is located
|
316
|
+
The source for this instrumentation is located
|
317
|
+
[here](https://github.com/signalfx/ruby-mysql2-instrumentation)
|
302
318
|
|
303
|
-
|
319
|
+
#### Usage
|
304
320
|
|
305
321
|
```bash
|
306
322
|
$ # install the instrumentation if not done previously
|
@@ -313,13 +329,14 @@ SignalFx::Tracing::Instrumenter.configure do |p|
|
|
313
329
|
end
|
314
330
|
```
|
315
331
|
|
316
|
-
|
332
|
+
### Net::HTTP
|
317
333
|
|
318
334
|
This automatically traces all requests using Net::HTTP.
|
319
335
|
|
320
|
-
The source for this instrumentation is located
|
336
|
+
The source for this instrumentation is located
|
337
|
+
[here](https://github.com/signalfx/ruby-net-http-instrumentation).
|
321
338
|
|
322
|
-
|
339
|
+
#### Usage
|
323
340
|
|
324
341
|
```ruby
|
325
342
|
SignalFx::Tracing::Instrumenter.configure do |p|
|
@@ -327,17 +344,38 @@ SignalFx::Tracing::Instrumenter.configure do |p|
|
|
327
344
|
end
|
328
345
|
```
|
329
346
|
|
330
|
-
An optional `tracer` named argument can be provided to use a custom tracer.
|
347
|
+
An optional `tracer` named argument can be provided to use a custom tracer.
|
348
|
+
It will default to `OpenTracing.global_tracer` if not provided.
|
349
|
+
|
350
|
+
### Pg
|
331
351
|
|
332
|
-
|
352
|
+
Pg instrumentation traces all queries performed with the pg client.
|
353
|
+
|
354
|
+
The source for this instrumentation is located
|
355
|
+
[here](https://github.com/signalfx/ruby-pg-instrumentation)
|
356
|
+
|
357
|
+
#### Usage
|
358
|
+
|
359
|
+
```bash
|
360
|
+
$ # install the instrumentation if not done previously
|
361
|
+
$ sfx-rb-trace-bootstrap -i pg
|
362
|
+
```
|
363
|
+
|
364
|
+
```ruby
|
365
|
+
SignalFx::Tracing::Instrumenter.configure do |p|
|
366
|
+
p.instrument(:pg)
|
367
|
+
end
|
368
|
+
```
|
369
|
+
### Rack
|
333
370
|
|
334
371
|
Rack spans are created using the `rack-tracer` gem. This is enabled
|
335
372
|
automatically for other frameworks that are built on top of Rack, but it can
|
336
373
|
also be separately enabled.
|
337
374
|
|
338
|
-
The source for this instrumentation is located
|
375
|
+
The source for this instrumentation is located
|
376
|
+
[here](https://github.com/opentracing-contrib/ruby-rack-tracer).
|
339
377
|
|
340
|
-
|
378
|
+
#### Usage
|
341
379
|
|
342
380
|
```bash
|
343
381
|
$ # install the instrumentation if not done previously
|
@@ -352,14 +390,15 @@ end
|
|
352
390
|
use Rack::Tracer
|
353
391
|
```
|
354
392
|
|
355
|
-
|
393
|
+
### Rails
|
356
394
|
|
357
395
|
Rails applications can be traced using the notifications provided by ActiveSupport.
|
358
396
|
It will use `rack-tracer` to trace by requests.
|
359
397
|
|
360
|
-
The forked source for this instrumentation is located
|
398
|
+
The forked source for this instrumentation is located
|
399
|
+
[here](https://github.com/signalfx/ruby-rails-instrumentation).
|
361
400
|
|
362
|
-
|
401
|
+
#### Usage
|
363
402
|
|
364
403
|
```bash
|
365
404
|
$ # install the instrumentation if not done previously
|
@@ -388,13 +427,15 @@ Note that if `rack_tracer` is set to `false`, requests propagated to the Rails
|
|
388
427
|
app will not be extracted. For example, if a traced service makes a request to
|
389
428
|
an endpoint served by the Rails app, it will not be automatically nested.
|
390
429
|
|
391
|
-
|
430
|
+
### Redis
|
392
431
|
|
393
|
-
This instrumentation traces commands performed using the
|
432
|
+
This instrumentation traces commands performed using the
|
433
|
+
[Redis client](https://github.com/redis/redis-rb).
|
394
434
|
|
395
|
-
The source for this instrumentation is located
|
435
|
+
The source for this instrumentation is located
|
436
|
+
[here](https://github.com/signalfx/ruby-redis-instrumentation).
|
396
437
|
|
397
|
-
|
438
|
+
#### Usage
|
398
439
|
|
399
440
|
```bash
|
400
441
|
$ # install the instrumentation if not done previously
|
@@ -411,14 +452,15 @@ Arguments:
|
|
411
452
|
- `tracer`: Optional custom tracer to use for this instrumentation
|
412
453
|
- Default: `OpenTracing.global_tracer`
|
413
454
|
|
414
|
-
|
455
|
+
### RestClient
|
415
456
|
|
416
457
|
RestClient requests can be patched to automatically be wrapped in a span. It
|
417
458
|
will also inject the span context so remote services can extract it.
|
418
459
|
|
419
|
-
The source for this instrumentation is located
|
460
|
+
The source for this instrumentation is located
|
461
|
+
[here](https://github.com/signalfx/ruby-restclient-instrumentation).
|
420
462
|
|
421
|
-
|
463
|
+
#### Usage
|
422
464
|
|
423
465
|
```bash
|
424
466
|
$ # install the instrumentation if not done previously
|
@@ -437,13 +479,15 @@ Arguments:
|
|
437
479
|
- `propagate`: Propagate spans to the request endpoint.
|
438
480
|
- Default: `false`
|
439
481
|
|
440
|
-
|
482
|
+
### Sequel
|
441
483
|
|
442
|
-
Sequel instrumentation adds extensions to the Database and Dataset to trace
|
484
|
+
Sequel instrumentation adds extensions to the Database and Dataset to trace
|
485
|
+
queries.
|
443
486
|
|
444
|
-
The source for this instrumentation is located
|
487
|
+
The source for this instrumentation is located
|
488
|
+
[here](https://github.com/signalfx/ruby-sequel-instrumentation).
|
445
489
|
|
446
|
-
|
490
|
+
#### Usage
|
447
491
|
|
448
492
|
```bash
|
449
493
|
$ # install the instrumentation if not done previously
|
@@ -460,16 +504,50 @@ Arguments:
|
|
460
504
|
- `tracer`: Optional custom tracer for this instrumentation
|
461
505
|
- Default: `OpenTracing.global_tracer`
|
462
506
|
|
463
|
-
|
507
|
+
### Sidekiq
|
508
|
+
|
509
|
+
Sidekiq instrumentation traces worker job submissions and execution via
|
510
|
+
[Sidekiq middleware](https://github.com/mperham/sidekiq/wiki/Middleware).
|
511
|
+
The instrumenter registers both client and server middleware that use job
|
512
|
+
metadata to represent all job submissions and their invocations. Trace
|
513
|
+
context propagation adds to this job metadata to unifiy distributed client
|
514
|
+
and server requests and processing.
|
515
|
+
|
516
|
+
The source for this instrumentation is located
|
517
|
+
[here](https://github.com/signalfx/ruby-sidekiq-tracer).
|
518
|
+
|
519
|
+
#### Usage
|
520
|
+
|
521
|
+
```bash
|
522
|
+
$ # install the instrumentation if not done previously
|
523
|
+
$ sfx-rb-trace-bootstrap -i sidekiq
|
524
|
+
```
|
525
|
+
|
526
|
+
```ruby
|
527
|
+
SignalFx::Tracing::Instrumenter.configure do |p|
|
528
|
+
p.instrument(:Sidekiq, propagate: false)
|
529
|
+
end
|
530
|
+
```
|
531
|
+
|
532
|
+
Arguments:
|
533
|
+
- `tracer`: Optional custom tracer for this instrumentation
|
534
|
+
- Default: `OpenTracing.global_tracer`
|
535
|
+
- `propagate`: Optional boolean to enable/disable trace context injection via
|
536
|
+
job metadata
|
537
|
+
- Default: `true`
|
538
|
+
|
539
|
+
|
540
|
+
### Sinatra
|
464
541
|
|
465
542
|
Sinatra instrumentation traces requests and template rendering. The instrumenter
|
466
543
|
registers a Sinatra extension that uses `rack-tracer` to trace requests and
|
467
544
|
monkey-patches to trace view rendering. Rack instrumentation is automatically
|
468
545
|
enabled when using Sinatra instrumentation.
|
469
546
|
|
470
|
-
The source for this instrumentation is located
|
547
|
+
The source for this instrumentation is located
|
548
|
+
[here](https://github.com/signalfx/ruby-sinatra-instrumentation).
|
471
549
|
|
472
|
-
|
550
|
+
#### Usage
|
473
551
|
|
474
552
|
```bash
|
475
553
|
$ # install the instrumentation if not done previously
|
@@ -482,3 +560,25 @@ SignalFx::Tracing::Instrumenter.configure do |p|
|
|
482
560
|
end
|
483
561
|
```
|
484
562
|
|
563
|
+
## Configure the logger
|
564
|
+
|
565
|
+
The logger, based on the [Ruby Logger](https://ruby-doc.org/stdlib-2.4.0/libdoc/logger/rdoc/Logger.html),
|
566
|
+
can be configured by setting the following environment variables:
|
567
|
+
|
568
|
+
| Environmental Variable Name | Description | Default |
|
569
|
+
|:------------------------------|:----------------------|:-------------------- |
|
570
|
+
| `SIGNALFX_LOG_PATH` | The path to the desired file where the instrumentation logs will be written. Besides customized paths, output options also include `STDOUT` and `STDERR`.| `/var/log/signalfx/signalfx-ruby-tracing.log` |
|
571
|
+
| `SIGNALFX_LOG_SHIFT_AGE` | The desired number of old log files to keep, or frequency of rotation. Options include: `daily`, `weekly` or `monthly`) | `0` |
|
572
|
+
| `SIGNALFX_LOG_SHIFT_SIZE` | The desired maximum size of log files (this only applies when. A new one would be created when the maximum is reached. | `1048576` (1 MB) |
|
573
|
+
| `SIGNALFX_LOG_LEVEL` | The severity criteria for recording logs (from least to most severe). Options: `debug`, `info`, `warn`, `error`, `fatal`, `unknown` | `warn` |
|
574
|
+
|
575
|
+
More information regarding the logging configuration may be found
|
576
|
+
[here](https://ruby-doc.org/stdlib-2.4.0/libdoc/logger/rdoc/Logger.html).
|
577
|
+
|
578
|
+
**NB**:
|
579
|
+
- If the default path for `SIGNALFX_LOG_PATH` (that is, `/var/log/signalfx/signalfx-ruby-tracing.log`)
|
580
|
+
is to be used, then please create the directory and or file (if necessary)
|
581
|
+
and grant the relevant access permissions to the instrumentation user process.
|
582
|
+
If there are permission issues, the instrumentation will default to logging to
|
583
|
+
the standard error (STDERR) handle, until the path is provided to which logs
|
584
|
+
can be written without any access issues.
|
data/bin/sfx-rb-trace-bootstrap
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
#!/usr/bin/env ruby -
|
1
|
+
#!/usr/bin/env ruby -rrubygems
|
2
2
|
require 'optparse'
|
3
3
|
require 'ostruct'
|
4
4
|
require 'pp'
|
@@ -11,11 +11,13 @@ instrumentations = {
|
|
11
11
|
"mongodb" => ["mongodb-instrumentation", "~> 0.1.1"],
|
12
12
|
"mysql2" => ["mysql2-instrumentation", "~> 0.2.1"],
|
13
13
|
"nethttp" => ["nethttp-instrumentation", "~> 0.1.2"],
|
14
|
+
"pg" => ["pg-instrumentation", "~> 0.1.0"],
|
14
15
|
"rack" => ["rack-tracer", { git: 'git://github.com/signalfx/ruby-rack-tracer.git', branch: 'sfx_release' }],
|
15
16
|
"rails" => ["rails-instrumentation", "~> 0.1.3"],
|
16
|
-
"redis" => ["redis-instrumentation", "~> 0.
|
17
|
+
"redis" => ["redis-instrumentation", "~> 0.2.0"],
|
17
18
|
"restclient" => ["restclient-instrumentation", "~> 0.1.1"],
|
18
19
|
"sequel" => ["sequel-instrumentation", "~> 0.1.0"],
|
20
|
+
"sidekiq" => ["sfx-sidekiq-opentracing", "~> 0.0.3"],
|
19
21
|
"sinatra" => ["sinatra-instrumentation", "~> 0.1.2"]
|
20
22
|
}
|
21
23
|
|
@@ -65,4 +67,4 @@ def install_from_git(target, options)
|
|
65
67
|
end
|
66
68
|
|
67
69
|
parser.parse(ARGV)
|
68
|
-
install_instrumentors(instrumentations, options.target_libraries)
|
70
|
+
install_instrumentors(instrumentations, options.target_libraries)
|
data/gem.deps.rb
CHANGED
@@ -4,11 +4,13 @@ group :instrumentations do
|
|
4
4
|
gem 'mongodb-instrumentation', '~> 0.1.1'
|
5
5
|
gem 'mysql2-instrumentation', '~> 0.2.1'
|
6
6
|
gem 'nethttp-instrumentation', '~> 0.1.2'
|
7
|
+
gem 'pg-instrumentation', '~> 0.1.0'
|
7
8
|
gem 'rack-tracer', git: 'git://github.com/signalfx/ruby-rack-tracer.git', branch: 'sfx_release'
|
8
9
|
gem 'rails-instrumentation', '0.1.3'
|
9
|
-
gem 'redis-instrumentation', '~> 0.
|
10
|
+
gem 'redis-instrumentation', '~> 0.2.0'
|
10
11
|
gem 'restclient-instrumentation', '~> 0.1.1'
|
11
12
|
gem 'sequel-instrumentation', '~> 0.1.0'
|
13
|
+
gem 'sfx-sidekiq-opentracing', '~> 0.0.3'
|
12
14
|
gem 'signalfx-elasticsearch-instrumentation', '~> 0.1.0'
|
13
15
|
gem 'signalfx-faraday-instrumentation', '~> 0.1.1'
|
14
16
|
gem 'sinatra-instrumentation', '~> 0.1.2'
|
data/lib/signalfx/tracing.rb
CHANGED
@@ -2,6 +2,7 @@ require 'jaeger/client'
|
|
2
2
|
require 'signalfx/tracing/http_sender'
|
3
3
|
require 'signalfx/tracing/register'
|
4
4
|
require 'signalfx/tracing/compat'
|
5
|
+
require 'signalfx/tracing/sfx_logger'
|
5
6
|
require 'thread'
|
6
7
|
|
7
8
|
module SignalFx
|
@@ -21,11 +22,16 @@ module SignalFx
|
|
21
22
|
@ingest_url = ingest_url
|
22
23
|
@service_name = service_name
|
23
24
|
@access_token = access_token
|
24
|
-
set_tracer(tracer: tracer, service_name: service_name, access_token: access_token)
|
25
|
+
set_tracer(tracer: tracer, service_name: service_name, access_token: access_token) if @tracer.nil?
|
25
26
|
|
26
27
|
if auto_instrument
|
27
28
|
Register.available_libs.each_pair do |key, value|
|
28
|
-
|
29
|
+
begin
|
30
|
+
value.instrument
|
31
|
+
rescue Exception => e
|
32
|
+
logger.error { "failed to initialize instrumentation '#{key}': #{e.inspect}" }
|
33
|
+
logger.error { e.backtrace }
|
34
|
+
end
|
29
35
|
end
|
30
36
|
else
|
31
37
|
yield self
|
@@ -36,9 +42,14 @@ module SignalFx
|
|
36
42
|
|
37
43
|
def instrument(to_patch, **args)
|
38
44
|
if Register.available_libs[to_patch].nil?
|
39
|
-
|
45
|
+
logger.error { "instrumentation not found: #{to_patch}" }
|
40
46
|
else
|
41
|
-
|
47
|
+
begin
|
48
|
+
Register.available_libs[to_patch].instrument(**args)
|
49
|
+
rescue Exception => e
|
50
|
+
logger.error { "failed to initialize instrumentation '#{to_patch}': #{e.inspect}" }
|
51
|
+
logger.error { e.backtrace }
|
52
|
+
end
|
42
53
|
end
|
43
54
|
end
|
44
55
|
|
@@ -55,10 +66,12 @@ module SignalFx
|
|
55
66
|
@reporter = Jaeger::Client::Reporters::RemoteReporter.new(sender: @http_sender, flush_interval: 1)
|
56
67
|
|
57
68
|
injectors = {
|
58
|
-
OpenTracing::FORMAT_RACK => [Jaeger::Client::Injectors::B3RackCodec]
|
69
|
+
OpenTracing::FORMAT_RACK => [Jaeger::Client::Injectors::B3RackCodec],
|
70
|
+
OpenTracing::FORMAT_TEXT_MAP => [Jaeger::Client::Injectors::B3RackCodec]
|
59
71
|
}
|
60
72
|
extractors = {
|
61
|
-
OpenTracing::FORMAT_RACK => [Jaeger::Client::Extractors::B3RackCodec]
|
73
|
+
OpenTracing::FORMAT_RACK => [Jaeger::Client::Extractors::B3RackCodec],
|
74
|
+
OpenTracing::FORMAT_TEXT_MAP => [Jaeger::Client::Extractors::B3TextMapCodec]
|
62
75
|
}
|
63
76
|
|
64
77
|
@tracer = Jaeger::Client.build(
|
@@ -76,6 +89,13 @@ module SignalFx
|
|
76
89
|
def revive
|
77
90
|
set_tracer(service_name: @service_name, access_token: @access_token)
|
78
91
|
end
|
92
|
+
|
93
|
+
def logger()
|
94
|
+
if @_logger == nil
|
95
|
+
@_logger = Logging.logger
|
96
|
+
end
|
97
|
+
return @_logger
|
98
|
+
end
|
79
99
|
end
|
80
100
|
end
|
81
101
|
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require_relative '../sfx_logger'
|
2
|
+
|
3
|
+
module SignalFx
|
4
|
+
module Tracing
|
5
|
+
module Instrumenter
|
6
|
+
module PG
|
7
|
+
|
8
|
+
@logger = Logging.logger
|
9
|
+
@logger.debug('SFx pg-instrumentation') { "Initializing instrumentation ..." }
|
10
|
+
|
11
|
+
Register.add_lib :PG, self
|
12
|
+
|
13
|
+
class << self
|
14
|
+
|
15
|
+
def instrument(opts = {})
|
16
|
+
return if @instrumented
|
17
|
+
|
18
|
+
# check for required gems
|
19
|
+
begin
|
20
|
+
require 'pg'
|
21
|
+
rescue LoadError
|
22
|
+
return
|
23
|
+
end
|
24
|
+
|
25
|
+
begin
|
26
|
+
require 'pg/instrumentation'
|
27
|
+
rescue LoadError => e
|
28
|
+
@logger.error { e.message }
|
29
|
+
return
|
30
|
+
end
|
31
|
+
|
32
|
+
tracer = opts.fetch(:tracer, OpenTracing.global_tracer)
|
33
|
+
|
34
|
+
::PG::Instrumentation.instrument(tracer: tracer) if !@instrumented
|
35
|
+
@instrumented = true
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -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
|
+
|
@@ -42,3 +42,5 @@ require 'signalfx/tracing/instrumentation/mysql2'
|
|
42
42
|
require 'signalfx/tracing/instrumentation/redis'
|
43
43
|
require 'signalfx/tracing/instrumentation/sequel'
|
44
44
|
require 'signalfx/tracing/instrumentation/grape'
|
45
|
+
require 'signalfx/tracing/instrumentation/sidekiq'
|
46
|
+
require 'signalfx/tracing/instrumentation/pg'
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'logger'
|
2
|
+
|
3
|
+
module SignalFx
|
4
|
+
module Tracing
|
5
|
+
module Logging
|
6
|
+
|
7
|
+
LOG_LEVELS = {
|
8
|
+
'unknown' => Logger::UNKNOWN,
|
9
|
+
'fatal' => Logger::FATAL,
|
10
|
+
'error' => Logger::ERROR,
|
11
|
+
'warn' => Logger::WARN,
|
12
|
+
'info' => Logger::INFO,
|
13
|
+
'debug' => Logger::DEBUG
|
14
|
+
}.freeze
|
15
|
+
|
16
|
+
DEFAULT_LOG_PATH = '/var/log/signalfx/signalfx-ruby-tracing.log'
|
17
|
+
DEFAULT_SHIFT_AGE = 5
|
18
|
+
DEFAULT_SHIFT_SIZE = 1048576
|
19
|
+
|
20
|
+
def self.create (log_path = ENV['SIGNALFX_LOG_PATH'] || DEFAULT_LOG_PATH,
|
21
|
+
sfx_shift_age = ENV['SIGNALFX_LOG_SHIFT_AGE'] || DEFAULT_SHIFT_AGE,
|
22
|
+
sfx_shift_size = ENV['SIGNALFX_LOG_SHIFT_SIZE'] || DEFAULT_SHIFT_SIZE)
|
23
|
+
|
24
|
+
if log_path.upcase == 'STDOUT'
|
25
|
+
@logger = Logger.new(STDOUT)
|
26
|
+
elsif log_path.upcase == 'STDERR'
|
27
|
+
self.create_stderr_logger()
|
28
|
+
else
|
29
|
+
begin
|
30
|
+
@logger = Logger.new("#{log_path}", shift_age = sfx_shift_age, shift_size = sfx_shift_size)
|
31
|
+
rescue Errno::EACCES, Errno::ENOENT => e
|
32
|
+
self.create_stderr_logger(log_path, e)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
log_level = ENV['SIGNALFX_LOG_LEVEL'].downcase if ENV['SIGNALFX_LOG_LEVEL']
|
37
|
+
@logger.level = LOG_LEVELS.fetch(log_level, Logger::WARN)
|
38
|
+
@logger.datetime_format = '%Y-%m-%d %H:%M:%S'
|
39
|
+
@logger.formatter = proc do | severity, datetime, progname, msg |
|
40
|
+
"#{datetime}, #{severity}: #{msg} --- #{progname} \n"
|
41
|
+
end
|
42
|
+
@logger
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.logger
|
46
|
+
@logger ||= self.create
|
47
|
+
end
|
48
|
+
|
49
|
+
def self.create_stderr_logger(logpath=nil, error=nil)
|
50
|
+
@logger = Logger.new(STDERR)
|
51
|
+
if error
|
52
|
+
@logger.error { "LOG FILE ACCESS ERROR:\n*** Failed to write to '#{logpath}': #{error.message}\n--> Please manually create the required resources and/or grant relevant access permissions to this user process.\n*** Defaulting to sending log statements to the standard error (STDERR) handle.\n"}
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
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,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: signalfx-tracing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- SignalFx, Inc.
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-06-24 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: 1.0.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: 1.0.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: nethttp-instrumentation
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,7 +80,7 @@ dependencies:
|
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 0.1.2
|
83
|
-
description:
|
83
|
+
description:
|
84
84
|
email:
|
85
85
|
- info@signalfx.com
|
86
86
|
executables:
|
@@ -107,14 +107,17 @@ files:
|
|
107
107
|
- lib/signalfx/tracing/instrumentation/mysql2.rb
|
108
108
|
- lib/signalfx/tracing/instrumentation/net_http.rb
|
109
109
|
- lib/signalfx/tracing/instrumentation/patching-test.rb
|
110
|
+
- lib/signalfx/tracing/instrumentation/pg.rb
|
110
111
|
- lib/signalfx/tracing/instrumentation/rack.rb
|
111
112
|
- lib/signalfx/tracing/instrumentation/rails.rb
|
112
113
|
- lib/signalfx/tracing/instrumentation/redis.rb
|
113
114
|
- lib/signalfx/tracing/instrumentation/restclient.rb
|
114
115
|
- lib/signalfx/tracing/instrumentation/sequel.rb
|
116
|
+
- lib/signalfx/tracing/instrumentation/sidekiq.rb
|
115
117
|
- lib/signalfx/tracing/instrumentation/sinatra.rb
|
116
118
|
- lib/signalfx/tracing/register.rb
|
117
119
|
- lib/signalfx/tracing/reporter/auto_reviving_async_reporter.rb
|
120
|
+
- lib/signalfx/tracing/sfx_logger.rb
|
118
121
|
- lib/signalfx/tracing/tracer.rb
|
119
122
|
- lib/signalfx/tracing/version.rb
|
120
123
|
- signalfx-tracing.gemspec
|
@@ -122,7 +125,7 @@ homepage: https://github.com/signalfx/signalfx-ruby-tracing
|
|
122
125
|
licenses:
|
123
126
|
- Apache-2.0
|
124
127
|
metadata: {}
|
125
|
-
post_install_message:
|
128
|
+
post_install_message:
|
126
129
|
rdoc_options: []
|
127
130
|
require_paths:
|
128
131
|
- lib
|
@@ -137,9 +140,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
137
140
|
- !ruby/object:Gem::Version
|
138
141
|
version: '0'
|
139
142
|
requirements: []
|
140
|
-
rubyforge_project:
|
141
|
-
rubygems_version: 2.2
|
142
|
-
signing_key:
|
143
|
+
rubyforge_project:
|
144
|
+
rubygems_version: 2.7.6.2
|
145
|
+
signing_key:
|
143
146
|
specification_version: 4
|
144
147
|
summary: Auto-instrumentation framework for Ruby
|
145
148
|
test_files: []
|