class Rails::Middleware::Datadog
Public Class Methods
new(app, opts={})
click to toggle source
# File lib/rails/middleware/datadog.rb, line 4 def initialize(app, opts={}) @app = app statsd_host = opts[:statsd_host] || "localhost" statsd_port = opts[:statsd_port] || 8125 namespace = opts[:statsd_prefix] || nil @statsd = opts[:statsd] || Ruby::Reporters::Datadog.new(opts) end
Public Instance Methods
call(env)
click to toggle source
# File lib/rails/middleware/datadog.rb, line 14 def call(env) start_request_time = Time.now status, header, body = @app.call(env) end_request_time = Time.now report_to_statsd(start_request_time, end_request_time, env, status) [status, header, body] end
Private Instance Methods
compute_elapsed_time_ms(start_request_time, end_request_time)
click to toggle source
# File lib/rails/middleware/datadog.rb, line 33 def compute_elapsed_time_ms(start_request_time, end_request_time) (end_request_time - start_request_time) * 1000 end
extract_method_from_request(env)
click to toggle source
# File lib/rails/middleware/datadog.rb, line 29 def extract_method_from_request(env) env['REQUEST_METHOD'] end
extract_path_from_request(env)
click to toggle source
# File lib/rails/middleware/datadog.rb, line 25 def extract_path_from_request(env) env['PATH_INFO'] end
report_to_statsd(start_request_time, end_request_time, env, status)
click to toggle source
# File lib/rails/middleware/datadog.rb, line 37 def report_to_statsd(start_request_time, end_request_time, env, status) elapsed_time_ms = compute_elapsed_time_ms(start_request_time, end_request_time) request_method = extract_method_from_request(env) path = extract_path_from_request(env) @statsd.response_time_ms(path, request_method, status, elapsed_time_ms) end