nethttp-instrumentation 0.1.1 → 0.1.2
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 +26 -4
- data/lib/net/http/instrumentation/version.rb +1 -1
- data/lib/net/http/instrumentation.rb +18 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 64465c0ccfe8cf65d33980af58f6eef1f23df52f
|
4
|
+
data.tar.gz: f56cbecb92dd1cbbca5890f786a9d247b2b2109b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: afa8417fe2d57d1c321d16fee9769cf67ad7906ef377c80fb40b8b21f3c66c4d727d4844fafa803ec04b6cb40e4a443eb49d7303d3c85e913edab465a74600ce
|
7
|
+
data.tar.gz: f880d7e606c7c5324b8f417aa40d4d57fb5756c4a8109b295c9109668ca0505c863154cf0a4c7d84c89cf29dbbb6aef8a66dd932eb7a83b37499234fa9624972
|
data/README.md
CHANGED
@@ -11,7 +11,7 @@ This gem automatically traces all requests made with Net::HTTP.
|
|
11
11
|
Add this line to your application's Gemfile:
|
12
12
|
|
13
13
|
```ruby
|
14
|
-
gem 'nethttp-
|
14
|
+
gem 'nethttp-instrumentation'
|
15
15
|
```
|
16
16
|
|
17
17
|
And then execute:
|
@@ -20,7 +20,7 @@ And then execute:
|
|
20
20
|
|
21
21
|
Or install it yourself as:
|
22
22
|
|
23
|
-
$ gem install nethttp-
|
23
|
+
$ gem install nethttp-instrumentation
|
24
24
|
|
25
25
|
## Usage
|
26
26
|
|
@@ -29,11 +29,33 @@ Set an OpenTracing-compatible tracer, such as ['jaeger-client'](https://github.c
|
|
29
29
|
Before making any requests, configure the tracer:
|
30
30
|
|
31
31
|
```ruby
|
32
|
-
require 'net/http/
|
32
|
+
require 'net/http/instrumentation'
|
33
33
|
|
34
|
-
Net::Http::
|
34
|
+
Net::Http::Instrumentation.instrument
|
35
35
|
```
|
36
36
|
|
37
|
+
`instrument` takes two parameters:
|
38
|
+
- `tracer`: the OpenTracing tracer to use to trace requests. Default: OpenTracing.global_tracer
|
39
|
+
- `ignore_request`: a bool or block to determine whether or not a given request
|
40
|
+
should be traced.
|
41
|
+
|
42
|
+
`ignore_requests` should be configured to avoid tracing requests from the tracer
|
43
|
+
if it uses Net::HTTP to send spans. For example:
|
44
|
+
|
45
|
+
```ruby
|
46
|
+
# in the thread sending spans
|
47
|
+
Thread.current[:http_sender_thread] = true
|
48
|
+
...
|
49
|
+
|
50
|
+
# configure the instrumentation
|
51
|
+
Net::Http::Instrumentation.instrument(ignore_request: -> { Thread.current[:http_sender_thread] })
|
52
|
+
```
|
53
|
+
|
54
|
+
To remove instrumentation:
|
55
|
+
|
56
|
+
```ruby
|
57
|
+
Net::Http::Instrumentation.remove
|
58
|
+
|
37
59
|
The spans will be given a name consisting of the HTTP method and request path.
|
38
60
|
|
39
61
|
## Development
|
@@ -7,12 +7,26 @@ module Net
|
|
7
7
|
|
8
8
|
class << self
|
9
9
|
|
10
|
-
attr_accessor :ignore_request
|
10
|
+
attr_accessor :ignore_request, :tracer
|
11
11
|
|
12
|
-
def instrument(ignore_request: nil)
|
12
|
+
def instrument(tracer: OpenTracing.global_tracer, ignore_request: nil)
|
13
13
|
@ignore_request = ignore_request
|
14
|
+
@tracer = tracer
|
14
15
|
|
15
|
-
patch_request
|
16
|
+
patch_request if !@instrumented
|
17
|
+
@instrumented = true
|
18
|
+
end
|
19
|
+
|
20
|
+
def remove
|
21
|
+
return if !@instrumented
|
22
|
+
|
23
|
+
::Net::HTTP.module_eval do
|
24
|
+
remove_method :request
|
25
|
+
alias_method :request, :request_original
|
26
|
+
remove_method :request_original
|
27
|
+
end
|
28
|
+
|
29
|
+
@instrumented = false
|
16
30
|
end
|
17
31
|
|
18
32
|
def patch_request
|
@@ -36,7 +50,7 @@ module Net
|
|
36
50
|
"peer.host" => @address,
|
37
51
|
"peer.port" => @port,
|
38
52
|
}
|
39
|
-
|
53
|
+
::Net::Http::Instrumentation.tracer.start_active_span("net_http.request", tags: tags) do |scope|
|
40
54
|
# inject the trace so it's available to the remote service
|
41
55
|
OpenTracing.inject(scope.span.context, OpenTracing::FORMAT_RACK, req)
|
42
56
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nethttp-instrumentation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
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: opentracing
|