module NewRelic::Agent::Instrumentation::Kinesis
Constants
- AWS_KINESIS_DATA_STREAMS
- INSTRUMENTED_METHODS
- KINESIS
- MESSAGE_BROKER_SEGMENT_METHODS
Public Instance Methods
Source
# File lib/new_relic/agent/instrumentation/aws_sdk_kinesis/instrumentation.rb, line 83 def get_arn(params) stream_arn = params&.dig(:stream_arn) return stream_arn if stream_arn stream_name = params&.dig(:stream_name) NewRelic::Agent::Aws.create_arn(KINESIS.downcase, "stream/#{stream_name}", config&.region, nr_account_id) if stream_name end
Source
# File lib/new_relic/agent/instrumentation/aws_sdk_kinesis/instrumentation.rb, line 62 def get_segment_name(method_name, params) stream_name = params&.dig(:stream_name) return "#{KINESIS}/#{method_name}/#{stream_name}" if stream_name "#{KINESIS}/#{method_name}" rescue => e NewRelic::Agent.logger.warn("Failed to create segment name: #{e}") end
Source
# File lib/new_relic/agent/instrumentation/aws_sdk_kinesis/instrumentation.rb, line 71 def get_stream_name(params, arn) params&.dig(:stream_name) || arn.split('/').last || 'unknown' rescue => e NewRelic::Agent.logger.warn("Failed to get stream name: #{e}") end
Source
# File lib/new_relic/agent/instrumentation/aws_sdk_kinesis/instrumentation.rb, line 33 def instrument_method_with_new_relic(method_name, *args) return yield unless NewRelic::Agent::Tracer.tracing_enabled? NewRelic::Agent.record_instrumentation_invocation(KINESIS) params = args[0] arn = get_arn(params) if params if MESSAGE_BROKER_SEGMENT_METHODS.include?(method_name) stream_name = get_stream_name(params, arn) segment = NewRelic::Agent::Tracer.start_message_broker_segment( action: method_name == 'get_records' ? :consume : :produce, library: KINESIS, destination_type: :stream, destination_name: stream_name ) else segment = NewRelic::Agent::Tracer.start_segment(name: get_segment_name(method_name, params)) end segment&.add_agent_attribute('cloud.resource_id', arn) if arn begin NewRelic::Agent::Tracer.capture_segment_error(segment) { yield } ensure segment&.add_agent_attribute('cloud.platform', AWS_KINESIS_DATA_STREAMS) segment&.finish end end
Source
# File lib/new_relic/agent/instrumentation/aws_sdk_kinesis/instrumentation.rb, line 77 def nr_account_id return @nr_account_id if defined?(@nr_account_id) @nr_account_id = NewRelic::Agent::Aws.get_account_id(config) end