Class: Datadog::Tracing::TraceDigest
- Inherits:
-
Object
- Object
- Datadog::Tracing::TraceDigest
- Defined in:
- lib/datadog/tracing/trace_digest.rb
Overview
Trace digest that represents the important parts of an active trace. Used to propagate context and continue traces across execution boundaries. TODO: Update all references from span to parent (ex: span_id -> parent_id)
Instance Attribute Summary collapse
-
#span_id ⇒ Integer
readonly
Datadog id for the currently active span.
-
#span_name ⇒ String
readonly
The operation name of the currently active span.
-
#span_remote ⇒ Object
readonly
TODO: The documentation for the last attribute above won’t be rendered.
-
#span_resource ⇒ String
readonly
The resource name of the currently active span.
-
#span_service ⇒ String
readonly
The service of the currently active span.
-
#span_type ⇒ String
readonly
The type of the currently active span.
-
#trace_distributed_id ⇒ Integer
readonly
The trace id extracted from a distributed context, if different from ‘trace_id`.
-
#trace_distributed_tags ⇒ Hash<String,String>
readonly
Datadog-specific tags that support richer distributed tracing association.
-
#trace_flags ⇒ Integer
readonly
The W3C “trace-flags” extracted from a distributed context.
-
#trace_hostname ⇒ String
readonly
The hostname of the currently active trace.
-
#trace_id ⇒ Integer
readonly
Datadog id for the currently active trace.
-
#trace_name ⇒ Integer
readonly
Operation name for the currently active trace.
-
#trace_origin ⇒ String
readonly
Datadog-specific attribution of this trace’s creation.
-
#trace_process_id ⇒ Integer
readonly
The OS-specific process id.
-
#trace_resource ⇒ String
readonly
The resource name of the currently active trace.
-
#trace_runtime_id ⇒ String
readonly
Unique id to this Ruby process.
-
#trace_sampling_priority ⇒ Integer
readonly
Datadog-specific sampling decision for the currently active trace.
-
#trace_service ⇒ String
readonly
The service of the currently active trace.
-
#trace_state ⇒ String
readonly
The W3C “tracestate” extracted from a distributed context.
-
#trace_state_unknown_fields ⇒ String
readonly
From W3C “tracestate”‘s `dd=` entry, when keys are not recognized they are stored here long with their values.
Instance Method Summary collapse
-
#initialize(span_id: nil, span_name: nil, span_resource: nil, span_service: nil, span_type: nil, trace_distributed_tags: nil, trace_hostname: nil, trace_id: nil, trace_name: nil, trace_origin: nil, trace_process_id: nil, trace_resource: nil, trace_runtime_id: nil, trace_sampling_priority: nil, trace_service: nil, trace_distributed_id: nil, trace_flags: nil, trace_state: nil, trace_state_unknown_fields: nil, span_remote: true) ⇒ TraceDigest
constructor
A new instance of TraceDigest.
-
#merge(field_value_pairs) ⇒ TraceDigest
Creates a copy of this object, modifying the provided fields.
Constructor Details
#initialize(span_id: nil, span_name: nil, span_resource: nil, span_service: nil, span_type: nil, trace_distributed_tags: nil, trace_hostname: nil, trace_id: nil, trace_name: nil, trace_origin: nil, trace_process_id: nil, trace_resource: nil, trace_runtime_id: nil, trace_sampling_priority: nil, trace_service: nil, trace_distributed_id: nil, trace_flags: nil, trace_state: nil, trace_state_unknown_fields: nil, span_remote: true) ⇒ TraceDigest
Returns a new instance of TraceDigest.
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
# File 'lib/datadog/tracing/trace_digest.rb', line 107 def initialize( span_id: nil, span_name: nil, span_resource: nil, span_service: nil, span_type: nil, trace_distributed_tags: nil, trace_hostname: nil, trace_id: nil, trace_name: nil, trace_origin: nil, trace_process_id: nil, trace_resource: nil, trace_runtime_id: nil, trace_sampling_priority: nil, trace_service: nil, trace_distributed_id: nil, trace_flags: nil, trace_state: nil, trace_state_unknown_fields: nil, span_remote: true ) @span_id = span_id @span_name = span_name && span_name.dup.freeze @span_resource = span_resource && span_resource.dup.freeze @span_service = span_service && span_service.dup.freeze @span_type = span_type && span_type.dup.freeze @trace_distributed_tags = && .dup.freeze @trace_hostname = trace_hostname && trace_hostname.dup.freeze @trace_id = trace_id @trace_name = trace_name && trace_name.dup.freeze @trace_origin = trace_origin && trace_origin.dup.freeze @trace_process_id = trace_process_id @trace_resource = trace_resource && trace_resource.dup.freeze @trace_runtime_id = trace_runtime_id && trace_runtime_id.dup.freeze @trace_sampling_priority = trace_sampling_priority @trace_service = trace_service && trace_service.dup.freeze @trace_distributed_id = trace_distributed_id @trace_flags = trace_flags @trace_state = trace_state && trace_state.dup.freeze @trace_state_unknown_fields = trace_state_unknown_fields && trace_state_unknown_fields.dup.freeze @span_remote = span_remote freeze end |
Instance Attribute Details
#span_id ⇒ Integer (readonly)
Datadog id for the currently active span.
85 86 87 |
# File 'lib/datadog/tracing/trace_digest.rb', line 85 def span_id @span_id end |
#span_name ⇒ String (readonly)
The operation name of the currently active span.
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/datadog/tracing/trace_digest.rb', line 85 attr_reader \ :span_id, :span_name, :span_resource, :span_service, :span_type, :trace_distributed_tags, :trace_hostname, :trace_id, :trace_name, :trace_origin, :trace_process_id, :trace_resource, :trace_runtime_id, :trace_sampling_priority, :trace_service, :trace_distributed_id, :trace_flags, :trace_state, :trace_state_unknown_fields, :span_remote |
#span_remote ⇒ Object (readonly)
TODO: The documentation for the last attribute above won’t be rendered. TODO: This might be a YARD bug as adding an attribute, making it now second-last attribute, renders correctly.
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/datadog/tracing/trace_digest.rb', line 85 attr_reader \ :span_id, :span_name, :span_resource, :span_service, :span_type, :trace_distributed_tags, :trace_hostname, :trace_id, :trace_name, :trace_origin, :trace_process_id, :trace_resource, :trace_runtime_id, :trace_sampling_priority, :trace_service, :trace_distributed_id, :trace_flags, :trace_state, :trace_state_unknown_fields, :span_remote |
#span_resource ⇒ String (readonly)
The resource name of the currently active span.
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/datadog/tracing/trace_digest.rb', line 85 attr_reader \ :span_id, :span_name, :span_resource, :span_service, :span_type, :trace_distributed_tags, :trace_hostname, :trace_id, :trace_name, :trace_origin, :trace_process_id, :trace_resource, :trace_runtime_id, :trace_sampling_priority, :trace_service, :trace_distributed_id, :trace_flags, :trace_state, :trace_state_unknown_fields, :span_remote |
#span_service ⇒ String (readonly)
The service of the currently active span.
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/datadog/tracing/trace_digest.rb', line 85 attr_reader \ :span_id, :span_name, :span_resource, :span_service, :span_type, :trace_distributed_tags, :trace_hostname, :trace_id, :trace_name, :trace_origin, :trace_process_id, :trace_resource, :trace_runtime_id, :trace_sampling_priority, :trace_service, :trace_distributed_id, :trace_flags, :trace_state, :trace_state_unknown_fields, :span_remote |
#span_type ⇒ String (readonly)
The type of the currently active span.
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/datadog/tracing/trace_digest.rb', line 85 attr_reader \ :span_id, :span_name, :span_resource, :span_service, :span_type, :trace_distributed_tags, :trace_hostname, :trace_id, :trace_name, :trace_origin, :trace_process_id, :trace_resource, :trace_runtime_id, :trace_sampling_priority, :trace_service, :trace_distributed_id, :trace_flags, :trace_state, :trace_state_unknown_fields, :span_remote |
#trace_distributed_id ⇒ Integer (readonly)
The trace id extracted from a distributed context, if different from ‘trace_id`.
The current use case is when the distributed context has a trace id integer larger than 64-bit: This attribute will preserve the original id, while ‘trace_id` will only contain the lower 64 bits.
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/datadog/tracing/trace_digest.rb', line 85 attr_reader \ :span_id, :span_name, :span_resource, :span_service, :span_type, :trace_distributed_tags, :trace_hostname, :trace_id, :trace_name, :trace_origin, :trace_process_id, :trace_resource, :trace_runtime_id, :trace_sampling_priority, :trace_service, :trace_distributed_id, :trace_flags, :trace_state, :trace_state_unknown_fields, :span_remote |
#trace_distributed_tags ⇒ Hash<String,String> (readonly)
Datadog-specific tags that support richer distributed tracing association.
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/datadog/tracing/trace_digest.rb', line 85 attr_reader \ :span_id, :span_name, :span_resource, :span_service, :span_type, :trace_distributed_tags, :trace_hostname, :trace_id, :trace_name, :trace_origin, :trace_process_id, :trace_resource, :trace_runtime_id, :trace_sampling_priority, :trace_service, :trace_distributed_id, :trace_flags, :trace_state, :trace_state_unknown_fields, :span_remote |
#trace_flags ⇒ Integer (readonly)
The W3C “trace-flags” extracted from a distributed context. This field is an 8-bit unsigned integer.
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/datadog/tracing/trace_digest.rb', line 85 attr_reader \ :span_id, :span_name, :span_resource, :span_service, :span_type, :trace_distributed_tags, :trace_hostname, :trace_id, :trace_name, :trace_origin, :trace_process_id, :trace_resource, :trace_runtime_id, :trace_sampling_priority, :trace_service, :trace_distributed_id, :trace_flags, :trace_state, :trace_state_unknown_fields, :span_remote |
#trace_hostname ⇒ String (readonly)
The hostname of the currently active trace. Use to attribute traces to hosts.
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/datadog/tracing/trace_digest.rb', line 85 attr_reader \ :span_id, :span_name, :span_resource, :span_service, :span_type, :trace_distributed_tags, :trace_hostname, :trace_id, :trace_name, :trace_origin, :trace_process_id, :trace_resource, :trace_runtime_id, :trace_sampling_priority, :trace_service, :trace_distributed_id, :trace_flags, :trace_state, :trace_state_unknown_fields, :span_remote |
#trace_id ⇒ Integer (readonly)
Datadog id for the currently active trace.
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/datadog/tracing/trace_digest.rb', line 85 attr_reader \ :span_id, :span_name, :span_resource, :span_service, :span_type, :trace_distributed_tags, :trace_hostname, :trace_id, :trace_name, :trace_origin, :trace_process_id, :trace_resource, :trace_runtime_id, :trace_sampling_priority, :trace_service, :trace_distributed_id, :trace_flags, :trace_state, :trace_state_unknown_fields, :span_remote |
#trace_name ⇒ Integer (readonly)
Operation name for the currently active trace.
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/datadog/tracing/trace_digest.rb', line 85 attr_reader \ :span_id, :span_name, :span_resource, :span_service, :span_type, :trace_distributed_tags, :trace_hostname, :trace_id, :trace_name, :trace_origin, :trace_process_id, :trace_resource, :trace_runtime_id, :trace_sampling_priority, :trace_service, :trace_distributed_id, :trace_flags, :trace_state, :trace_state_unknown_fields, :span_remote |
#trace_origin ⇒ String (readonly)
Datadog-specific attribution of this trace’s creation.
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/datadog/tracing/trace_digest.rb', line 85 attr_reader \ :span_id, :span_name, :span_resource, :span_service, :span_type, :trace_distributed_tags, :trace_hostname, :trace_id, :trace_name, :trace_origin, :trace_process_id, :trace_resource, :trace_runtime_id, :trace_sampling_priority, :trace_service, :trace_distributed_id, :trace_flags, :trace_state, :trace_state_unknown_fields, :span_remote |
#trace_process_id ⇒ Integer (readonly)
The OS-specific process id.
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/datadog/tracing/trace_digest.rb', line 85 attr_reader \ :span_id, :span_name, :span_resource, :span_service, :span_type, :trace_distributed_tags, :trace_hostname, :trace_id, :trace_name, :trace_origin, :trace_process_id, :trace_resource, :trace_runtime_id, :trace_sampling_priority, :trace_service, :trace_distributed_id, :trace_flags, :trace_state, :trace_state_unknown_fields, :span_remote |
#trace_resource ⇒ String (readonly)
The resource name of the currently active trace.
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/datadog/tracing/trace_digest.rb', line 85 attr_reader \ :span_id, :span_name, :span_resource, :span_service, :span_type, :trace_distributed_tags, :trace_hostname, :trace_id, :trace_name, :trace_origin, :trace_process_id, :trace_resource, :trace_runtime_id, :trace_sampling_priority, :trace_service, :trace_distributed_id, :trace_flags, :trace_state, :trace_state_unknown_fields, :span_remote |
#trace_runtime_id ⇒ String (readonly)
Unique id to this Ruby process. Used to differentiate traces coming from child processes forked from same parent process.
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/datadog/tracing/trace_digest.rb', line 85 attr_reader \ :span_id, :span_name, :span_resource, :span_service, :span_type, :trace_distributed_tags, :trace_hostname, :trace_id, :trace_name, :trace_origin, :trace_process_id, :trace_resource, :trace_runtime_id, :trace_sampling_priority, :trace_service, :trace_distributed_id, :trace_flags, :trace_state, :trace_state_unknown_fields, :span_remote |
#trace_sampling_priority ⇒ Integer (readonly)
Datadog-specific sampling decision for the currently active trace.
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/datadog/tracing/trace_digest.rb', line 85 attr_reader \ :span_id, :span_name, :span_resource, :span_service, :span_type, :trace_distributed_tags, :trace_hostname, :trace_id, :trace_name, :trace_origin, :trace_process_id, :trace_resource, :trace_runtime_id, :trace_sampling_priority, :trace_service, :trace_distributed_id, :trace_flags, :trace_state, :trace_state_unknown_fields, :span_remote |
#trace_service ⇒ String (readonly)
The service of the currently active trace.
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/datadog/tracing/trace_digest.rb', line 85 attr_reader \ :span_id, :span_name, :span_resource, :span_service, :span_type, :trace_distributed_tags, :trace_hostname, :trace_id, :trace_name, :trace_origin, :trace_process_id, :trace_resource, :trace_runtime_id, :trace_sampling_priority, :trace_service, :trace_distributed_id, :trace_flags, :trace_state, :trace_state_unknown_fields, :span_remote |
#trace_state ⇒ String (readonly)
The W3C “tracestate” extracted from a distributed context. This field is a string representing vendor-specific distribution data. The ‘dd=` entry is removed from `trace_state` as its value is dynamically calculated on every propagation injection.
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/datadog/tracing/trace_digest.rb', line 85 attr_reader \ :span_id, :span_name, :span_resource, :span_service, :span_type, :trace_distributed_tags, :trace_hostname, :trace_id, :trace_name, :trace_origin, :trace_process_id, :trace_resource, :trace_runtime_id, :trace_sampling_priority, :trace_service, :trace_distributed_id, :trace_flags, :trace_state, :trace_state_unknown_fields, :span_remote |
#trace_state_unknown_fields ⇒ String (readonly)
From W3C “tracestate”‘s `dd=` entry, when keys are not recognized they are stored here long with their values. This allows later propagation to include those unknown fields, as they can represent future versions of the spec sending data through this service. This value ends in a trailing `;` to facilitate serialization.
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/datadog/tracing/trace_digest.rb', line 85 attr_reader \ :span_id, :span_name, :span_resource, :span_service, :span_type, :trace_distributed_tags, :trace_hostname, :trace_id, :trace_name, :trace_origin, :trace_process_id, :trace_resource, :trace_runtime_id, :trace_sampling_priority, :trace_service, :trace_distributed_id, :trace_flags, :trace_state, :trace_state_unknown_fields, :span_remote |
Instance Method Details
#merge(field_value_pairs) ⇒ TraceDigest
Creates a copy of this object, modifying the provided fields.
155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 |
# File 'lib/datadog/tracing/trace_digest.rb', line 155 def merge(field_value_pairs) # DEV: Because we want to sometimes freeze the values provided to `TraceDigest`, it's best # DEV: to let `#initialize` decide how to handle each field, instead of duplicating that logic here. TraceDigest.new( **{ span_id: span_id, span_name: span_name, span_resource: span_resource, span_service: span_service, span_type: span_type, trace_distributed_tags: , trace_hostname: trace_hostname, trace_id: trace_id, trace_name: trace_name, trace_origin: trace_origin, trace_process_id: trace_process_id, trace_resource: trace_resource, trace_runtime_id: trace_runtime_id, trace_sampling_priority: trace_sampling_priority, trace_service: trace_service, trace_distributed_id: trace_distributed_id, trace_flags: trace_flags, trace_state: trace_state, trace_state_unknown_fields: trace_state_unknown_fields, span_remote: span_remote, }.merge!(field_value_pairs) ) end |