aboutsummaryrefslogtreecommitdiffhomepage
path: root/third_party/googleapis/google/tracing/trace.proto
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/googleapis/google/tracing/trace.proto')
-rw-r--r--third_party/googleapis/google/tracing/trace.proto247
1 files changed, 247 insertions, 0 deletions
diff --git a/third_party/googleapis/google/tracing/trace.proto b/third_party/googleapis/google/tracing/trace.proto
new file mode 100644
index 0000000000..dc10a90e58
--- /dev/null
+++ b/third_party/googleapis/google/tracing/trace.proto
@@ -0,0 +1,247 @@
+// Copyright 2016 Google Inc.
+//
+// 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
+//
+// http://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.
+
+syntax = "proto3";
+
+package google.tracing.v1;
+
+import "google/api/annotations.proto";
+import "google/protobuf/timestamp.proto";
+import "google/rpc/status.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/tracing/v1;tracing";
+option java_multiple_files = true;
+option java_outer_classname = "TraceProto";
+option java_package = "com.google.tracing.v1";
+
+
+// A TraceId uniquely identifies a Trace. It is conceptually a 128-bit value,
+// represented as a string, containing the hex-encoded value.
+message TraceId {
+ // Trace ID specified as a hex-encoded string. *Must* be 32 bytes long.
+ string hex_encoded = 1;
+}
+
+message Module {
+ // Binary module.
+ // E.g. main binary, kernel modules, and dynamic libraries
+ // such as libc.so, sharedlib.so
+ string module = 1;
+
+ // Build_id is a unique identifier for the module,
+ // probably a hash of its contents
+ string build_id = 2;
+}
+
+message StackTrace {
+ // Presents a single stack frame in a stack trace.
+ message StackFrame {
+ // Fully qualified names which uniquely identify function/method/etc.
+ string function_name = 1;
+
+ // Used when function name is ‘mangled’. Not guaranteed to be fully
+ // qualified but usually it is.
+ string orig_function_name = 2;
+
+ // File name of the frame.
+ string file_name = 3;
+
+ // Line number of the frame.
+ int64 line_number = 4;
+
+ // Column number is important in JavaScript(anonymous functions),
+ // Might not be available in some languages.
+ int64 column_number = 5;
+
+ // Binary module the code is loaded from.
+ Module load_module = 6;
+
+ // source_version is deployment specific. It might be
+ // better to be stored in deployment metadata.
+ // However, in distributed tracing, it’s hard to keep track of
+ // source/binary versions at one place for all spans.
+ string source_version = 7;
+ }
+
+ // Stack frames of this stack trace.
+ repeated StackFrame stack_frame = 1;
+
+ // User can choose to use his own hash function to hash large labels to save
+ // network bandwidth and storage.
+ // Typical usage is to pass both initially to inform the storage of the
+ // mapping. And in subsequent calls, pass in stack_trace_hash_id only.
+ // User shall verify the hash value is successfully stored.
+ uint64 stack_trace_hash_id = 2;
+}
+
+// Allowed label values.
+message LabelValue {
+ // The value of the label.
+ oneof value {
+ // A string value.
+ string string_value = 1;
+
+ // An integer value.
+ int64 int_value = 2;
+
+ // A boolean value.
+ bool bool_value = 3;
+ }
+}
+
+// A span represents a single operation within a trace. Spans can be nested
+// and form a trace tree. Often, a trace contains a root span that describes the
+// end-to-end latency and, optionally, one or more subspans for
+// its sub-operations. Spans do not need to be contiguous. There may be gaps
+// between spans in a trace.
+message Span {
+ // A time-stamped annotation in the Span.
+ message TimeEvent {
+ // Text annotation with a set of labels.
+ message Annotation {
+ // A user-supplied message describing the event.
+ string description = 1;
+
+ // A set of labels on the annotation.
+ map<string, LabelValue> labels = 2;
+ }
+
+ // An event describing an RPC message sent/received on the network.
+ message NetworkEvent {
+ // The type of the network event. SENT or RECV event.
+ enum Type {
+ UNSPECIFIED = 0;
+
+ SENT = 1;
+
+ RECV = 2;
+ }
+
+ // If available, this is the kernel time:
+ // For sent messages, this is the time at which the first bit was sent.
+ // For received messages, this is the time at which the last bit was
+ // received.
+ google.protobuf.Timestamp kernel_time = 1;
+
+ Type type = 2;
+
+ // Every message has an identifier, that must be different from all the
+ // network messages in this span.
+ // This is very important when the request/response are streamed.
+ uint64 message_id = 3;
+
+ // Number of bytes send/receive.
+ uint64 message_size = 4;
+ }
+
+ // The local machine absolute timestamp when this event happened.
+ google.protobuf.Timestamp local_time = 1;
+
+ oneof value {
+ // Optional field for user supplied <string, LabelValue> map
+ Annotation annotation = 2;
+
+ // Optional field that can be used only for network events.
+ NetworkEvent network_event = 3;
+ }
+ }
+
+ // Link one span with another which may be in a different Trace. Used (for
+ // example) in batching operations, where a single batch handler processes
+ // multiple requests from different traces.
+ message Link {
+ // The type of the link.
+ enum Type {
+ UNSPECIFIED = 0;
+
+ CHILD = 1;
+
+ PARENT = 2;
+ }
+
+ // The trace and span identifier of the linked span.
+ TraceId trace_id = 1;
+
+ fixed64 span_id = 2;
+
+ Type type = 3;
+ }
+
+ // Identifier for the span. Must be a 64-bit integer other than 0 and
+ // unique within a trace.
+ fixed64 id = 1;
+
+ // Name of the span. The span name is sanitized and displayed in the
+ // Stackdriver Trace tool in the {% dynamic print site_values.console_name %}.
+ // The name may be a method name or some other per-call site name.
+ // For the same executable and the same call point, a best practice is
+ // to use a consistent name, which makes it easier to correlate
+ // cross-trace spans.
+ string name = 2;
+
+ // ID of parent span. 0 or missing if this is a root span.
+ fixed64 parent_id = 3;
+
+ // Local machine clock in nanoseconds from the UNIX epoch,
+ // at which span execution started.
+ // On the server side these are the times when the server application
+ // handler starts running.
+ google.protobuf.Timestamp local_start_time = 4;
+
+ // Local machine clock in nanoseconds from the UNIX epoch,
+ // at which span execution ended.
+ // On the server side these are the times when the server application
+ // handler finishes running.
+ google.protobuf.Timestamp local_end_time = 5;
+
+ // Properties of a span. Labels at the span level.
+ // E.g.
+ // "/instance_id": "my-instance"
+ // "/zone": "us-central1-a"
+ // "/grpc/peer_address": "ip:port" (dns, etc.)
+ // "/grpc/deadline": "Duration"
+ // "/http/user_agent"
+ // "/http/request_bytes": 300
+ // "/http/response_bytes": 1200
+ // "/http/url": google.com/apis
+ // "/pid"
+ // "abc.com/mylabel": "my label value"
+ map<string, LabelValue> labels = 6;
+
+ // Stack trace captured at the start of the span. This is optional.
+ StackTrace stack_trace = 7;
+
+ // A collection of time-stamped events.
+ repeated TimeEvent time_events = 8;
+
+ // A collection of links.
+ repeated Link links = 9;
+
+ // The final status of the Span. This is optional.
+ google.rpc.Status status = 10;
+
+ // True if this Span has a remote parent (is an RPC server Span).
+ bool has_remote_parent = 11;
+}
+
+// A trace describes how long it takes for an application to perform some
+// operations. It consists of a tree of spans, each of which contains details
+// about an operation with time information and operation details.
+message Trace {
+ // Globally unique identifier for the trace. Common to all the spans.
+ TraceId trace_id = 1;
+
+ // Collection of spans in the trace. The root span has parent_id == 0.
+ repeated Span spans = 2;
+}