# Copyright 2020 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. module Google module Devtools module Cloudtrace module V2 # A span represents a single operation within a trace. Spans can be # nested to form a trace tree. Often, a trace contains a root span # that describes the end-to-end latency, and one or more subspans for # its sub-operations. A trace can also contain multiple root spans, # or none at all. Spans do not need to be contiguous—there may be # gaps or overlaps between spans in a trace. # @!attribute [rw] name # @return [String] # The resource name of the span in the following format: # # projects/[PROJECT_ID]/traces/[TRACE_ID]/spans/[SPAN_ID] # # [TRACE_ID] is a unique identifier for a trace within a project; # it is a 32-character hexadecimal encoding of a 16-byte array. # # [SPAN_ID] is a unique identifier for a span within a trace; it # is a 16-character hexadecimal encoding of an 8-byte array. # @!attribute [rw] span_id # @return [String] # The [SPAN_ID] portion of the span's resource name. # @!attribute [rw] parent_span_id # @return [String] # The [SPAN_ID] of this span's parent span. If this is a root span, # then this field must be empty. # @!attribute [rw] display_name # @return [Google::Devtools::Cloudtrace::V2::TruncatableString] # A description of the span's operation (up to 128 bytes). # Stackdriver Trace displays the description in the # Google Cloud Platform Console. # For example, the display name can be a qualified method name or a file name # and a line number where the operation is called. A best practice is to use # the same display name within an application and at the same call point. # This makes it easier to correlate spans in different traces. # @!attribute [rw] start_time # @return [Google::Protobuf::Timestamp] # The start time of the span. On the client side, this is the time kept by # the local machine where the span execution starts. On the server side, this # is the time when the server's application handler starts running. # @!attribute [rw] end_time # @return [Google::Protobuf::Timestamp] # The end time of the span. On the client side, this is the time kept by # the local machine where the span execution ends. On the server side, this # is the time when the server application handler stops running. # @!attribute [rw] attributes # @return [Google::Devtools::Cloudtrace::V2::Span::Attributes] # A set of attributes on the span. You can have up to 32 attributes per # span. # @!attribute [rw] stack_trace # @return [Google::Devtools::Cloudtrace::V2::StackTrace] # Stack trace captured at the start of the span. # @!attribute [rw] time_events # @return [Google::Devtools::Cloudtrace::V2::Span::TimeEvents] # A set of time events. You can have up to 32 annotations and 128 message # events per span. # @!attribute [rw] links # @return [Google::Devtools::Cloudtrace::V2::Span::Links] # Links associated with the span. You can have up to 128 links per Span. # @!attribute [rw] status # @return [Google::Rpc::Status] # Optional. The final status for this span. # @!attribute [rw] same_process_as_parent_span # @return [Google::Protobuf::BoolValue] # Optional. Set this parameter to indicate whether this span is in # the same process as its parent. If you do not set this parameter, # Stackdriver Trace is unable to take advantage of this helpful # information. # @!attribute [rw] child_span_count # @return [Google::Protobuf::Int32Value] # Optional. The number of child spans that were generated while this span # was active. If set, allows implementation to detect missing child spans. class Span # A set of attributes, each in the format `[KEY]:[VALUE]`. # @!attribute [rw] attribute_map # @return [Hash{String => Google::Devtools::Cloudtrace::V2::AttributeValue}] # The set of attributes. Each attribute's key can be up to 128 bytes # long. The value can be a string up to 256 bytes, a signed 64-bit integer, # or the Boolean values `true` and `false`. For example: # # "/instance_id": "my-instance" # "/http/user_agent": "" # "/http/request_bytes": 300 # "abc.com/myattribute": true # @!attribute [rw] dropped_attributes_count # @return [Integer] # The number of attributes that were discarded. Attributes can be discarded # because their keys are too long or because there are too many attributes. # If this value is 0 then all attributes are valid. class Attributes; end # A time-stamped annotation or message event in the Span. # @!attribute [rw] time # @return [Google::Protobuf::Timestamp] # The timestamp indicating the time the event occurred. # @!attribute [rw] annotation # @return [Google::Devtools::Cloudtrace::V2::Span::TimeEvent::Annotation] # Text annotation with a set of attributes. # @!attribute [rw] message_event # @return [Google::Devtools::Cloudtrace::V2::Span::TimeEvent::MessageEvent] # An event describing a message sent/received between Spans. class TimeEvent # Text annotation with a set of attributes. # @!attribute [rw] description # @return [Google::Devtools::Cloudtrace::V2::TruncatableString] # A user-supplied message describing the event. The maximum length for # the description is 256 bytes. # @!attribute [rw] attributes # @return [Google::Devtools::Cloudtrace::V2::Span::Attributes] # A set of attributes on the annotation. You can have up to 4 attributes # per Annotation. class Annotation; end # An event describing a message sent/received between Spans. # @!attribute [rw] type # @return [Google::Devtools::Cloudtrace::V2::Span::TimeEvent::MessageEvent::Type] # Type of MessageEvent. Indicates whether the message was sent or # received. # @!attribute [rw] id # @return [Integer] # An identifier for the MessageEvent's message that can be used to match # SENT and RECEIVED MessageEvents. It is recommended to be unique within # a Span. # @!attribute [rw] uncompressed_size_bytes # @return [Integer] # The number of uncompressed bytes sent or received. # @!attribute [rw] compressed_size_bytes # @return [Integer] # The number of compressed bytes sent or received. If missing assumed to # be the same size as uncompressed. class MessageEvent # Indicates whether the message was sent or received. module Type # Unknown event type. TYPE_UNSPECIFIED = 0 # Indicates a sent message. SENT = 1 # Indicates a received message. RECEIVED = 2 end end end # A collection of `TimeEvent`s. A `TimeEvent` is a time-stamped annotation # on the span, consisting of either user-supplied key:value pairs, or # details of a message sent/received between Spans. # @!attribute [rw] time_event # @return [Array] # A collection of `TimeEvent`s. # @!attribute [rw] dropped_annotations_count # @return [Integer] # The number of dropped annotations in all the included time events. # If the value is 0, then no annotations were dropped. # @!attribute [rw] dropped_message_events_count # @return [Integer] # The number of dropped message events in all the included time events. # If the value is 0, then no message events were dropped. class TimeEvents; end # A pointer from the current span to another span in the same trace or in a # different trace. For example, this can be used in batching operations, # where a single batch handler processes multiple requests from different # traces or when the handler receives a request from a different project. # @!attribute [rw] trace_id # @return [String] # The [TRACE_ID] for a trace within a project. # @!attribute [rw] span_id # @return [String] # The [SPAN_ID] for a span within a trace. # @!attribute [rw] type # @return [Google::Devtools::Cloudtrace::V2::Span::Link::Type] # The relationship of the current span relative to the linked span. # @!attribute [rw] attributes # @return [Google::Devtools::Cloudtrace::V2::Span::Attributes] # A set of attributes on the link. You have have up to 32 attributes per # link. class Link # The relationship of the current span relative to the linked span: child, # parent, or unspecified. module Type # The relationship of the two spans is unknown. TYPE_UNSPECIFIED = 0 # The linked span is a child of the current span. CHILD_LINKED_SPAN = 1 # The linked span is a parent of the current span. PARENT_LINKED_SPAN = 2 end end # A collection of links, which are references from this span to a span # in the same or different trace. # @!attribute [rw] link # @return [Array] # A collection of links. # @!attribute [rw] dropped_links_count # @return [Integer] # The number of dropped links after the maximum size was enforced. If # this value is 0, then no links were dropped. class Links; end end # The allowed types for [VALUE] in a `[KEY]:[VALUE]` attribute. # @!attribute [rw] string_value # @return [Google::Devtools::Cloudtrace::V2::TruncatableString] # A string up to 256 bytes long. # @!attribute [rw] int_value # @return [Integer] # A 64-bit signed integer. # @!attribute [rw] bool_value # @return [true, false] # A Boolean value represented by `true` or `false`. class AttributeValue; end # A call stack appearing in a trace. # @!attribute [rw] stack_frames # @return [Google::Devtools::Cloudtrace::V2::StackTrace::StackFrames] # Stack frames in this stack trace. A maximum of 128 frames are allowed. # @!attribute [rw] stack_trace_hash_id # @return [Integer] # The hash ID is used to conserve network bandwidth for duplicate # stack traces within a single trace. # # Often multiple spans will have identical stack traces. # The first occurrence of a stack trace should contain both the # `stackFrame` content and a value in `stackTraceHashId`. # # Subsequent spans within the same request can refer # to that stack trace by only setting `stackTraceHashId`. class StackTrace # Represents a single stack frame in a stack trace. # @!attribute [rw] function_name # @return [Google::Devtools::Cloudtrace::V2::TruncatableString] # The fully-qualified name that uniquely identifies the function or # method that is active in this frame (up to 1024 bytes). # @!attribute [rw] original_function_name # @return [Google::Devtools::Cloudtrace::V2::TruncatableString] # An un-mangled function name, if `function_name` is # [mangled](http://www.avabodh.com/cxxin/namemangling.html). The name can # be fully-qualified (up to 1024 bytes). # @!attribute [rw] file_name # @return [Google::Devtools::Cloudtrace::V2::TruncatableString] # The name of the source file where the function call appears (up to 256 # bytes). # @!attribute [rw] line_number # @return [Integer] # The line number in `file_name` where the function call appears. # @!attribute [rw] column_number # @return [Integer] # The column number where the function call appears, if available. # This is important in JavaScript because of its anonymous functions. # @!attribute [rw] load_module # @return [Google::Devtools::Cloudtrace::V2::Module] # The binary module from where the code was loaded. # @!attribute [rw] source_version # @return [Google::Devtools::Cloudtrace::V2::TruncatableString] # The version of the deployed source code (up to 128 bytes). class StackFrame; end # A collection of stack frames, which can be truncated. # @!attribute [rw] frame # @return [Array] # Stack frames in this call stack. # @!attribute [rw] dropped_frames_count # @return [Integer] # The number of stack frames that were dropped because there # were too many stack frames. # If this value is 0, then no stack frames were dropped. class StackFrames; end end # Binary module. # @!attribute [rw] module # @return [Google::Devtools::Cloudtrace::V2::TruncatableString] # For example: main binary, kernel modules, and dynamic libraries # such as libc.so, sharedlib.so (up to 256 bytes). # @!attribute [rw] build_id # @return [Google::Devtools::Cloudtrace::V2::TruncatableString] # A unique identifier for the module, usually a hash of its # contents (up to 128 bytes). class Module; end # Represents a string that might be shortened to a specified length. # @!attribute [rw] value # @return [String] # The shortened string. For example, if the original string is 500 # bytes long and the limit of the string is 128 bytes, then # `value` contains the first 128 bytes of the 500-byte string. # # Truncation always happens on a UTF8 character boundary. If there # are multi-byte characters in the string, then the length of the # shortened string might be less than the size limit. # @!attribute [rw] truncated_byte_count # @return [Integer] # The number of bytes removed from the original string. If this # value is 0, then the string was not shortened. class TruncatableString; end end end end end