rubyzipkin 0.3.11 → 0.3.12

Sign up to get free protection for your applications and to get access to all the features.
@@ -20,6 +20,19 @@ module RubyZipkin
20
20
  return false
21
21
  end
22
22
 
23
+ # Matcher to get a custom sample rate for a specific URI paths.
24
+ # returns the sample rate or nil
25
+ def self.UriSamplingMatches?(uri, uri_hash = {})
26
+
27
+ uri_hash.each do |key, value|
28
+ if uri.to_s.match key
29
+ return value
30
+ end
31
+ end
32
+
33
+ return nil
34
+ end
35
+
23
36
  # Filter a string based on a keyword blacklist
24
37
  # Meant to define if a key should be traced or not.
25
38
  def self.KeywordFilterMatches?(keyword, keyword_blacklist = [])
@@ -1,3 +1,3 @@
1
1
  module RubyZipkin
2
- VERSION = "0.3.11"
2
+ VERSION = "0.3.12"
3
3
  end
data/lib/rubyzipkin.rb CHANGED
@@ -14,7 +14,7 @@ module RubyZipkin extend self
14
14
 
15
15
  class RackHandler
16
16
 
17
- def initialize(app, service_name, scribe_server, scribe_port, uri_filter_list = [], http_header_filter_list = [], scribe_max_buffer = 10, sampling_rate = 0.01, uri_sample_filter_list = {})
17
+ def initialize(app, service_name, scribe_server, scribe_port, uri_filter_list = [], http_header_filter_list = [], uri_sample_filter_list = {}, sampling_rate = 0.01, scribe_max_buffer = 10 )
18
18
  @app = app
19
19
  @lock = Mutex.new
20
20
 
@@ -23,6 +23,7 @@ module RubyZipkin extend self
23
23
  @sample_rate = sampling_rate
24
24
  @uri_filter_list = uri_filter_list
25
25
  @http_header_filter_list = http_header_filter_list
26
+ @uri_sample_filter_list = uri_sample_filter_list
26
27
  @scribe = Scribe.new("#{scribe_server}:#{scribe_port}")
27
28
  ::Trace.tracer = ::Trace::ZipkinTracer.new(Scriber.new(@scribe), scribe_max_buffer)
28
29
  end
@@ -30,7 +31,9 @@ module RubyZipkin extend self
30
31
  def call(env)
31
32
  begin
32
33
  ::Trace.default_endpoint = ::Trace.default_endpoint.with_service_name(@service_name + "_#{normalized_uri(env['PATH_INFO'])}")
33
- ::Trace.sample_rate = @sampling_rate
34
+
35
+ set_sample_rate(env)
36
+
34
37
  env[ZipkinTraceHeader::PARENT_SPAN_ID] = @spanid
35
38
  env[ZipkinTraceHeader::TRACE_ID] = @tid
36
39
  @status, @headers, @response = @app.call(env)
@@ -43,6 +46,17 @@ module RubyZipkin extend self
43
46
  [@status, @headers, @response]
44
47
  end
45
48
 
49
+ private
50
+ def set_sample_rate(env)
51
+ custom_sample_rate =RubyZipkin::TraceFilter.UriSamplingMatches?(normalized_uri(env["PATH_INFO"]), @uri_sample_filter_list)
52
+
53
+ if custom_sample_rate
54
+ ::Trace.sample_rate = custom_sample_rate
55
+ else
56
+ ::Trace.sample_rate = @sample_rate
57
+ end
58
+ end
59
+
46
60
  private
47
61
  def tracing_filter(trace_id, env, headers=nil)
48
62
  if RubyZipkin::TraceFilter.UriFilterMatches?(normalized_uri(env["PATH_INFO"]), @uri_filter_list)
@@ -115,12 +129,11 @@ module RubyZipkin extend self
115
129
  @spanid = Trace.generate_id
116
130
  env[ZipkinTraceHeader::SPAN_ID] = @spanid
117
131
 
118
- # from Finagle source: flags are 0 = none , 1 = debug
119
- Trace::TraceId.new @tid, @parentspan, @spanid, true, ::TRACE::Flags::DEBUG
132
+ Trace::TraceId.new @tid, @parentspan, @spanid, true
120
133
  end
121
134
 
122
135
  def get_or_create_trace_id2(env)
123
- ::Trace::TraceId.new(::Trace.generate_id, nil, ::Trace.generate_id, true, ::Trace::Flags::DEBUG)
136
+ ::Trace::TraceId.new(::Trace.generate_id, nil, ::Trace.generate_id, true)
124
137
  end
125
138
  end
126
139
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubyzipkin
3
3
  version: !ruby/object:Gem::Version
4
- hash: 5
4
+ hash: 11
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 11
10
- version: 0.3.11
9
+ - 12
10
+ version: 0.3.12
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ivan Marcin
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2013-11-05 00:00:00 Z
18
+ date: 2013-11-18 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: scribe