Module: NetuitiveRailsAgent::RequestDataHook
- Includes:
- ControllerUtils
- Defined in:
- lib/netuitive_rails_agent/request_data.rb
Constant Summary collapse
- HEADERS_NAMES =
[ 'HTTP_X_REQUEST_START'.freeze, 'HTTP_X_QUEUE_START'.freeze, 'HTTP_X_MIDDLEWARE_START'.freeze ].freeze
Class Method Summary collapse
Instance Method Summary collapse
Methods included from ControllerUtils
#netuitive_action_name, #netuitive_controller_name, #netuitive_request_uri
Class Method Details
.header_start_time(headers) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/netuitive_rails_agent/request_data.rb', line 11 def self.header_start_time(headers) NetuitiveRailsAgent::ErrorLogger.guard('error during header_start_time') do if headers start_time = nil HEADERS_NAMES.each do |header_name| header = headers[header_name] next if header.nil? match = /\d+(\.\d{1,2})?/.match(header) if match.nil? NetuitiveRailsAgent::NetuitiveLogger.log.error "queue time header value #{header} is not recognized" next end header_time = match.to_s.to_f / NetuitiveRailsAgent::ConfigManager.queue_time_divisor NetuitiveRailsAgent::NetuitiveLogger.log.debug "queue header_time: #{header_time}" start_time = start_time.nil? || header_time < start_time ? header_time : start_time NetuitiveRailsAgent::NetuitiveLogger.log.debug "queue start_time: #{start_time}" end return nil if start_time.nil? return (Time.now.to_f - start_time) * 1000.0 end end nil end |
Instance Method Details
#netuitive_request_hook ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/netuitive_rails_agent/request_data.rb', line 35 def netuitive_request_hook return unless request NetuitiveRailsAgent::ErrorLogger.guard('error during netuitive_request_hook') do queue_time = NetuitiveRailsAgent::RequestDataHook.header_start_time(request.headers) if queue_time.nil? NetuitiveRailsAgent::NetuitiveLogger.log.info 'no queue time header found for request' return end NetuitiveRailsAgent::NetuitiveLogger.log.debug "queue_time: #{queue_time}" NetuitiveRailsAgent::NetuitiveLogger.log.debug 'sending queue_time metrics' NetuitiveRubyAPI.add_sample('action_controller.request.queue_time', queue_time) return unless netuitive_controller_name NetuitiveRailsAgent::NetuitiveLogger.log.debug "sending queue_time metrics with netuitive_controller_name #{netuitive_controller_name}" NetuitiveRubyAPI.add_sample("action_controller.#{netuitive_controller_name}.request.queue_time", queue_time) return unless netuitive_action_name NetuitiveRailsAgent::NetuitiveLogger.log.debug "sending queue_time metrics with netuitive_action_name #{netuitive_action_name}" NetuitiveRubyAPI.add_sample("action_controller.#{netuitive_controller_name}.#{netuitive_action_name}.request.queue_time", queue_time) end end |