zipkin-tracer 0.2.1 → 0.3.1
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 +8 -8
- data/lib/zipkin-tracer.rb +15 -22
- data/lib/zipkin-tracer/version.rb +1 -1
- data/lib/zipkin-tracer/zipkin_kafka_tracer.rb +65 -0
- metadata +33 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
N2EwMjEwNDA2OGNiMzBhNjE3NDBiNGVhNGNmZjI5NTZiYjhhMzg4Zg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
Y2U3MjJmZmFjNTdhMTJiMDE5NzY4N2E1MjRlODUwODNiYzFmMmZlOQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YWJmNzNiZjg0NGJhNzFjZWQ5NTFiNjE2ODlmYjU5ZWM5NDBkZmI0YjJiYzRi
|
10
|
+
OGUxMzU5Mjk3NTk2MmQyYzU1Y2IwZGQ3ZDhiYjUwNDViNWUzMDEyZWU3NTIz
|
11
|
+
YTdiNTkyOTY2Nzg0OTU1NmU1NGM0ZGYwNDAxODNmOWE3MzE1MWY=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZjMxM2MzZGQ2MzhkNzc3YTAyZWQxYjQyNzFjN2FjYmRiYzk3ODE0NzUwZmNl
|
14
|
+
MDI5MDgzNmFlMTgxMGYyMzU3Mzk3ZWQ4Y2Q1YWMxZDZmNDE3OWE0ZTkwYjhk
|
15
|
+
YWFjYjA3YzM5NDNhYmUxM2M4MTViMWFjMmQwNThhMmY5ZjljMmI=
|
data/lib/zipkin-tracer.rb
CHANGED
@@ -17,6 +17,11 @@ require 'scribe'
|
|
17
17
|
|
18
18
|
require 'zipkin-tracer/careless_scribe'
|
19
19
|
|
20
|
+
if RUBY_PLATFORM == 'java'
|
21
|
+
require 'hermann/producer'
|
22
|
+
require 'zipkin-tracer/zipkin_kafka_tracer'
|
23
|
+
end
|
24
|
+
|
20
25
|
module ZipkinTracer extend self
|
21
26
|
|
22
27
|
class RackHandler
|
@@ -31,32 +36,20 @@ module ZipkinTracer extend self
|
|
31
36
|
@service_name = config[:service_name]
|
32
37
|
@service_port = config[:service_port]
|
33
38
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
config[:scribe_max_buffer]
|
44
|
-
else
|
45
|
-
10
|
46
|
-
end
|
47
|
-
|
48
|
-
@sample_rate =
|
49
|
-
if config[:sample_rate] then
|
50
|
-
config[:sample_rate]
|
51
|
-
else
|
52
|
-
0.1
|
53
|
-
end
|
39
|
+
::Trace.tracer = if config[:scribe_server] && defined?(::Scribe)
|
40
|
+
scribe = config[:scribe_server] ? Scribe.new(config[:scribe_server]) : Scribe.new()
|
41
|
+
scribe_max_buffer = config[:scribe_max_buffer] ? config[:scribe_max_buffer] : 10
|
42
|
+
::Trace::ZipkinTracer.new(CarelessScribe.new(scribe), scribe_max_buffer)
|
43
|
+
elsif config[:zookeeper] && RUBY_PLATFORM == 'java' && defined?(::Hermann)
|
44
|
+
kafkaTracer = ::Trace::ZipkinKafkaTracer.new
|
45
|
+
kafkaTracer.connect(config[:zookeeper])
|
46
|
+
kafkaTracer
|
47
|
+
end
|
54
48
|
|
49
|
+
@sample_rate = config[:sample_rate] ? config[:sample_rate] : 0.1
|
55
50
|
@annotate_plugin = config[:annotate_plugin] # call for trace annotation
|
56
51
|
@filter_plugin = config[:filter_plugin] # skip tracing if returns false
|
57
52
|
@whitelist_plugin = config[:whitelist_plugin] # force sampling if returns true
|
58
|
-
|
59
|
-
::Trace.tracer = ::Trace::ZipkinTracer.new(CarelessScribe.new(scribe), scribe_max_buffer)
|
60
53
|
end
|
61
54
|
|
62
55
|
def call(env)
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'finagle-thrift'
|
2
|
+
require 'finagle-thrift/tracer'
|
3
|
+
require 'hermann/producer'
|
4
|
+
require 'hermann/discovery/zookeeper'
|
5
|
+
|
6
|
+
module Trace
|
7
|
+
class ZipkinKafkaTracer < Tracer
|
8
|
+
TRACER_CATEGORY = "zipkin".freeze
|
9
|
+
DEFAULT_KAFKA_TOPIC = "zipkin_kafka".freeze
|
10
|
+
|
11
|
+
def initialize(opts={})
|
12
|
+
@logger = opts[:logger]
|
13
|
+
@topic = opts[:topic] || DEFAULT_KAFKA_TOPIC
|
14
|
+
reset
|
15
|
+
end
|
16
|
+
|
17
|
+
# need to connect after initialization
|
18
|
+
def connect(zookeepers)
|
19
|
+
broker_ids = Hermann::Discovery::Zookeeper.new(zookeepers).get_brokers
|
20
|
+
@producer = Hermann::Producer.new(nil, broker_ids)
|
21
|
+
end
|
22
|
+
|
23
|
+
def record(id, annotation)
|
24
|
+
return unless id.sampled?
|
25
|
+
span = get_span_for_id(id)
|
26
|
+
|
27
|
+
case annotation
|
28
|
+
when BinaryAnnotation
|
29
|
+
span.binary_annotations << annotation
|
30
|
+
when Annotation
|
31
|
+
span.annotations << annotation
|
32
|
+
end
|
33
|
+
|
34
|
+
flush!
|
35
|
+
end
|
36
|
+
|
37
|
+
def set_rpc_name(id, name)
|
38
|
+
return unless id.sampled?
|
39
|
+
span = get_span_for_id(id)
|
40
|
+
span.name = name.to_s
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
def reset
|
45
|
+
@spans = {}
|
46
|
+
end
|
47
|
+
|
48
|
+
def get_span_for_id(id)
|
49
|
+
key = id.span_id.to_s
|
50
|
+
@spans[key] ||= begin
|
51
|
+
Span.new("", id)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def flush!
|
56
|
+
messages = @spans.values.map do |span|
|
57
|
+
buf = ''
|
58
|
+
trans = Thrift::MemoryBufferTransport.new(buf)
|
59
|
+
oprot = Thrift::BinaryProtocol.new(trans)
|
60
|
+
span.to_thrift.write(oprot)
|
61
|
+
@producer.push(buf, :topic => @topic).value!
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
metadata
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zipkin-tracer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Franklin Hu
|
8
8
|
- R Tyler Croy
|
9
|
+
- James Way
|
9
10
|
autorequire:
|
10
11
|
bindir: bin
|
11
12
|
cert_chain: []
|
@@ -96,7 +97,7 @@ dependencies:
|
|
96
97
|
- !ruby/object:Gem::Version
|
97
98
|
version: '0'
|
98
99
|
- !ruby/object:Gem::Dependency
|
99
|
-
name:
|
100
|
+
name: pry
|
100
101
|
requirement: !ruby/object:Gem::Requirement
|
101
102
|
requirements:
|
102
103
|
- - ! '>='
|
@@ -109,16 +110,46 @@ dependencies:
|
|
109
110
|
- - ! '>='
|
110
111
|
- !ruby/object:Gem::Version
|
111
112
|
version: '0'
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: hermann
|
115
|
+
requirement: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - ~>
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0.25'
|
120
|
+
type: :development
|
121
|
+
prerelease: false
|
122
|
+
version_requirements: !ruby/object:Gem::Requirement
|
123
|
+
requirements:
|
124
|
+
- - ~>
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: '0.25'
|
127
|
+
- !ruby/object:Gem::Dependency
|
128
|
+
name: scribe
|
129
|
+
requirement: !ruby/object:Gem::Requirement
|
130
|
+
requirements:
|
131
|
+
- - ~>
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: 0.2.4
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
requirements:
|
138
|
+
- - ~>
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: 0.2.4
|
112
141
|
description: Adds tracing instrumentation for ruby applications
|
113
142
|
email:
|
114
143
|
- franklin@twitter.com
|
115
144
|
- tyler@monkeypox.org
|
145
|
+
- jamescway@gmail.com
|
116
146
|
executables: []
|
117
147
|
extensions: []
|
118
148
|
extra_rdoc_files: []
|
119
149
|
files:
|
120
150
|
- lib/zipkin-tracer/careless_scribe.rb
|
121
151
|
- lib/zipkin-tracer/version.rb
|
152
|
+
- lib/zipkin-tracer/zipkin_kafka_tracer.rb
|
122
153
|
- lib/zipkin-tracer.rb
|
123
154
|
homepage: https://github.com/openzipkin/zipkin-tracer
|
124
155
|
licenses: []
|