Instrument HTTP Requests

Learn how to manually instrument your code to use Sentry's Requests module.

As a prerequisite to setting up Requests, you’ll need to first set up performance monitoring. Once this is done, the Ruby SDK will automatically instrument outgoing HTTP requests made via Net::HTTP. If that doesn't fit your use case, you can set up using custom instrumentation.

For detailed information about which data can be set, see the Requests Module developer specifications.

NOTE: Refer to HTTP Span Data Conventions for a full list of the span data attributes.

Here is an example of an instrumented function that makes HTTP requests:

Copied
require 'uri'

def make_request(method, url)
  Sentry.with_child_span(op: 'http.client', description: "#{method} #{url}") do |span|
    span.set_data('http.request.method', method)

    parsed_url = URI.parse(url)
    span.set_data('url', url)
    span.set_data('server.address', parsed_url.hostname)
    span.set_data('server.port', parsed_url.port)

    # make your custom HTTP request
    response = do_request(method: method, url: url)

    span.set_data('http.response.status_code', response.status_code)
    span.set_data('http.response_content_length', response.headers['content-length'])

    response
  end
end
Help improve this content
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) or suggesting an update ("yeah, this would be better").