1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
# frozen_string_literal: true
module Labkit
module Tracing
# Instrument external HTTP calls made by the HTTP client libraries. This
# tracing instrumenter listens to the events broadcasted from the
# publishers injected into the libraries whenever there is a request.
module ExternalHttp
include Labkit::Tracing::TracingCommon
autoload :RequestInstrumenter, "labkit/tracing/external_http/request_instrumenter"
def self.instrument
Labkit::NetHttpPublisher.labkit_prepend!
Labkit::ExconPublisher.labkit_prepend!
Labkit::HTTPClientPublisher.labkit_prepend!
subscriptions = [
::ActiveSupport::Notifications.subscribe(::Labkit::EXTERNAL_HTTP_NOTIFICATION_TOPIC, RequestInstrumenter.new),
]
create_unsubscriber subscriptions
end
end
end
end
|