gruf-zipkin 0.10.3 → 1.0.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +6 -6
- data/gruf-zipkin.gemspec +1 -1
- data/lib/gruf/zipkin.rb +6 -2
- data/lib/gruf/zipkin/headers.rb +5 -6
- data/lib/gruf/zipkin/{hook.rb → interceptor.rb} +24 -33
- data/lib/gruf/zipkin/method.rb +1 -2
- data/lib/gruf/zipkin/trace.rb +1 -2
- data/lib/gruf/zipkin/version.rb +1 -2
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 081c50dadfb6eba85262365f7b2f073fa541ad3f
|
4
|
+
data.tar.gz: 57d74e314465b774ffff74b74af04b607c567f1d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 64d5c4cece14c36b01fabefca98808d498edba216116dafe197761e4ad32de90befd4bfed5f5e68dd04435f1c391c9be2493399eb5e02c754464ff76dae0129b
|
7
|
+
data.tar.gz: c2e5b669752cc72c7b010b360af15999dc6d60b151e61a8e584b065e9296b6df8701f4403601c4a761d30c3ead23d85bdb2f9c16c71b6d3a68f4a5d614e98f6c
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# gruf-zipkin - Zipkin tracing for gruf
|
2
2
|
|
3
|
-
[](https://travis-ci.org/bigcommerce/gruf-zipkin)
|
3
|
+
[](https://travis-ci.org/bigcommerce/gruf-zipkin) [](https://badge.fury.io/rb/gruf-zipkin) [](http://inch-ci.org/github/bigcommerce/gruf-zipkin)
|
4
4
|
|
5
|
-
Adds Zipkin tracing support for [gruf](https://github.com/bigcommerce/gruf)
|
5
|
+
Adds Zipkin tracing support for [gruf](https://github.com/bigcommerce/gruf) 2.0.0+.
|
6
6
|
|
7
7
|
## Installation
|
8
8
|
|
@@ -25,9 +25,8 @@ Rails.application.config.zipkin_tracer = {
|
|
25
25
|
sample_rate: 0.1 # 0.0 to 1.0, where 1.0 => 100% of requests
|
26
26
|
}
|
27
27
|
Gruf.configure do |c|
|
28
|
-
c.
|
28
|
+
c.interceptors.use(Gruf::Zipkin::Interceptor, Rails.application.config.zipkin_tracer)
|
29
29
|
end
|
30
|
-
Gruf::Hooks::Registry.add(:zipkin, Gruf::Zipkin::Hook)
|
31
30
|
```
|
32
31
|
|
33
32
|
This assumes you have Zipkin already setup in your Ruby/Rails app via the installation
|
@@ -47,9 +46,10 @@ You can further customize the tracing of gruf services via the configuration:
|
|
47
46
|
|
48
47
|
```ruby
|
49
48
|
Gruf.configure do |c|
|
50
|
-
c.
|
49
|
+
c.interceptors.use(
|
50
|
+
Gruf::Zipkin::Interceptor,
|
51
51
|
span_prefix: 'myapp'
|
52
|
-
|
52
|
+
)
|
53
53
|
end
|
54
54
|
```
|
55
55
|
|
data/gruf-zipkin.gemspec
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
# Copyright (c) 2017-present, BigCommerce Pty. Ltd. All rights reserved
|
3
2
|
#
|
4
3
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
|
@@ -26,6 +25,7 @@ Gem::Specification.new do |spec|
|
|
26
25
|
spec.summary = %q{Plugin for zipkin tracing for gruf}
|
27
26
|
spec.description = spec.summary
|
28
27
|
spec.homepage = 'https://github.com/bigcommerce/gruf-zipkin'
|
28
|
+
spec.license = 'MIT'
|
29
29
|
|
30
30
|
spec.files = Dir['README.md', 'CHANGELOG.md', 'CODE_OF_CONDUCT.md', 'lib/**/*', 'gruf-zipkin.gemspec']
|
31
31
|
spec.require_paths = ['lib']
|
data/lib/gruf/zipkin.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
# Copyright (c) 2017-present, BigCommerce Pty. Ltd. All rights reserved
|
3
2
|
#
|
4
3
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
|
@@ -19,9 +18,14 @@ require_relative 'zipkin/version'
|
|
19
18
|
require_relative 'zipkin/headers'
|
20
19
|
require_relative 'zipkin/method'
|
21
20
|
require_relative 'zipkin/trace'
|
22
|
-
require_relative 'zipkin/
|
21
|
+
require_relative 'zipkin/interceptor'
|
23
22
|
|
23
|
+
##
|
24
|
+
# Gruf main base module
|
24
25
|
module Gruf
|
26
|
+
##
|
27
|
+
# Zipkin gruf module
|
28
|
+
#
|
25
29
|
module Zipkin
|
26
30
|
end
|
27
31
|
end
|
data/lib/gruf/zipkin/headers.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
# Copyright (c) 2017-present, BigCommerce Pty. Ltd. All rights reserved
|
3
2
|
#
|
4
3
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
|
@@ -26,11 +25,11 @@ module Gruf
|
|
26
25
|
# @property [Hash<Symbol|Array<String>>] Hash mapping of metadata keys
|
27
26
|
#
|
28
27
|
ZIPKIN_KEYS = {
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
28
|
+
parent_span_id: %w(x-b3-parentspanid X-B3-ParentSpanId HTTP_X_B3_PARENTSPANID),
|
29
|
+
span_id: %w(x-b3-spanid X-B3-SpanId HTTP_X_B3_SPANID),
|
30
|
+
trace_id: %w(x-b3-traceid X-B3-TraceId HTTP_X_B3_TRACEID),
|
31
|
+
sampled: %w(x-b3-sampled X-B3-Sampled HTTP_X_B3_SAMPLED),
|
32
|
+
flags: %w(x-b3-flags X-B3-Flags HTTP_X_B3_FLAGS)
|
34
33
|
}.freeze
|
35
34
|
|
36
35
|
##
|
@@ -1,4 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
# Copyright (c) 2017-present, BigCommerce Pty. Ltd. All rights reserved
|
3
2
|
#
|
4
3
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
|
@@ -16,30 +15,22 @@
|
|
16
15
|
#
|
17
16
|
module Gruf
|
18
17
|
module Zipkin
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
#
|
24
|
-
def setup
|
25
|
-
@config = ::ZipkinTracer::Config.new(nil, options).freeze
|
26
|
-
@tracer = ::ZipkinTracer::TracerFactory.new.tracer(@config)
|
27
|
-
end
|
28
|
-
|
18
|
+
##
|
19
|
+
# Intercepts calls to provide Zipkin tracing
|
20
|
+
#
|
21
|
+
class Interceptor < Gruf::Interceptors::ServerInterceptor
|
29
22
|
##
|
30
23
|
# Handle the gruf around hook and trace sampled requests
|
31
24
|
#
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
#
|
36
|
-
def around(call_signature, request, active_call, &block)
|
37
|
-
trace = build_trace(call_signature, request, active_call)
|
25
|
+
def call(&block)
|
26
|
+
# do this here to ensure the tracer is initialized before the trace block. Zipkin's library has poor OOE support
|
27
|
+
tr = tracer
|
38
28
|
|
39
|
-
|
29
|
+
trace = build_trace
|
30
|
+
if trace && trace.sampled?
|
40
31
|
result = nil
|
41
32
|
::ZipkinTracer::TraceContainer.with_trace_id(trace.trace_id) do
|
42
|
-
result = trace.trace!(
|
33
|
+
result = trace.trace!(tr, &block)
|
43
34
|
end
|
44
35
|
else
|
45
36
|
result = yield
|
@@ -47,31 +38,31 @@ module Gruf
|
|
47
38
|
result
|
48
39
|
end
|
49
40
|
|
41
|
+
private
|
42
|
+
|
50
43
|
##
|
51
|
-
# @return [
|
44
|
+
# @return [ZipkinTracer::Config]
|
52
45
|
#
|
53
|
-
def
|
54
|
-
|
46
|
+
def config
|
47
|
+
@config ||= ::ZipkinTracer::Config.new(nil, { sampled_as_boolean: false }.merge(options)).freeze
|
55
48
|
end
|
56
49
|
|
57
50
|
##
|
58
|
-
# @return [
|
51
|
+
# @return [Trace::ZipkinTracerBase]
|
59
52
|
#
|
60
|
-
def
|
61
|
-
@
|
53
|
+
def tracer
|
54
|
+
@tracer ||= ::ZipkinTracer::TracerFactory.new.tracer(config)
|
62
55
|
end
|
63
56
|
|
64
|
-
private
|
65
|
-
|
66
57
|
##
|
67
|
-
# @param [Symbol] call_signature
|
68
|
-
# @param [Object] request
|
69
|
-
# @param [GRPC::ActiveCall] active_call
|
70
58
|
# @return [Gruf::Zipkin::Trace]
|
71
59
|
#
|
72
|
-
def build_trace
|
73
|
-
method = Gruf::Zipkin::Method.new(active_call,
|
74
|
-
Gruf::Zipkin::Trace.new(method, service_key, options)
|
60
|
+
def build_trace
|
61
|
+
method = Gruf::Zipkin::Method.new(request.active_call, request.method_key, request.message)
|
62
|
+
Gruf::Zipkin::Trace.new(method, request.service_key, options)
|
63
|
+
rescue StandardError => e # catchall for zipkin failure
|
64
|
+
Gruf.logger.error "Failed to build zipkin trace: #{e.message}"
|
65
|
+
nil
|
75
66
|
end
|
76
67
|
end
|
77
68
|
end
|
data/lib/gruf/zipkin/method.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
# Copyright (c) 2017-present, BigCommerce Pty. Ltd. All rights reserved
|
3
2
|
#
|
4
3
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
|
@@ -29,7 +28,7 @@ module Gruf
|
|
29
28
|
#
|
30
29
|
def initialize(active_call, signature, request)
|
31
30
|
@active_call = active_call
|
32
|
-
@signature = signature.to_s
|
31
|
+
@signature = signature.to_s
|
33
32
|
@request = request
|
34
33
|
end
|
35
34
|
|
data/lib/gruf/zipkin/trace.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
# Copyright (c) 2017-present, BigCommerce Pty. Ltd. All rights reserved
|
3
2
|
#
|
4
3
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
|
@@ -71,7 +70,7 @@ module Gruf
|
|
71
70
|
begin
|
72
71
|
result = block.call(method.request, method.active_call)
|
73
72
|
span.record(::Trace::Annotation::SERVER_SEND)
|
74
|
-
rescue => e
|
73
|
+
rescue StandardError => e
|
75
74
|
if e.is_a?(::GRPC::BadStatus)
|
76
75
|
span.record_tag(METADATA_KEYS[:error], true)
|
77
76
|
span.record_tag(METADATA_KEYS[:grpc][:error], true)
|
data/lib/gruf/zipkin/version.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
# Copyright (c) 2017-present, BigCommerce Pty. Ltd. All rights reserved
|
3
2
|
#
|
4
3
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
|
@@ -16,6 +15,6 @@
|
|
16
15
|
#
|
17
16
|
module Gruf
|
18
17
|
module Zipkin
|
19
|
-
VERSION = '0.
|
18
|
+
VERSION = '1.0.0'.freeze
|
20
19
|
end
|
21
20
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gruf-zipkin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shaun McCormick
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-10-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -93,12 +93,13 @@ files:
|
|
93
93
|
- gruf-zipkin.gemspec
|
94
94
|
- lib/gruf/zipkin.rb
|
95
95
|
- lib/gruf/zipkin/headers.rb
|
96
|
-
- lib/gruf/zipkin/
|
96
|
+
- lib/gruf/zipkin/interceptor.rb
|
97
97
|
- lib/gruf/zipkin/method.rb
|
98
98
|
- lib/gruf/zipkin/trace.rb
|
99
99
|
- lib/gruf/zipkin/version.rb
|
100
100
|
homepage: https://github.com/bigcommerce/gruf-zipkin
|
101
|
-
licenses:
|
101
|
+
licenses:
|
102
|
+
- MIT
|
102
103
|
metadata: {}
|
103
104
|
post_install_message:
|
104
105
|
rdoc_options: []
|