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.
Instance Attribute Summary collapse
- #baggage ⇒ Object readonly
-
#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 ⇒ Boolean
readonly
Represents whether a TraceDigest was propagated from a remote parent or created locally.
-
#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, baggage: nil) ⇒ 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, baggage: nil) ⇒ TraceDigest
Returns a new instance of TraceDigest.
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 151 152 153 154 155 156 |
# File 'lib/datadog/tracing/trace_digest.rb', line 111 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, baggage: nil ) @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 @baggage = baggage && baggage.dup.freeze freeze end |
Instance Attribute Details
#baggage ⇒ Object (readonly)
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/datadog/tracing/trace_digest.rb', line 88 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, :baggage |
#span_id ⇒ Integer (readonly)
Datadog id for the currently active span.
88 89 90 |
# File 'lib/datadog/tracing/trace_digest.rb', line 88 def span_id @span_id end |
#span_name ⇒ String (readonly)
The operation name of the currently active span.
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/datadog/tracing/trace_digest.rb', line 88 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, :baggage |
#span_remote ⇒ Boolean (readonly)
Represents whether a TraceDigest was propagated from a remote parent or created locally.
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/datadog/tracing/trace_digest.rb', line 88 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, :baggage |
#span_resource ⇒ String (readonly)
The resource name of the currently active span.
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/datadog/tracing/trace_digest.rb', line 88 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, :baggage |
#span_service ⇒ String (readonly)
The service of the currently active span.
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/datadog/tracing/trace_digest.rb', line 88 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, :baggage |
#span_type ⇒ String (readonly)
The type of the currently active span.
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/datadog/tracing/trace_digest.rb', line 88 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, :baggage |
#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.
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/datadog/tracing/trace_digest.rb', line 88 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, :baggage |
#trace_distributed_tags ⇒ Hash<String,String> (readonly)
Datadog-specific tags that support richer distributed tracing association.
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/datadog/tracing/trace_digest.rb', line 88 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, :baggage |
#trace_flags ⇒ Integer (readonly)
The W3C "trace-flags" extracted from a distributed context. This field is an 8-bit unsigned integer.
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/datadog/tracing/trace_digest.rb', line 88 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, :baggage |
#trace_hostname ⇒ String (readonly)
The hostname of the currently active trace. Use to attribute traces to hosts.
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/datadog/tracing/trace_digest.rb', line 88 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, :baggage |
#trace_id ⇒ Integer (readonly)
Datadog id for the currently active trace.
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/datadog/tracing/trace_digest.rb', line 88 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, :baggage |
#trace_name ⇒ Integer (readonly)
Operation name for the currently active trace.
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/datadog/tracing/trace_digest.rb', line 88 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, :baggage |
#trace_origin ⇒ String (readonly)
Datadog-specific attribution of this trace's creation.
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/datadog/tracing/trace_digest.rb', line 88 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, :baggage |
#trace_process_id ⇒ Integer (readonly)
The OS-specific process id.
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/datadog/tracing/trace_digest.rb', line 88 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, :baggage |
#trace_resource ⇒ String (readonly)
The resource name of the currently active trace.
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/datadog/tracing/trace_digest.rb', line 88 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, :baggage |
#trace_runtime_id ⇒ String (readonly)
Unique id to this Ruby process. Used to differentiate traces coming from child processes forked from same parent process.
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/datadog/tracing/trace_digest.rb', line 88 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, :baggage |
#trace_sampling_priority ⇒ Integer (readonly)
Datadog-specific sampling decision for the currently active trace.
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/datadog/tracing/trace_digest.rb', line 88 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, :baggage |
#trace_service ⇒ String (readonly)
The service of the currently active trace.
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/datadog/tracing/trace_digest.rb', line 88 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, :baggage |
#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.
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/datadog/tracing/trace_digest.rb', line 88 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, :baggage |
#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.
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/datadog/tracing/trace_digest.rb', line 88 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, :baggage |
Instance Method Details
#merge(field_value_pairs) ⇒ TraceDigest
Creates a copy of this object, modifying the provided fields.
161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 |
# File 'lib/datadog/tracing/trace_digest.rb', line 161 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, baggage: baggage }.merge!(field_value_pairs) ) end |