Class: RubyZipkin::RackHandler
- Inherits:
-
Object
- Object
- RubyZipkin::RackHandler
- Defined in:
- lib/rubyzipkin.rb
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app, service_name, scribe_server, scribe_port, uri_filter_list = [], http_header_filter_list = [], uri_sample_filter_list = {}, sampling_rate = 0.0001, scribe_max_buffer = 50) ⇒ RackHandler
constructor
A new instance of RackHandler.
Constructor Details
#initialize(app, service_name, scribe_server, scribe_port, uri_filter_list = [], http_header_filter_list = [], uri_sample_filter_list = {}, sampling_rate = 0.0001, scribe_max_buffer = 50) ⇒ RackHandler
Returns a new instance of RackHandler.
18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/rubyzipkin.rb', line 18 def initialize(app, service_name, scribe_server, scribe_port, uri_filter_list = [], http_header_filter_list = [], uri_sample_filter_list = {}, sampling_rate = 0.0001, scribe_max_buffer = 50 ) @app = app @lock = Mutex.new @service_name = service_name @scribe_port = scribe_port @sample_rate = sampling_rate @uri_filter_list = uri_filter_list @http_header_filter_list = http_header_filter_list @uri_sample_filter_list = uri_sample_filter_list @scribe = Scribe.new("#{scribe_server}:#{scribe_port}") ::Trace.tracer = ::Trace::ZipkinTracer.new(Scriber.new(@scribe), scribe_max_buffer) end |
Instance Method Details
#call(env) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/rubyzipkin.rb', line 32 def call(env) begin ::Trace.default_endpoint = ::Trace.default_endpoint.with_service_name(@service_name + "_#{normalized_uri(env['PATH_INFO'])}") set_sample_rate(env) trace_id = get_or_create_trace_id(env) env[ZipkinTraceHeader::PARENT_SPAN_ID] = @spanid env[ZipkinTraceHeader::TRACE_ID] = @tid rescue => e $stderr.puts "ZIPKIN [ERR] #{e}" end begin @status, @headers, @response = @app.call(env) tracing_filter(trace_id, env, @headers) rescue => e # we want to do the call even if zipkin fails $stderr.puts "ZIPKIN [ERR] #{e} \n\n\n #{e.backtrace}" end [@status, @headers, @response] end |