zipkin-tracer 0.34.0 → 0.35.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/lib/zipkin-tracer/config.rb +1 -11
- data/lib/zipkin-tracer/excon/zipkin-tracer.rb +1 -9
- data/lib/zipkin-tracer/faraday/zipkin-tracer.rb +1 -8
- data/lib/zipkin-tracer/rack/zipkin-tracer.rb +11 -16
- data/lib/zipkin-tracer/trace.rb +10 -1
- data/lib/zipkin-tracer/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3145da3d93716701cfe338e782717243946ec9d7b8337a4f67f4680dd2b3b06c
|
4
|
+
data.tar.gz: 857aa5010bbf1eaa5de81bf4bbfb17ba008c3e986e417740cdee6491e327fd7a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '085a771261ce989e0412d80080607872fd440e814877be5d2095c6a1d4d8fb8da7654583e52e940dece17406b425d26e76cced98419d866b5acd6970641d5f70'
|
7
|
+
data.tar.gz: 3d1041e44ae618d3886f47169b871b827e1246e37d6c7536207ea1eaf0b5120da8a1e56d878610b7f27c38beac26f2567a551f675d70325012122899ac6d128b
|
data/lib/zipkin-tracer/config.rb
CHANGED
@@ -8,7 +8,7 @@ module ZipkinTracer
|
|
8
8
|
attr_reader :service_name, :json_api_host,
|
9
9
|
:zookeeper, :sample_rate, :logger, :log_tracing,
|
10
10
|
:annotate_plugin, :filter_plugin, :whitelist_plugin,
|
11
|
-
:sampled_as_boolean,
|
11
|
+
:sampled_as_boolean,
|
12
12
|
:kafka_producer, :kafka_topic, :trace_id_128bit
|
13
13
|
|
14
14
|
def initialize(app, config_hash)
|
@@ -39,8 +39,6 @@ module ZipkinTracer
|
|
39
39
|
if @sampled_as_boolean
|
40
40
|
@logger && @logger.warn("Using a boolean in the Sampled header is deprecated. Consider setting sampled_as_boolean to false")
|
41
41
|
end
|
42
|
-
# Record the given tags on server receive, even if the zipkin headers were present in the incoming request?
|
43
|
-
@record_on_server_receive = parse_tags(config[:record_on_server_receive])
|
44
42
|
|
45
43
|
# When set to true, high 8-bytes will be prepended to trace_id.
|
46
44
|
# The upper 4-bytes are epoch seconds and the lower 4-bytes are random.
|
@@ -74,14 +72,6 @@ module ZipkinTracer
|
|
74
72
|
trace_id_128bit: false
|
75
73
|
}
|
76
74
|
|
77
|
-
def parse_tags(tag_names)
|
78
|
-
return {} unless present?(tag_names)
|
79
|
-
names = tag_names.split(",").map(&:strip)
|
80
|
-
(ZipkinTracer::RackHandler::DEFAULT_SERVER_RECV_TAGS.keys & names).each_with_object({}) do |name, tags|
|
81
|
-
tags[name] = ZipkinTracer::RackHandler::DEFAULT_SERVER_RECV_TAGS[name]
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
75
|
def present?(str)
|
86
76
|
return false if str.nil?
|
87
77
|
!!(/\A[[:space:]]*\z/ !~ str)
|
@@ -27,8 +27,7 @@ module ZipkinTracer
|
|
27
27
|
|
28
28
|
def response_call(datum)
|
29
29
|
if span = datum[:span]
|
30
|
-
|
31
|
-
record_response_tags(span, status) if status
|
30
|
+
span.record_status(response_status(datum))
|
32
31
|
Trace.tracer.end_span(span)
|
33
32
|
end
|
34
33
|
|
@@ -37,8 +36,6 @@ module ZipkinTracer
|
|
37
36
|
|
38
37
|
private
|
39
38
|
|
40
|
-
STATUS_ERROR_REGEXP = /\A(4.*|5.*)\z/.freeze
|
41
|
-
|
42
39
|
def b3_headers
|
43
40
|
{
|
44
41
|
trace_id: 'X-B3-TraceId',
|
@@ -61,11 +58,6 @@ module ZipkinTracer
|
|
61
58
|
datum[:response] && datum[:response][:status] && datum[:response][:status].to_s
|
62
59
|
end
|
63
60
|
|
64
|
-
def record_response_tags(span, status)
|
65
|
-
span.record_tag(Trace::Span::Tag::STATUS, status)
|
66
|
-
span.record_tag(Trace::Span::Tag::ERROR, status) if STATUS_ERROR_REGEXP.match(status)
|
67
|
-
end
|
68
|
-
|
69
61
|
def trace!(datum, trace_id)
|
70
62
|
method = datum[:method].to_s
|
71
63
|
url_string = Excon::Utils::request_uri(datum)
|
@@ -25,8 +25,6 @@ module ZipkinTracer
|
|
25
25
|
|
26
26
|
private
|
27
27
|
|
28
|
-
STATUS_ERROR_REGEXP = /\A(4.*|5.*)\z/.freeze
|
29
|
-
|
30
28
|
def b3_headers
|
31
29
|
{
|
32
30
|
trace_id: 'X-B3-TraceId',
|
@@ -51,7 +49,7 @@ module ZipkinTracer
|
|
51
49
|
span.record_tag(Trace::Span::Tag::METHOD, method.upcase)
|
52
50
|
span.record_tag(Trace::Span::Tag::PATH, url.path)
|
53
51
|
response = @app.call(env).on_complete do |renv|
|
54
|
-
|
52
|
+
span.record_status(renv[:status])
|
55
53
|
end
|
56
54
|
end
|
57
55
|
response
|
@@ -70,10 +68,5 @@ module ZipkinTracer
|
|
70
68
|
span.record_tag(Trace::Span::Tag::ERROR, msg)
|
71
69
|
end
|
72
70
|
|
73
|
-
def record_response_tags(span, status)
|
74
|
-
span.record_tag(Trace::Span::Tag::STATUS, status)
|
75
|
-
span.record_tag(Trace::Span::Tag::ERROR, status) if STATUS_ERROR_REGEXP.match(status)
|
76
|
-
end
|
77
|
-
|
78
71
|
end
|
79
72
|
end
|
@@ -11,10 +11,6 @@ module ZipkinTracer
|
|
11
11
|
PATH_INFO = Rack::PATH_INFO rescue 'PATH_INFO'.freeze
|
12
12
|
REQUEST_METHOD = Rack::REQUEST_METHOD rescue 'REQUEST_METHOD'.freeze
|
13
13
|
|
14
|
-
DEFAULT_SERVER_RECV_TAGS = {
|
15
|
-
Trace::Span::Tag::PATH => PATH_INFO
|
16
|
-
}.freeze
|
17
|
-
|
18
14
|
def initialize(app, config = nil)
|
19
15
|
@app = app
|
20
16
|
@config = Config.new(app, config).freeze
|
@@ -37,6 +33,11 @@ module ZipkinTracer
|
|
37
33
|
|
38
34
|
private
|
39
35
|
|
36
|
+
SERVER_RECV_TAGS = {
|
37
|
+
Trace::Span::Tag::PATH => PATH_INFO,
|
38
|
+
Trace::Span::Tag::METHOD => REQUEST_METHOD
|
39
|
+
}.freeze
|
40
|
+
|
40
41
|
def span_name(env)
|
41
42
|
"#{env[REQUEST_METHOD].to_s.downcase} #{Application.route(env)}".strip
|
42
43
|
end
|
@@ -46,23 +47,17 @@ module ZipkinTracer
|
|
46
47
|
end
|
47
48
|
|
48
49
|
def trace!(span, zipkin_env, &block)
|
49
|
-
trace_request_information(span, zipkin_env)
|
50
|
-
span.kind = Trace::Span::Kind::SERVER
|
51
50
|
status, headers, body = yield
|
52
51
|
ensure
|
52
|
+
trace_server_information(span, zipkin_env, status)
|
53
|
+
|
53
54
|
annotate_plugin(span, zipkin_env.env, status, headers, body)
|
54
55
|
end
|
55
56
|
|
56
|
-
def
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
elsif !zipkin_env.called_with_zipkin_headers?
|
61
|
-
# if the request comes from a non zipkin-enabled source record the default tags
|
62
|
-
DEFAULT_SERVER_RECV_TAGS
|
63
|
-
end
|
64
|
-
return if tags.nil?
|
65
|
-
tags.each { |annotation_key, env_key| span.record_tag(annotation_key, zipkin_env.env[env_key]) }
|
57
|
+
def trace_server_information(span, zipkin_env, status)
|
58
|
+
span.kind = Trace::Span::Kind::SERVER
|
59
|
+
span.record_status(status)
|
60
|
+
SERVER_RECV_TAGS.each { |annotation_key, env_key| span.record_tag(annotation_key, zipkin_env.env[env_key]) }
|
66
61
|
end
|
67
62
|
end
|
68
63
|
end
|
data/lib/zipkin-tracer/trace.rb
CHANGED
@@ -221,7 +221,7 @@ module Trace
|
|
221
221
|
end
|
222
222
|
|
223
223
|
def record_tag(key, value)
|
224
|
-
@tags[key] = value
|
224
|
+
@tags[key] = value.to_s
|
225
225
|
end
|
226
226
|
|
227
227
|
def record_local_component(value)
|
@@ -232,6 +232,15 @@ module Trace
|
|
232
232
|
!@span_id.parent_id.nil?
|
233
233
|
end
|
234
234
|
|
235
|
+
STATUS_ERROR_REGEXP = /\A(4.*|5.*)\z/.freeze
|
236
|
+
|
237
|
+
def record_status(status)
|
238
|
+
return if status.nil?
|
239
|
+
status = status.to_s
|
240
|
+
record_tag(Tag::STATUS, status)
|
241
|
+
record_tag(Tag::ERROR, status) if STATUS_ERROR_REGEXP.match(status)
|
242
|
+
end
|
243
|
+
|
235
244
|
private
|
236
245
|
|
237
246
|
UNKNOWN_DURATION = 0 # mark duration was not set
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zipkin-tracer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.35.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Franklin Hu
|
@@ -13,7 +13,7 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date: 2019-03-
|
16
|
+
date: 2019-03-30 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: faraday
|