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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NDI4NGMyZGY4OTA0Y2JjZmRjNmI5OGQ4NTViY2U4ZDIxZGFlN2QwNA==
4
+ N2EwMjEwNDA2OGNiMzBhNjE3NDBiNGVhNGNmZjI5NTZiYjhhMzg4Zg==
5
5
  data.tar.gz: !binary |-
6
- OTUyMTAyNTM2ZmQwNGM2ZWM3MGFjM2NiZDdmZjUzMjU3ZjZiMjhkOA==
6
+ Y2U3MjJmZmFjNTdhMTJiMDE5NzY4N2E1MjRlODUwODNiYzFmMmZlOQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MzMxMWNlYjM5OTY2NDdiZTM2OGMxMGExYzhiMjZhNTk2YWQ5YjY2YWNjNjk3
10
- ZTEwMGUzOTBkZjlmN2NhMDQ4YzU3Y2NjYjVkMjYwYTRlMTI2NzZiNzFkMTY2
11
- ODYzZWQxYTM1Y2FlZjZiMjY2ZjczODU0ZTVjMWIwYzQxNmQ1YTU=
9
+ YWJmNzNiZjg0NGJhNzFjZWQ5NTFiNjE2ODlmYjU5ZWM5NDBkZmI0YjJiYzRi
10
+ OGUxMzU5Mjk3NTk2MmQyYzU1Y2IwZGQ3ZDhiYjUwNDViNWUzMDEyZWU3NTIz
11
+ YTdiNTkyOTY2Nzg0OTU1NmU1NGM0ZGYwNDAxODNmOWE3MzE1MWY=
12
12
  data.tar.gz: !binary |-
13
- NjZhMjQyNzlmMTg1MDQ3YjQ4YmM0OWFmNWI0OTc4OGExNGIxMGVhMDE4YmJj
14
- NjczYzNjNTI3ZjBjMTU5NGU2Njg2NGY2YmJkZTg0ZDBiZjE2NGIwZTNlMjI4
15
- NDRmN2VhYWI0ZDhlM2E3Mjk5OWE2Y2IwZDA0ZWYxNmM0Yzk1NDI=
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
- scribe =
35
- if config[:scribe_server] then
36
- Scribe.new(config[:scribe_server])
37
- else
38
- Scribe.new()
39
- end
40
-
41
- scribe_max_buffer =
42
- if config[:scribe_max_buffer] then
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)
@@ -12,6 +12,6 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
  module ZipkinTracer
15
- VERSION = "0.2.1"
15
+ VERSION = "0.3.1"
16
16
  end
17
17
 
@@ -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.2.1
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: thin
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: []