zipkin-tracer 0.34.0 → 0.35.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|