All Downloads are FREE. Search and download functionalities are using the official Maven repository.

envoy.config.trace.v2.trace.proto Maven / Gradle / Ivy

There is a newer version: 1.0.46
Show newest version
// [#protodoc-title: Tracing]
// Tracing :ref:`architecture overview `.

syntax = "proto3";

package envoy.config.trace.v2;

option java_outer_classname = "TraceProto";
option java_multiple_files = true;
option java_package = "io.envoyproxy.envoy.config.trace.v2";

import "envoy/api/v2/core/grpc_service.proto";
import "opencensus/proto/trace/v1/trace_config.proto";

import "google/protobuf/any.proto";
import "google/protobuf/struct.proto";

import "google/protobuf/wrappers.proto";

import "validate/validate.proto";

// The tracing configuration specifies global
// settings for the HTTP tracer used by Envoy. The configuration is defined by
// the :ref:`Bootstrap ` :ref:`tracing
// ` field. Envoy may support other tracers
// in the future, but right now the HTTP tracer is the only one supported.
message Tracing {
  message Http {
    // The name of the HTTP trace driver to instantiate. The name must match a
    // supported HTTP trace driver. Built-in trace drivers:
    //
    // - *envoy.lightstep*
    // - *envoy.zipkin*
    // - *envoy.dynamic.ot*
    // - *envoy.tracers.datadog*
    // - *envoy.tracers.opencensus*
    string name = 1 [(validate.rules).string.min_bytes = 1];

    // Trace driver specific configuration which depends on the driver being instantiated.
    // See the trace drivers for examples:
    //
    // - :ref:`LightstepConfig `
    // - :ref:`ZipkinConfig `
    // - :ref:`DynamicOtConfig `
    // - :ref:`DatadogConfig `
    // - :ref:`OpenCensusConfig `
    oneof config_type {
      google.protobuf.Struct config = 2;

      google.protobuf.Any typed_config = 3;
    }
  }
  // Provides configuration for the HTTP tracer.
  Http http = 1;
}

// Configuration for the LightStep tracer.
message LightstepConfig {
  // The cluster manager cluster that hosts the LightStep collectors.
  string collector_cluster = 1 [(validate.rules).string.min_bytes = 1];

  // File containing the access token to the `LightStep
  // `_ API.
  string access_token_file = 2 [(validate.rules).string.min_bytes = 1];
}

// Configuration for the Zipkin tracer.
message ZipkinConfig {
  // The cluster manager cluster that hosts the Zipkin collectors. Note that the
  // Zipkin cluster must be defined in the :ref:`Bootstrap static cluster
  // resources `.
  string collector_cluster = 1 [(validate.rules).string.min_bytes = 1];

  // The API endpoint of the Zipkin service where the spans will be sent. When
  // using a standard Zipkin installation, the API endpoint is typically
  // /api/v1/spans, which is the default value.
  string collector_endpoint = 2 [(validate.rules).string.min_bytes = 1];

  // Determines whether a 128bit trace id will be used when creating a new
  // trace instance. The default value is false, which will result in a 64 bit trace id being used.
  bool trace_id_128bit = 3;

  // Determines whether client and server spans will share the same span context.
  // The default value is true.
  google.protobuf.BoolValue shared_span_context = 4;

  // Available Zipkin collector endpoint versions.
  enum CollectorEndpointVersion {
    // Zipkin API v1, JSON over HTTP.
    // [#comment: The default implementation of Zipkin client before this field is added was only v1
    // and the way user configure this was by not explicitly specifying the version. Consequently,
    // before this is added, the corresponding Zipkin collector expected to receive v1 payload.
    // Hence the motivation of adding HTTP_JSON_V1 as the default is to avoid a breaking change when
    // user upgrading Envoy with this change. Furthermore, we also immediately deprecate this field,
    // since in Zipkin realm this v1 version is considered to be not preferable anymore.]
    HTTP_JSON_V1 = 0 [deprecated = true];

    // Zipkin API v2, JSON over HTTP.
    HTTP_JSON = 1;

    // Zipkin API v2, protobuf over HTTP.
    HTTP_PROTO = 2;

    // [#not-implemented-hide:]
    GRPC = 3;
  }

  // Determines the selected collector endpoint version. By default, the ``HTTP_JSON_V1`` will be
  // used.
  CollectorEndpointVersion collector_endpoint_version = 5;
}

// DynamicOtConfig is used to dynamically load a tracer from a shared library
// that implements the `OpenTracing dynamic loading API
// `_.
message DynamicOtConfig {
  // Dynamic library implementing the `OpenTracing API
  // `_.
  string library = 1 [(validate.rules).string.min_bytes = 1];

  // The configuration to use when creating a tracer from the given dynamic
  // library.
  google.protobuf.Struct config = 2;
}

// Configuration for the Datadog tracer.
message DatadogConfig {
  // The cluster to use for submitting traces to the Datadog agent.
  string collector_cluster = 1 [(validate.rules).string.min_bytes = 1];
  // The name used for the service when traces are generated by envoy.
  string service_name = 2 [(validate.rules).string.min_bytes = 1];
}

// Configuration for the OpenCensus tracer.
// [#proto-status: experimental]
message OpenCensusConfig {
  // Configures tracing, e.g. the sampler, max number of annotations, etc.
  opencensus.proto.trace.v1.TraceConfig trace_config = 1;

  // Enables the stdout exporter if set to true. This is intended for debugging
  // purposes.
  bool stdout_exporter_enabled = 2;

  // Enables the Stackdriver exporter if set to true. The project_id must also
  // be set.
  bool stackdriver_exporter_enabled = 3;

  // The Cloud project_id to use for Stackdriver tracing.
  string stackdriver_project_id = 4;

  // (optional) By default, the Stackdriver exporter will connect to production
  // Stackdriver. If stackdriver_address is non-empty, it will instead connect
  // to this address, which is in the gRPC format:
  // https://github.com/grpc/grpc/blob/master/doc/naming.md
  string stackdriver_address = 10;

  // Enables the Zipkin exporter if set to true. The url and service name must
  // also be set.
  bool zipkin_exporter_enabled = 5;

  // The URL to Zipkin, e.g. "http://127.0.0.1:9411/api/v2/spans"
  string zipkin_url = 6;

  // Enables the OpenCensus Agent exporter if set to true. The address must also
  // be set.
  bool ocagent_exporter_enabled = 11;

  // The address of the OpenCensus Agent, if its exporter is enabled, in gRPC
  // format: https://github.com/grpc/grpc/blob/master/doc/naming.md
  string ocagent_address = 12;

  reserved 7; // Formerly zipkin_service_name.

  enum TraceContext {
    // No-op default, no trace context is utilized.
    NONE = 0;

    // W3C Trace-Context format "traceparent:" header.
    TRACE_CONTEXT = 1;

    // Binary "grpc-trace-bin:" header.
    GRPC_TRACE_BIN = 2;

    // "X-Cloud-Trace-Context:" header.
    CLOUD_TRACE_CONTEXT = 3;

    // X-B3-* headers.
    B3 = 4;
  }

  // List of incoming trace context headers we will accept. First one found
  // wins.
  repeated TraceContext incoming_trace_context = 8;

  // List of outgoing trace context headers we will produce.
  repeated TraceContext outgoing_trace_context = 9;
}

// Configuration structure.
message TraceServiceConfig {
  // The upstream gRPC cluster that hosts the metrics service.
  envoy.api.v2.core.GrpcService grpc_service = 1 [(validate.rules).message.required = true];
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy