Class: RubyZipkin::RackHandler
- Inherits:
-
Object
- Object
- RubyZipkin::RackHandler
- Defined in:
- lib/ruby-zipkin.rb
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app, service_name, scribe_server, scribe_port, uri_filter_list = [], http_header_filter_list = [], scribe_max_buffer = 10) ⇒ RackHandler
constructor
A new instance of RackHandler.
Constructor Details
#initialize(app, service_name, scribe_server, scribe_port, uri_filter_list = [], http_header_filter_list = [], scribe_max_buffer = 10) ⇒ RackHandler
Returns a new instance of RackHandler.
13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/ruby-zipkin.rb', line 13 def initialize(app, service_name, scribe_server, scribe_port, uri_filter_list =[], http_header_filter_list = [], scribe_max_buffer = 10) @app = app @lock = Mutex.new @service_name = service_name @scribe_port = scribe_port @sample_rate = 0.1 @uri_filter_list = uri_filter_list @http_header_filter_list = http_header_filter_list @scribe = Scribe.new("#{scribe_server}:#{scribe_port}") puts "using scribe server: #{@scribe.to_s}" puts "#{scribe_server}:#{scribe_port}" ::Trace.tracer = ::Trace::ZipkinTracer.new(Scriber.new(@scribe), scribe_max_buffer) end |
Instance Method Details
#call(env) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/ruby-zipkin.rb', line 27 def call(env) begin ::Trace.default_endpoint = ::Trace.default_endpoint.with_service_name(@service_name + "_#{normalized_uri(env['PATH_INFO'])}") ::Trace.sample_rate = 0.1 env[ZipkinTraceHeader::PARENT_SPAN_ID] = @spanid env[ZipkinTraceHeader::TRACE_ID] = @tid # the debug trace #id = ::Trace::TraceId.new(@tid, nil, ::Trace.generate_id, true, ::Trace::Flags::DEBUG) #::Trace.push(id) #::Trace.set_rpc_name("debug") #::Trace.record(::Trace::BinaryAnnotation.new("http.uri", '/debug', "STRING", ::Trace.default_endpoint)) @status, @headers, @response = @app.call(env) tracing_filter(get_or_create_trace_id2(env), env, @headers) #::Trace.pop rescue => e #Tracing errors shouldn't block a request. Rails.logger.info "Zipkin error: #{e} \n #{e.backtrace}" puts "Zipkin error: #{e} \n #{e.backtrace}" end [@status, @headers, @response] end |