Module: NewRelic::Agent::SpanEventPrimitive
- Extended by:
- SpanEventPrimitive
- Includes:
- Coerce
- Included in:
- SpanEventPrimitive
- Defined in:
- lib/new_relic/agent/span_event_primitive.rb
Constant Summary collapse
- ELLIPSIS =
Strings for static keys of the event structure
'...'
- TYPE_KEY =
'type'
- TRACE_ID_KEY =
'traceId'
- GUID_KEY =
'guid'
- PARENT_ID_KEY =
'parentId'
- TRANSACTION_ID_KEY =
'transactionId'
- SAMPLED_KEY =
'sampled'
- PRIORITY_KEY =
'priority'
- TIMESTAMP_KEY =
'timestamp'
- DURATION_KEY =
'duration'
- NAME_KEY =
'name'
- CATEGORY_KEY =
'category'
- HTTP_URL_KEY =
'http.url'
- HTTP_METHOD_KEY =
'http.method'
- HTTP_REQUEST_METHOD_KEY =
'http.request.method'
- HTTP_STATUS_CODE_KEY =
'http.statusCode'
- COMPONENT_KEY =
'component'
- DB_INSTANCE_KEY =
'db.instance'
- DB_STATEMENT_KEY =
'db.statement'
- DB_SYSTEM_KEY =
'db.system'
- PEER_ADDRESS_KEY =
'peer.address'
- PEER_HOSTNAME_KEY =
'peer.hostname'
- SERVER_ADDRESS_KEY =
'server.address'
- SERVER_PORT_KEY =
'server.port'
- SPAN_KIND_KEY =
'span.kind'
- ENTRY_POINT_KEY =
'nr.entryPoint'
- TRUSTED_PARENT_KEY =
'trustedParentId'
- TRACING_VENDORS_KEY =
'tracingVendors'
- TRANSACTION_NAME_KEY =
'transaction.name'
- EVENT_TYPE =
Strings for static values of the event structure
'Span'
- GENERIC_CATEGORY =
'generic'
- HTTP_CATEGORY =
'http'
- DATASTORE_CATEGORY =
'datastore'
- CLIENT =
'client'
Instance Method Summary collapse
-
#error_attributes(segment) ⇒ Object
Builds a Hash of error attributes as well as the Span ID when an error is present.
-
#for_datastore_segment(segment) ⇒ Object
rubocop:disable Metrics/AbcSize.
- #for_external_request_segment(segment) ⇒ Object
- #for_segment(segment) ⇒ Object
Methods included from Coerce
boolean_int!, float, float!, int, int!, int_or_nil, log_failure, scalar, string, value_or_nil
Instance Method Details
#error_attributes(segment) ⇒ Object
Builds a Hash of error attributes as well as the Span ID when an error is present. Otherwise, returns nil when no error present.
57 58 59 60 61 62 |
# File 'lib/new_relic/agent/span_event_primitive.rb', line 57 def error_attributes(segment) return if Agent.config[:high_security] || !segment.noticed_error segment.noticed_error.build_error_attributes segment.noticed_error_attributes end |
#for_datastore_segment(segment) ⇒ Object
rubocop:disable Metrics/AbcSize
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
# File 'lib/new_relic/agent/span_event_primitive.rb', line 95 def for_datastore_segment(segment) # rubocop:disable Metrics/AbcSize intrinsics = intrinsics_for(segment) intrinsics[COMPONENT_KEY] = segment.product intrinsics[SPAN_KIND_KEY] = CLIENT intrinsics[CATEGORY_KEY] = DATASTORE_CATEGORY agent_attributes = error_attributes(segment) || {} if segment.database_name && allowed?(DB_INSTANCE_KEY) agent_attributes[DB_INSTANCE_KEY] = truncate(segment.database_name) end if segment.host && segment.port_path_or_id && allowed?(PEER_ADDRESS_KEY) agent_attributes[PEER_ADDRESS_KEY] = truncate("#{segment.host}:#{segment.port_path_or_id}") end if segment.host [PEER_HOSTNAME_KEY, SERVER_ADDRESS_KEY].each do |key| agent_attributes[key] = truncate(segment.host) if allowed?(key) end end if segment.port_path_or_id&.match?(/^\d+$/) && allowed?(SERVER_PORT_KEY) agent_attributes[SERVER_PORT_KEY] = segment.port_path_or_id end agent_attributes[DB_SYSTEM_KEY] = segment.product if allowed?(DB_SYSTEM_KEY) if segment.sql_statement && allowed?(DB_STATEMENT_KEY) agent_attributes[DB_STATEMENT_KEY] = truncate(segment.sql_statement.safe_sql, 2000) elsif segment.nosql_statement && allowed?(DB_STATEMENT_KEY) agent_attributes[DB_STATEMENT_KEY] = truncate(segment.nosql_statement, 2000) end [intrinsics, custom_attributes(segment), agent_attributes] end |
#for_external_request_segment(segment) ⇒ Object
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/new_relic/agent/span_event_primitive.rb', line 71 def for_external_request_segment(segment) intrinsics = intrinsics_for(segment) intrinsics[COMPONENT_KEY] = segment.library intrinsics[HTTP_METHOD_KEY] = segment.procedure intrinsics[HTTP_REQUEST_METHOD_KEY] = segment.procedure intrinsics[HTTP_STATUS_CODE_KEY] = segment.http_status_code if segment.http_status_code intrinsics[CATEGORY_KEY] = HTTP_CATEGORY intrinsics[SPAN_KIND_KEY] = CLIENT intrinsics[SERVER_ADDRESS_KEY] = segment.uri.host intrinsics[SERVER_PORT_KEY] = segment.uri.port agent_attributes = error_attributes(segment) || {} if allowed?(HTTP_URL_KEY) agent_attributes[HTTP_URL_KEY] = truncate(segment.uri) end if segment.respond_to?(:record_agent_attributes?) && segment.record_agent_attributes? agent_attributes.merge!(agent_attributes(segment)) end [intrinsics, custom_attributes(segment), agent_attributes] end |
#for_segment(segment) ⇒ Object
64 65 66 67 68 69 |
# File 'lib/new_relic/agent/span_event_primitive.rb', line 64 def for_segment(segment) intrinsics = intrinsics_for(segment) intrinsics[CATEGORY_KEY] = GENERIC_CATEGORY [intrinsics, custom_attributes(segment), agent_attributes(segment)] end |