zipkin-tracer 0.2.1 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
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: []