Faraday::Tracer

OpenTracing compatible Faraday middleware:

  • It wraps all outgoing requests in spans
  • It adds the trace context to outgoing requests

Installation

Add this line to your application's Gemfile:

gem 'signalfx-faraday-tracer'

Usage

Using request context

require 'opentracing'
OpenTracing.global_tracer = TracerImplementation.new

require 'faraday'
require 'faraday/tracer'

conn = Faraday.new(url: 'http://localhost:3000/') do |faraday|
  # Add tracing support
  faraday.use Faraday::Tracer

  # default Faraday stack
  faraday.request :url_encoded
  faraday.adapter Faraday.default_adapter
end

span = request.env['rack.span'] # when using rack-tracer gem

conn.post('/test') do |request|
  # Leave undefined or set span to nil if there's no existing span
  request.options.context = {span: span}
end

Defining span in the connection builder

require 'opentracing'
OpenTracing.global_tracer = TracerImplementation.new

require 'faraday'
require 'faraday/tracer'

# Use already existing span to use it as as a parent span. In case there is no
# existing span leave it nil to start a new trace.
span = request.env['rack.span'] # when using rack-tracer gem

conn = Faraday.new(url: 'http://localhost:3000/') do |faraday|
  faraday.use Faraday::Tracer, span: span

  # default Faraday stack
  faraday.request :url_encoded
  faraday.adapter Faraday.default_adapter
end

Span name

By default, all spans are given a default name. You may also override this by passing a :span_name in the middleware options hash and/or the request options.

Service name

It's possible to define the remote service name by using :service_name option.

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/opentracing-contrib/ruby-faraday-tracer.

License

The gem is available as open source under the terms of the MIT License.