module NewRelic::Agent::DistributedTraceMetrics
Constants
- ALL_OTHER_SUFFIX
- ALL_SUFFIX
- ALL_WEB_SUFFIX
- UNKNOWN_CALLER_PREFIX
Public Instance Methods
Source
# File lib/new_relic/agent/distributed_tracing/distributed_trace_metrics.rb, line 35 def prefix_for_metric(name, transaction, payload) if payload "#{name}/" \ "#{payload.parent_type}/" \ "#{payload.parent_account_id}/" \ "#{payload.parent_app_id}/" \ "#{transaction.distributed_tracer.caller_transport_type}" else UNKNOWN_CALLER_PREFIX % [name, transaction.distributed_tracer.caller_transport_type] end end
Source
# File lib/new_relic/agent/distributed_tracing/distributed_trace_metrics.rb, line 47 def record_caller_by_duration_metrics(transaction, payload) prefix = prefix_for_metric('DurationByCaller', transaction, payload) record_unscoped_metric(transaction, prefix, transaction.duration) end
Source
# File lib/new_relic/agent/distributed_tracing/distributed_trace_metrics.rb, line 60 def record_errors_by_caller_metrics(transaction, payload) return unless transaction.exceptions.size > 0 prefix = prefix_for_metric('ErrorsByCaller', transaction, payload) record_unscoped_metric(transaction, prefix, 1) end
Source
# File lib/new_relic/agent/distributed_tracing/distributed_trace_metrics.rb, line 24 def record_metrics_for_transaction(transaction) return unless Agent.config[:'distributed_tracing.enabled'] dt = transaction.distributed_tracer payload = dt.distributed_trace_payload || dt.trace_state_payload record_caller_by_duration_metrics(transaction, payload) record_transport_duration_metrics(transaction, payload) record_errors_by_caller_metrics(transaction, payload) end
Source
# File lib/new_relic/agent/distributed_tracing/distributed_trace_metrics.rb, line 52 def record_transport_duration_metrics(transaction, payload) return unless payload prefix = prefix_for_metric('TransportDuration', transaction, payload) duration = transaction.calculate_transport_duration(payload) record_unscoped_metric(transaction, prefix, duration) end
Source
# File lib/new_relic/agent/distributed_tracing/distributed_trace_metrics.rb, line 16 def transaction_type_suffix if Transaction.recording_web_transaction? ALL_WEB_SUFFIX else ALL_OTHER_SUFFIX end end
Private Instance Methods
Source
# File lib/new_relic/agent/distributed_tracing/distributed_trace_metrics.rb, line 69 def record_unscoped_metric(transaction, prefix, duration) transaction.metrics.record_unscoped("#{prefix}/#{ALL_SUFFIX}", duration) transaction.metrics.record_unscoped("#{prefix}/#{transaction_type_suffix}", duration) end