api: move configuration of tracer provider implementations out of `config.trace` into `extensions.tracers.<provider>` (#10743)

Split Tracing.Http and provider-specific configurations out of trace.proto

Risk Level: Medium
Testing: unit tests
Docs Changes: N/A
Release Notes: N/A
Fixes: #10576, #10737

Signed-off-by: Yaroslav Skopets <yaroslav@tetrate.io>

Mirrored from https://github.com/envoyproxy/envoy @ 4325949734fa10e4725bab5e096aa77cc8f85b06
master-ci-test
data-plane-api(CircleCI) 5 years ago
parent bbc765afe5
commit 5467393763
  1. 2
      envoy/config/bootstrap/v2/bootstrap.proto
  2. 2
      envoy/config/bootstrap/v3/bootstrap.proto
  3. 2
      envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.proto
  4. 23
      envoy/config/trace/v2/datadog.proto
  5. 29
      envoy/config/trace/v2/dynamic_ot.proto
  6. 65
      envoy/config/trace/v2/http_tracer.proto
  7. 43
      envoy/config/trace/v2/lightstep.proto
  8. 93
      envoy/config/trace/v2/opencensus.proto
  9. 21
      envoy/config/trace/v2/service.proto
  10. 254
      envoy/config/trace/v2/trace.proto
  11. 64
      envoy/config/trace/v2/zipkin.proto
  12. 29
      envoy/config/trace/v3/datadog.proto
  13. 36
      envoy/config/trace/v3/dynamic_ot.proto
  14. 73
      envoy/config/trace/v3/http_tracer.proto
  15. 50
      envoy/config/trace/v3/lightstep.proto
  16. 100
      envoy/config/trace/v3/opencensus.proto
  17. 25
      envoy/config/trace/v3/service.proto
  18. 280
      envoy/config/trace/v3/trace.proto
  19. 2
      envoy/config/trace/v3/xray.proto
  20. 70
      envoy/config/trace/v3/zipkin.proto
  21. 2
      envoy/config/trace/v4alpha/BUILD
  22. 73
      envoy/config/trace/v4alpha/http_tracer.proto
  23. 25
      envoy/config/trace/v4alpha/service.proto
  24. 281
      envoy/config/trace/v4alpha/trace.proto
  25. 2
      envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto
  26. 2
      envoy/extensions/filters/network/http_connection_manager/v4alpha/http_connection_manager.proto
  27. 12
      envoy/extensions/tracers/datadog/v4alpha/BUILD
  28. 27
      envoy/extensions/tracers/datadog/v4alpha/datadog.proto
  29. 12
      envoy/extensions/tracers/dynamic_ot/v4alpha/BUILD
  30. 33
      envoy/extensions/tracers/dynamic_ot/v4alpha/dynamic_ot.proto
  31. 12
      envoy/extensions/tracers/lightstep/v4alpha/BUILD
  32. 47
      envoy/extensions/tracers/lightstep/v4alpha/lightstep.proto
  33. 14
      envoy/extensions/tracers/opencensus/v4alpha/BUILD
  34. 97
      envoy/extensions/tracers/opencensus/v4alpha/opencensus.proto
  35. 13
      envoy/extensions/tracers/xray/v4alpha/BUILD
  36. 8
      envoy/extensions/tracers/xray/v4alpha/xray.proto
  37. 13
      envoy/extensions/tracers/zipkin/v4alpha/BUILD
  38. 68
      envoy/extensions/tracers/zipkin/v4alpha/zipkin.proto

@ -12,7 +12,7 @@ import "envoy/api/v2/core/socket_option.proto";
import "envoy/api/v2/listener.proto"; import "envoy/api/v2/listener.proto";
import "envoy/config/metrics/v2/stats.proto"; import "envoy/config/metrics/v2/stats.proto";
import "envoy/config/overload/v2alpha/overload.proto"; import "envoy/config/overload/v2alpha/overload.proto";
import "envoy/config/trace/v2/trace.proto"; import "envoy/config/trace/v2/http_tracer.proto";
import "google/protobuf/duration.proto"; import "google/protobuf/duration.proto";
import "google/protobuf/struct.proto"; import "google/protobuf/struct.proto";

@ -11,7 +11,7 @@ import "envoy/config/core/v3/socket_option.proto";
import "envoy/config/listener/v3/listener.proto"; import "envoy/config/listener/v3/listener.proto";
import "envoy/config/metrics/v3/stats.proto"; import "envoy/config/metrics/v3/stats.proto";
import "envoy/config/overload/v3/overload.proto"; import "envoy/config/overload/v3/overload.proto";
import "envoy/config/trace/v3/trace.proto"; import "envoy/config/trace/v3/http_tracer.proto";
import "envoy/extensions/transport_sockets/tls/v3/cert.proto"; import "envoy/extensions/transport_sockets/tls/v3/cert.proto";
import "google/protobuf/duration.proto"; import "google/protobuf/duration.proto";

@ -7,7 +7,7 @@ import "envoy/api/v2/core/protocol.proto";
import "envoy/api/v2/route.proto"; import "envoy/api/v2/route.proto";
import "envoy/api/v2/scoped_route.proto"; import "envoy/api/v2/scoped_route.proto";
import "envoy/config/filter/accesslog/v2/accesslog.proto"; import "envoy/config/filter/accesslog/v2/accesslog.proto";
import "envoy/config/trace/v2/trace.proto"; import "envoy/config/trace/v2/http_tracer.proto";
import "envoy/type/percent.proto"; import "envoy/type/percent.proto";
import "envoy/type/tracing/v2/custom_tag.proto"; import "envoy/type/tracing/v2/custom_tag.proto";

@ -0,0 +1,23 @@
syntax = "proto3";
package envoy.config.trace.v2;
import "udpa/annotations/status.proto";
import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.config.trace.v2";
option java_outer_classname = "DatadogProto";
option java_multiple_files = true;
option (udpa.annotations.file_status).package_version_status = FROZEN;
// [#protodoc-title: Datadog tracer]
// Configuration for the Datadog tracer.
// [#extension: envoy.tracers.datadog]
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}];
}

@ -0,0 +1,29 @@
syntax = "proto3";
package envoy.config.trace.v2;
import "google/protobuf/struct.proto";
import "udpa/annotations/status.proto";
import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.config.trace.v2";
option java_outer_classname = "DynamicOtProto";
option java_multiple_files = true;
option (udpa.annotations.file_status).package_version_status = FROZEN;
// [#protodoc-title: Dynamically loadable OpenTracing tracer]
// DynamicOtConfig is used to dynamically load a tracer from a shared library
// that implements the `OpenTracing dynamic loading API
// <https://github.com/opentracing/opentracing-cpp>`_.
// [#extension: envoy.tracers.dynamic_ot]
message DynamicOtConfig {
// Dynamic library implementing the `OpenTracing API
// <https://github.com/opentracing/opentracing-cpp>`_.
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;
}

@ -0,0 +1,65 @@
syntax = "proto3";
package envoy.config.trace.v2;
import "google/protobuf/any.proto";
import "google/protobuf/struct.proto";
import "udpa/annotations/status.proto";
import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.config.trace.v2";
option java_outer_classname = "HttpTracerProto";
option java_multiple_files = true;
option (udpa.annotations.file_status).package_version_status = FROZEN;
// [#protodoc-title: Tracing]
// Tracing :ref:`architecture overview <arch_overview_tracing>`.
// The tracing configuration specifies settings for an HTTP tracer provider used by Envoy.
//
// Envoy may support other tracers in the future, but right now the HTTP tracer is the only one
// supported.
//
// .. attention::
//
// Use of this message type has been deprecated in favor of direct use of
// :ref:`Tracing.Http <envoy_api_msg_config.trace.v2.Tracing.Http>`.
message Tracing {
// Configuration for an HTTP tracer provider used by Envoy.
//
// The configuration is defined by the
// :ref:`HttpConnectionManager.Tracing <envoy_api_msg_config.filter.network.http_connection_manager.v2.HttpConnectionManager.Tracing>`
// :ref:`provider <envoy_api_field_config.filter.network.http_connection_manager.v2.HttpConnectionManager.Tracing.provider>`
// field.
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.tracers.lightstep*
// - *envoy.tracers.zipkin*
// - *envoy.tracers.dynamic_ot*
// - *envoy.tracers.datadog*
// - *envoy.tracers.opencensus*
// - *envoy.tracers.xray*
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 <envoy_api_msg_config.trace.v2.LightstepConfig>`
// - :ref:`ZipkinConfig <envoy_api_msg_config.trace.v2.ZipkinConfig>`
// - :ref:`DynamicOtConfig <envoy_api_msg_config.trace.v2.DynamicOtConfig>`
// - :ref:`DatadogConfig <envoy_api_msg_config.trace.v2.DatadogConfig>`
// - :ref:`OpenCensusConfig <envoy_api_msg_config.trace.v2.OpenCensusConfig>`
// - :ref:`AWS X-Ray <envoy_api_msg_config.trace.v2alpha.XRayConfig>`
oneof config_type {
google.protobuf.Struct config = 2 [deprecated = true];
google.protobuf.Any typed_config = 3;
}
}
// Provides configuration for the HTTP tracer.
Http http = 1;
}

@ -0,0 +1,43 @@
syntax = "proto3";
package envoy.config.trace.v2;
import "udpa/annotations/status.proto";
import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.config.trace.v2";
option java_outer_classname = "LightstepProto";
option java_multiple_files = true;
option (udpa.annotations.file_status).package_version_status = FROZEN;
// [#protodoc-title: LightStep tracer]
// Configuration for the LightStep tracer.
// [#extension: envoy.tracers.lightstep]
message LightstepConfig {
// Available propagation modes
enum PropagationMode {
// Propagate trace context in the single header x-ot-span-context.
ENVOY = 0;
// Propagate trace context using LightStep's native format.
LIGHTSTEP = 1;
// Propagate trace context using the b3 format.
B3 = 2;
// Propagation trace context using the w3 trace-context standard.
TRACE_CONTEXT = 3;
}
// 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
// <https://lightstep.com/>`_ API.
string access_token_file = 2 [(validate.rules).string = {min_bytes: 1}];
// Propagation modes to use by LightStep's tracer.
repeated PropagationMode propagation_modes = 3
[(validate.rules).repeated = {items {enum {defined_only: true}}}];
}

@ -0,0 +1,93 @@
syntax = "proto3";
package envoy.config.trace.v2;
import "envoy/api/v2/core/grpc_service.proto";
import "opencensus/proto/trace/v1/trace_config.proto";
import "udpa/annotations/status.proto";
import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.config.trace.v2";
option java_outer_classname = "OpencensusProto";
option java_multiple_files = true;
option (udpa.annotations.file_status).package_version_status = FROZEN;
// [#protodoc-title: OpenCensus tracer]
// Configuration for the OpenCensus tracer.
// [#next-free-field: 15]
// [#extension: envoy.tracers.opencensus]
message OpenCensusConfig {
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;
}
reserved 7;
// 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;
// (optional) The gRPC server that hosts Stackdriver tracing service. Only
// Google gRPC is supported. If :ref:`target_uri <envoy_v3_api_field_config.core.v3.GrpcService.GoogleGrpc.target_uri>`
// is not provided, the default production Stackdriver address will be used.
api.v2.core.GrpcService stackdriver_grpc_service = 13;
// 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 ocagent_address or
// ocagent_grpc_service 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
// [#comment:TODO: deprecate this field]
string ocagent_address = 12;
// (optional) The gRPC server hosted by the OpenCensus Agent. Only Google gRPC is supported.
// This is only used if the ocagent_address is left empty.
api.v2.core.GrpcService ocagent_grpc_service = 14;
// 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;
}

@ -0,0 +1,21 @@
syntax = "proto3";
package envoy.config.trace.v2;
import "envoy/api/v2/core/grpc_service.proto";
import "udpa/annotations/status.proto";
import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.config.trace.v2";
option java_outer_classname = "ServiceProto";
option java_multiple_files = true;
option (udpa.annotations.file_status).package_version_status = FROZEN;
// [#protodoc-title: Trace Service]
// Configuration structure.
message TraceServiceConfig {
// The upstream gRPC cluster that hosts the metrics service.
api.v2.core.GrpcService grpc_service = 1 [(validate.rules).message = {required: true}];
}

@ -2,254 +2,16 @@ syntax = "proto3";
package envoy.config.trace.v2; package envoy.config.trace.v2;
import "envoy/api/v2/core/grpc_service.proto";
import "google/protobuf/any.proto";
import "google/protobuf/struct.proto";
import "google/protobuf/wrappers.proto";
import "opencensus/proto/trace/v1/trace_config.proto";
import "envoy/annotations/deprecation.proto";
import "udpa/annotations/status.proto"; import "udpa/annotations/status.proto";
import "validate/validate.proto";
import public "envoy/config/trace/v2/datadog.proto";
import public "envoy/config/trace/v2/dynamic_ot.proto";
import public "envoy/config/trace/v2/http_tracer.proto";
import public "envoy/config/trace/v2/lightstep.proto";
import public "envoy/config/trace/v2/opencensus.proto";
import public "envoy/config/trace/v2/service.proto";
import public "envoy/config/trace/v2/zipkin.proto";
option java_package = "io.envoyproxy.envoy.config.trace.v2"; option java_package = "io.envoyproxy.envoy.config.trace.v2";
option java_outer_classname = "TraceProto"; option java_outer_classname = "TraceProto";
option java_multiple_files = true; option java_multiple_files = true;
option (udpa.annotations.file_status).package_version_status = FROZEN;
// [#protodoc-title: Tracing]
// Tracing :ref:`architecture overview <arch_overview_tracing>`.
// The tracing configuration specifies settings for an HTTP tracer provider used by Envoy.
//
// Envoy may support other tracers in the future, but right now the HTTP tracer is the only one
// supported.
//
// .. attention::
//
// Use of this message type has been deprecated in favor of direct use of
// :ref:`Tracing.Http <envoy_api_msg_config.trace.v2.Tracing.Http>`.
message Tracing {
// Configuration for an HTTP tracer provider used by Envoy.
//
// The configuration is defined by the
// :ref:`HttpConnectionManager.Tracing <envoy_api_msg_config.filter.network.http_connection_manager.v2.HttpConnectionManager.Tracing>`
// :ref:`provider <envoy_api_field_config.filter.network.http_connection_manager.v2.HttpConnectionManager.Tracing.provider>`
// field.
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.tracers.lightstep*
// - *envoy.tracers.zipkin*
// - *envoy.tracers.dynamic_ot*
// - *envoy.tracers.datadog*
// - *envoy.tracers.opencensus*
// - *envoy.tracers.xray*
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 <envoy_api_msg_config.trace.v2.LightstepConfig>`
// - :ref:`ZipkinConfig <envoy_api_msg_config.trace.v2.ZipkinConfig>`
// - :ref:`DynamicOtConfig <envoy_api_msg_config.trace.v2.DynamicOtConfig>`
// - :ref:`DatadogConfig <envoy_api_msg_config.trace.v2.DatadogConfig>`
// - :ref:`OpenCensusConfig <envoy_api_msg_config.trace.v2.OpenCensusConfig>`
// - :ref:`AWS X-Ray <envoy_api_msg_config.trace.v2alpha.XRayConfig>`
oneof config_type {
google.protobuf.Struct config = 2 [deprecated = true];
google.protobuf.Any typed_config = 3;
}
}
// Provides configuration for the HTTP tracer.
Http http = 1;
}
// Configuration for the LightStep tracer.
// [#extension: envoy.tracers.lightstep]
message LightstepConfig {
// Available propagation modes
enum PropagationMode {
// Propagate trace context in the single header x-ot-span-context.
ENVOY = 0;
// Propagate trace context using LightStep's native format.
LIGHTSTEP = 1;
// Propagate trace context using the b3 format.
B3 = 2;
// Propagation trace context using the w3 trace-context standard.
TRACE_CONTEXT = 3;
}
// 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
// <https://lightstep.com/>`_ API.
string access_token_file = 2 [(validate.rules).string = {min_bytes: 1}];
// Propagation modes to use by LightStep's tracer.
repeated PropagationMode propagation_modes = 3
[(validate.rules).repeated = {items {enum {defined_only: true}}}];
}
// Configuration for the Zipkin tracer.
// [#extension: envoy.tracers.zipkin]
// [#next-free-field: 6]
message ZipkinConfig {
// 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, (envoy.annotations.disallowed_by_default_enum) = true];
// Zipkin API v2, JSON over HTTP.
HTTP_JSON = 1;
// Zipkin API v2, protobuf over HTTP.
HTTP_PROTO = 2;
// [#not-implemented-hide:]
GRPC = 3;
}
// The cluster manager cluster that hosts the Zipkin collectors. Note that the
// Zipkin cluster must be defined in the :ref:`Bootstrap static cluster
// resources <envoy_api_field_config.bootstrap.v2.Bootstrap.StaticResources.clusters>`.
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;
// 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
// <https://github.com/opentracing/opentracing-cpp>`_.
// [#extension: envoy.tracers.dynamic_ot]
message DynamicOtConfig {
// Dynamic library implementing the `OpenTracing API
// <https://github.com/opentracing/opentracing-cpp>`_.
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.
// [#extension: envoy.tracers.datadog]
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.
// [#next-free-field: 15]
// [#extension: envoy.tracers.opencensus]
message OpenCensusConfig {
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;
}
reserved 7;
// 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;
// (optional) The gRPC server that hosts Stackdriver tracing service. Only
// Google gRPC is supported. If :ref:`target_uri <envoy_v3_api_field_config.core.v3.GrpcService.GoogleGrpc.target_uri>`
// is not provided, the default production Stackdriver address will be used.
api.v2.core.GrpcService stackdriver_grpc_service = 13;
// 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 ocagent_address or
// ocagent_grpc_service 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
// [#comment:TODO: deprecate this field]
string ocagent_address = 12;
// (optional) The gRPC server hosted by the OpenCensus Agent. Only Google gRPC is supported.
// This is only used if the ocagent_address is left empty.
api.v2.core.GrpcService ocagent_grpc_service = 14;
// 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.
api.v2.core.GrpcService grpc_service = 1 [(validate.rules).message = {required: true}];
}

@ -0,0 +1,64 @@
syntax = "proto3";
package envoy.config.trace.v2;
import "google/protobuf/wrappers.proto";
import "envoy/annotations/deprecation.proto";
import "udpa/annotations/status.proto";
import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.config.trace.v2";
option java_outer_classname = "ZipkinProto";
option java_multiple_files = true;
option (udpa.annotations.file_status).package_version_status = FROZEN;
// [#protodoc-title: Zipkin tracer]
// Configuration for the Zipkin tracer.
// [#extension: envoy.tracers.zipkin]
// [#next-free-field: 6]
message ZipkinConfig {
// 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, (envoy.annotations.disallowed_by_default_enum) = true];
// Zipkin API v2, JSON over HTTP.
HTTP_JSON = 1;
// Zipkin API v2, protobuf over HTTP.
HTTP_PROTO = 2;
// [#not-implemented-hide:]
GRPC = 3;
}
// The cluster manager cluster that hosts the Zipkin collectors. Note that the
// Zipkin cluster must be defined in the :ref:`Bootstrap static cluster
// resources <envoy_api_field_config.bootstrap.v2.Bootstrap.StaticResources.clusters>`.
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;
// Determines the selected collector endpoint version. By default, the ``HTTP_JSON_V1`` will be
// used.
CollectorEndpointVersion collector_endpoint_version = 5;
}

@ -0,0 +1,29 @@
syntax = "proto3";
package envoy.config.trace.v3;
import "udpa/annotations/migrate.proto";
import "udpa/annotations/status.proto";
import "udpa/annotations/versioning.proto";
import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.config.trace.v3";
option java_outer_classname = "DatadogProto";
option java_multiple_files = true;
option (udpa.annotations.file_migrate).move_to_package = "envoy.extensions.tracers.datadog.v4alpha";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: Datadog tracer]
// Configuration for the Datadog tracer.
// [#extension: envoy.tracers.datadog]
message DatadogConfig {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.trace.v2.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}];
}

@ -0,0 +1,36 @@
syntax = "proto3";
package envoy.config.trace.v3;
import "google/protobuf/struct.proto";
import "udpa/annotations/migrate.proto";
import "udpa/annotations/status.proto";
import "udpa/annotations/versioning.proto";
import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.config.trace.v3";
option java_outer_classname = "DynamicOtProto";
option java_multiple_files = true;
option (udpa.annotations.file_migrate).move_to_package =
"envoy.extensions.tracers.dynamic_ot.v4alpha";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: Dynamically loadable OpenTracing tracer]
// DynamicOtConfig is used to dynamically load a tracer from a shared library
// that implements the `OpenTracing dynamic loading API
// <https://github.com/opentracing/opentracing-cpp>`_.
// [#extension: envoy.tracers.dynamic_ot]
message DynamicOtConfig {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.trace.v2.DynamicOtConfig";
// Dynamic library implementing the `OpenTracing API
// <https://github.com/opentracing/opentracing-cpp>`_.
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;
}

@ -0,0 +1,73 @@
syntax = "proto3";
package envoy.config.trace.v3;
import "google/protobuf/any.proto";
import "google/protobuf/struct.proto";
import "udpa/annotations/status.proto";
import "udpa/annotations/versioning.proto";
import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.config.trace.v3";
option java_outer_classname = "HttpTracerProto";
option java_multiple_files = true;
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: Tracing]
// Tracing :ref:`architecture overview <arch_overview_tracing>`.
// The tracing configuration specifies settings for an HTTP tracer provider used by Envoy.
//
// Envoy may support other tracers in the future, but right now the HTTP tracer is the only one
// supported.
//
// .. attention::
//
// Use of this message type has been deprecated in favor of direct use of
// :ref:`Tracing.Http <envoy_api_msg_config.trace.v3.Tracing.Http>`.
message Tracing {
option (udpa.annotations.versioning).previous_message_type = "envoy.config.trace.v2.Tracing";
// Configuration for an HTTP tracer provider used by Envoy.
//
// The configuration is defined by the
// :ref:`HttpConnectionManager.Tracing <envoy_api_msg_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.Tracing>`
// :ref:`provider <envoy_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.Tracing.provider>`
// field.
message Http {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.trace.v2.Tracing.Http";
reserved 2;
reserved "config";
// The name of the HTTP trace driver to instantiate. The name must match a
// supported HTTP trace driver. Built-in trace drivers:
//
// - *envoy.tracers.lightstep*
// - *envoy.tracers.zipkin*
// - *envoy.tracers.dynamic_ot*
// - *envoy.tracers.datadog*
// - *envoy.tracers.opencensus*
// - *envoy.tracers.xray*
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 <envoy_api_msg_config.trace.v3.LightstepConfig>`
// - :ref:`ZipkinConfig <envoy_api_msg_config.trace.v3.ZipkinConfig>`
// - :ref:`DynamicOtConfig <envoy_api_msg_config.trace.v3.DynamicOtConfig>`
// - :ref:`DatadogConfig <envoy_api_msg_config.trace.v3.DatadogConfig>`
// - :ref:`OpenCensusConfig <envoy_api_msg_config.trace.v3.OpenCensusConfig>`
// - :ref:`AWS X-Ray <envoy_api_msg_config.trace.v3.XRayConfig>`
oneof config_type {
google.protobuf.Any typed_config = 3;
}
}
// Provides configuration for the HTTP tracer.
Http http = 1;
}

@ -0,0 +1,50 @@
syntax = "proto3";
package envoy.config.trace.v3;
import "udpa/annotations/migrate.proto";
import "udpa/annotations/status.proto";
import "udpa/annotations/versioning.proto";
import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.config.trace.v3";
option java_outer_classname = "LightstepProto";
option java_multiple_files = true;
option (udpa.annotations.file_migrate).move_to_package =
"envoy.extensions.tracers.lightstep.v4alpha";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: LightStep tracer]
// Configuration for the LightStep tracer.
// [#extension: envoy.tracers.lightstep]
message LightstepConfig {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.trace.v2.LightstepConfig";
// Available propagation modes
enum PropagationMode {
// Propagate trace context in the single header x-ot-span-context.
ENVOY = 0;
// Propagate trace context using LightStep's native format.
LIGHTSTEP = 1;
// Propagate trace context using the b3 format.
B3 = 2;
// Propagation trace context using the w3 trace-context standard.
TRACE_CONTEXT = 3;
}
// 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
// <https://lightstep.com/>`_ API.
string access_token_file = 2 [(validate.rules).string = {min_bytes: 1}];
// Propagation modes to use by LightStep's tracer.
repeated PropagationMode propagation_modes = 3
[(validate.rules).repeated = {items {enum {defined_only: true}}}];
}

@ -0,0 +1,100 @@
syntax = "proto3";
package envoy.config.trace.v3;
import "envoy/config/core/v3/grpc_service.proto";
import "opencensus/proto/trace/v1/trace_config.proto";
import "udpa/annotations/migrate.proto";
import "udpa/annotations/status.proto";
import "udpa/annotations/versioning.proto";
import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.config.trace.v3";
option java_outer_classname = "OpencensusProto";
option java_multiple_files = true;
option (udpa.annotations.file_migrate).move_to_package =
"envoy.extensions.tracers.opencensus.v4alpha";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: OpenCensus tracer]
// Configuration for the OpenCensus tracer.
// [#next-free-field: 15]
// [#extension: envoy.tracers.opencensus]
message OpenCensusConfig {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.trace.v2.OpenCensusConfig";
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;
}
reserved 7;
// 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;
// (optional) The gRPC server that hosts Stackdriver tracing service. Only
// Google gRPC is supported. If :ref:`target_uri <envoy_v3_api_field_config.core.v3.GrpcService.GoogleGrpc.target_uri>`
// is not provided, the default production Stackdriver address will be used.
core.v3.GrpcService stackdriver_grpc_service = 13;
// 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 ocagent_address or
// ocagent_grpc_service 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
// [#comment:TODO: deprecate this field]
string ocagent_address = 12;
// (optional) The gRPC server hosted by the OpenCensus Agent. Only Google gRPC is supported.
// This is only used if the ocagent_address is left empty.
core.v3.GrpcService ocagent_grpc_service = 14;
// 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;
}

@ -0,0 +1,25 @@
syntax = "proto3";
package envoy.config.trace.v3;
import "envoy/config/core/v3/grpc_service.proto";
import "udpa/annotations/status.proto";
import "udpa/annotations/versioning.proto";
import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.config.trace.v3";
option java_outer_classname = "ServiceProto";
option java_multiple_files = true;
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: Trace Service]
// Configuration structure.
message TraceServiceConfig {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.trace.v2.TraceServiceConfig";
// The upstream gRPC cluster that hosts the metrics service.
core.v3.GrpcService grpc_service = 1 [(validate.rules).message = {required: true}];
}

@ -2,280 +2,16 @@ syntax = "proto3";
package envoy.config.trace.v3; package envoy.config.trace.v3;
import "envoy/config/core/v3/grpc_service.proto";
import "google/protobuf/any.proto";
import "google/protobuf/struct.proto";
import "google/protobuf/wrappers.proto";
import "opencensus/proto/trace/v1/trace_config.proto";
import "envoy/annotations/deprecation.proto";
import "udpa/annotations/status.proto"; import "udpa/annotations/status.proto";
import "udpa/annotations/versioning.proto";
import "validate/validate.proto"; import public "envoy/config/trace/v3/datadog.proto";
import public "envoy/config/trace/v3/dynamic_ot.proto";
import public "envoy/config/trace/v3/http_tracer.proto";
import public "envoy/config/trace/v3/lightstep.proto";
import public "envoy/config/trace/v3/opencensus.proto";
import public "envoy/config/trace/v3/service.proto";
import public "envoy/config/trace/v3/zipkin.proto";
option java_package = "io.envoyproxy.envoy.config.trace.v3"; option java_package = "io.envoyproxy.envoy.config.trace.v3";
option java_outer_classname = "TraceProto"; option java_outer_classname = "TraceProto";
option java_multiple_files = true; option java_multiple_files = true;
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: Tracing]
// Tracing :ref:`architecture overview <arch_overview_tracing>`.
// The tracing configuration specifies settings for an HTTP tracer provider used by Envoy.
//
// Envoy may support other tracers in the future, but right now the HTTP tracer is the only one
// supported.
//
// .. attention::
//
// Use of this message type has been deprecated in favor of direct use of
// :ref:`Tracing.Http <envoy_api_msg_config.trace.v3.Tracing.Http>`.
message Tracing {
option (udpa.annotations.versioning).previous_message_type = "envoy.config.trace.v2.Tracing";
// Configuration for an HTTP tracer provider used by Envoy.
//
// The configuration is defined by the
// :ref:`HttpConnectionManager.Tracing <envoy_api_msg_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.Tracing>`
// :ref:`provider <envoy_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.Tracing.provider>`
// field.
message Http {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.trace.v2.Tracing.Http";
reserved 2;
reserved "config";
// The name of the HTTP trace driver to instantiate. The name must match a
// supported HTTP trace driver. Built-in trace drivers:
//
// - *envoy.tracers.lightstep*
// - *envoy.tracers.zipkin*
// - *envoy.tracers.dynamic_ot*
// - *envoy.tracers.datadog*
// - *envoy.tracers.opencensus*
// - *envoy.tracers.xray*
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 <envoy_api_msg_config.trace.v3.LightstepConfig>`
// - :ref:`ZipkinConfig <envoy_api_msg_config.trace.v3.ZipkinConfig>`
// - :ref:`DynamicOtConfig <envoy_api_msg_config.trace.v3.DynamicOtConfig>`
// - :ref:`DatadogConfig <envoy_api_msg_config.trace.v3.DatadogConfig>`
// - :ref:`OpenCensusConfig <envoy_api_msg_config.trace.v3.OpenCensusConfig>`
// - :ref:`AWS X-Ray <envoy_api_msg_config.trace.v3.XRayConfig>`
oneof config_type {
google.protobuf.Any typed_config = 3;
}
}
// Provides configuration for the HTTP tracer.
Http http = 1;
}
// Configuration for the LightStep tracer.
// [#extension: envoy.tracers.lightstep]
message LightstepConfig {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.trace.v2.LightstepConfig";
// Available propagation modes
enum PropagationMode {
// Propagate trace context in the single header x-ot-span-context.
ENVOY = 0;
// Propagate trace context using LightStep's native format.
LIGHTSTEP = 1;
// Propagate trace context using the b3 format.
B3 = 2;
// Propagation trace context using the w3 trace-context standard.
TRACE_CONTEXT = 3;
}
// 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
// <https://lightstep.com/>`_ API.
string access_token_file = 2 [(validate.rules).string = {min_bytes: 1}];
// Propagation modes to use by LightStep's tracer.
repeated PropagationMode propagation_modes = 3
[(validate.rules).repeated = {items {enum {defined_only: true}}}];
}
// Configuration for the Zipkin tracer.
// [#extension: envoy.tracers.zipkin]
// [#next-free-field: 6]
message ZipkinConfig {
option (udpa.annotations.versioning).previous_message_type = "envoy.config.trace.v2.ZipkinConfig";
// 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.]
DEPRECATED_AND_UNAVAILABLE_DO_NOT_USE = 0
[deprecated = true, (envoy.annotations.disallowed_by_default_enum) = true];
// Zipkin API v2, JSON over HTTP.
HTTP_JSON = 1;
// Zipkin API v2, protobuf over HTTP.
HTTP_PROTO = 2;
// [#not-implemented-hide:]
GRPC = 3;
}
// The cluster manager cluster that hosts the Zipkin collectors. Note that the
// Zipkin cluster must be defined in the :ref:`Bootstrap static cluster
// resources <envoy_api_field_config.bootstrap.v3.Bootstrap.StaticResources.clusters>`.
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;
// 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
// <https://github.com/opentracing/opentracing-cpp>`_.
// [#extension: envoy.tracers.dynamic_ot]
message DynamicOtConfig {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.trace.v2.DynamicOtConfig";
// Dynamic library implementing the `OpenTracing API
// <https://github.com/opentracing/opentracing-cpp>`_.
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.
// [#extension: envoy.tracers.datadog]
message DatadogConfig {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.trace.v2.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.
// [#next-free-field: 15]
// [#extension: envoy.tracers.opencensus]
message OpenCensusConfig {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.trace.v2.OpenCensusConfig";
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;
}
reserved 7;
// 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;
// (optional) The gRPC server that hosts Stackdriver tracing service. Only
// Google gRPC is supported. If :ref:`target_uri <envoy_v3_api_field_config.core.v3.GrpcService.GoogleGrpc.target_uri>`
// is not provided, the default production Stackdriver address will be used.
core.v3.GrpcService stackdriver_grpc_service = 13;
// 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 ocagent_address or
// ocagent_grpc_service 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
// [#comment:TODO: deprecate this field]
string ocagent_address = 12;
// (optional) The gRPC server hosted by the OpenCensus Agent. Only Google gRPC is supported.
// This is only used if the ocagent_address is left empty.
core.v3.GrpcService ocagent_grpc_service = 14;
// 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 {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.trace.v2.TraceServiceConfig";
// The upstream gRPC cluster that hosts the metrics service.
core.v3.GrpcService grpc_service = 1 [(validate.rules).message = {required: true}];
}

@ -5,6 +5,7 @@ package envoy.config.trace.v3;
import "envoy/config/core/v3/address.proto"; import "envoy/config/core/v3/address.proto";
import "envoy/config/core/v3/base.proto"; import "envoy/config/core/v3/base.proto";
import "udpa/annotations/migrate.proto";
import "udpa/annotations/status.proto"; import "udpa/annotations/status.proto";
import "udpa/annotations/versioning.proto"; import "udpa/annotations/versioning.proto";
import "validate/validate.proto"; import "validate/validate.proto";
@ -12,6 +13,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.config.trace.v3"; option java_package = "io.envoyproxy.envoy.config.trace.v3";
option java_outer_classname = "XrayProto"; option java_outer_classname = "XrayProto";
option java_multiple_files = true; option java_multiple_files = true;
option (udpa.annotations.file_migrate).move_to_package = "envoy.extensions.tracers.xray.v4alpha";
option (udpa.annotations.file_status).package_version_status = ACTIVE; option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: AWS X-Ray Tracer Configuration] // [#protodoc-title: AWS X-Ray Tracer Configuration]

@ -0,0 +1,70 @@
syntax = "proto3";
package envoy.config.trace.v3;
import "google/protobuf/wrappers.proto";
import "envoy/annotations/deprecation.proto";
import "udpa/annotations/migrate.proto";
import "udpa/annotations/status.proto";
import "udpa/annotations/versioning.proto";
import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.config.trace.v3";
option java_outer_classname = "ZipkinProto";
option java_multiple_files = true;
option (udpa.annotations.file_migrate).move_to_package = "envoy.extensions.tracers.zipkin.v4alpha";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: Zipkin tracer]
// Configuration for the Zipkin tracer.
// [#extension: envoy.tracers.zipkin]
// [#next-free-field: 6]
message ZipkinConfig {
option (udpa.annotations.versioning).previous_message_type = "envoy.config.trace.v2.ZipkinConfig";
// 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.]
DEPRECATED_AND_UNAVAILABLE_DO_NOT_USE = 0
[deprecated = true, (envoy.annotations.disallowed_by_default_enum) = true];
// Zipkin API v2, JSON over HTTP.
HTTP_JSON = 1;
// Zipkin API v2, protobuf over HTTP.
HTTP_PROTO = 2;
// [#not-implemented-hide:]
GRPC = 3;
}
// The cluster manager cluster that hosts the Zipkin collectors. Note that the
// Zipkin cluster must be defined in the :ref:`Bootstrap static cluster
// resources <envoy_api_field_config.bootstrap.v3.Bootstrap.StaticResources.clusters>`.
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;
// Determines the selected collector endpoint version. By default, the ``HTTP_JSON_V1`` will be
// used.
CollectorEndpointVersion collector_endpoint_version = 5;
}

@ -6,10 +6,8 @@ licenses(["notice"]) # Apache 2
api_proto_package( api_proto_package(
deps = [ deps = [
"//envoy/annotations:pkg",
"//envoy/config/core/v4alpha:pkg", "//envoy/config/core/v4alpha:pkg",
"//envoy/config/trace/v3:pkg", "//envoy/config/trace/v3:pkg",
"@com_github_cncf_udpa//udpa/annotations:pkg", "@com_github_cncf_udpa//udpa/annotations:pkg",
"@opencensus_proto//opencensus/proto/trace/v1:trace_config_proto",
], ],
) )

@ -0,0 +1,73 @@
syntax = "proto3";
package envoy.config.trace.v4alpha;
import "google/protobuf/any.proto";
import "google/protobuf/struct.proto";
import "udpa/annotations/status.proto";
import "udpa/annotations/versioning.proto";
import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.config.trace.v4alpha";
option java_outer_classname = "HttpTracerProto";
option java_multiple_files = true;
option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE;
// [#protodoc-title: Tracing]
// Tracing :ref:`architecture overview <arch_overview_tracing>`.
// The tracing configuration specifies settings for an HTTP tracer provider used by Envoy.
//
// Envoy may support other tracers in the future, but right now the HTTP tracer is the only one
// supported.
//
// .. attention::
//
// Use of this message type has been deprecated in favor of direct use of
// :ref:`Tracing.Http <envoy_api_msg_config.trace.v4alpha.Tracing.Http>`.
message Tracing {
option (udpa.annotations.versioning).previous_message_type = "envoy.config.trace.v3.Tracing";
// Configuration for an HTTP tracer provider used by Envoy.
//
// The configuration is defined by the
// :ref:`HttpConnectionManager.Tracing <envoy_api_msg_extensions.filters.network.http_connection_manager.v4alpha.HttpConnectionManager.Tracing>`
// :ref:`provider <envoy_api_field_extensions.filters.network.http_connection_manager.v4alpha.HttpConnectionManager.Tracing.provider>`
// field.
message Http {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.trace.v3.Tracing.Http";
reserved 2;
reserved "config";
// The name of the HTTP trace driver to instantiate. The name must match a
// supported HTTP trace driver. Built-in trace drivers:
//
// - *envoy.tracers.lightstep*
// - *envoy.tracers.zipkin*
// - *envoy.tracers.dynamic_ot*
// - *envoy.tracers.datadog*
// - *envoy.tracers.opencensus*
// - *envoy.tracers.xray*
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 <envoy_api_msg_extensions.tracers.lightstep.v4alpha.LightstepConfig>`
// - :ref:`ZipkinConfig <envoy_api_msg_extensions.tracers.zipkin.v4alpha.ZipkinConfig>`
// - :ref:`DynamicOtConfig <envoy_api_msg_extensions.tracers.dynamic_ot.v4alpha.DynamicOtConfig>`
// - :ref:`DatadogConfig <envoy_api_msg_extensions.tracers.datadog.v4alpha.DatadogConfig>`
// - :ref:`OpenCensusConfig <envoy_api_msg_extensions.tracers.opencensus.v4alpha.OpenCensusConfig>`
// - :ref:`AWS X-Ray <envoy_api_msg_extensions.tracers.xray.v4alpha.XRayConfig>`
oneof config_type {
google.protobuf.Any typed_config = 3;
}
}
// Provides configuration for the HTTP tracer.
Http http = 1;
}

@ -0,0 +1,25 @@
syntax = "proto3";
package envoy.config.trace.v4alpha;
import "envoy/config/core/v4alpha/grpc_service.proto";
import "udpa/annotations/status.proto";
import "udpa/annotations/versioning.proto";
import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.config.trace.v4alpha";
option java_outer_classname = "ServiceProto";
option java_multiple_files = true;
option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE;
// [#protodoc-title: Trace Service]
// Configuration structure.
message TraceServiceConfig {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.trace.v3.TraceServiceConfig";
// The upstream gRPC cluster that hosts the metrics service.
core.v4alpha.GrpcService grpc_service = 1 [(validate.rules).message = {required: true}];
}

@ -1,281 +0,0 @@
syntax = "proto3";
package envoy.config.trace.v4alpha;
import "envoy/config/core/v4alpha/grpc_service.proto";
import "google/protobuf/any.proto";
import "google/protobuf/struct.proto";
import "google/protobuf/wrappers.proto";
import "opencensus/proto/trace/v1/trace_config.proto";
import "envoy/annotations/deprecation.proto";
import "udpa/annotations/status.proto";
import "udpa/annotations/versioning.proto";
import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.config.trace.v4alpha";
option java_outer_classname = "TraceProto";
option java_multiple_files = true;
option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE;
// [#protodoc-title: Tracing]
// Tracing :ref:`architecture overview <arch_overview_tracing>`.
// The tracing configuration specifies settings for an HTTP tracer provider used by Envoy.
//
// Envoy may support other tracers in the future, but right now the HTTP tracer is the only one
// supported.
//
// .. attention::
//
// Use of this message type has been deprecated in favor of direct use of
// :ref:`Tracing.Http <envoy_api_msg_config.trace.v4alpha.Tracing.Http>`.
message Tracing {
option (udpa.annotations.versioning).previous_message_type = "envoy.config.trace.v3.Tracing";
// Configuration for an HTTP tracer provider used by Envoy.
//
// The configuration is defined by the
// :ref:`HttpConnectionManager.Tracing <envoy_api_msg_extensions.filters.network.http_connection_manager.v4alpha.HttpConnectionManager.Tracing>`
// :ref:`provider <envoy_api_field_extensions.filters.network.http_connection_manager.v4alpha.HttpConnectionManager.Tracing.provider>`
// field.
message Http {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.trace.v3.Tracing.Http";
reserved 2;
reserved "config";
// The name of the HTTP trace driver to instantiate. The name must match a
// supported HTTP trace driver. Built-in trace drivers:
//
// - *envoy.tracers.lightstep*
// - *envoy.tracers.zipkin*
// - *envoy.tracers.dynamic_ot*
// - *envoy.tracers.datadog*
// - *envoy.tracers.opencensus*
// - *envoy.tracers.xray*
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 <envoy_api_msg_config.trace.v4alpha.LightstepConfig>`
// - :ref:`ZipkinConfig <envoy_api_msg_config.trace.v4alpha.ZipkinConfig>`
// - :ref:`DynamicOtConfig <envoy_api_msg_config.trace.v4alpha.DynamicOtConfig>`
// - :ref:`DatadogConfig <envoy_api_msg_config.trace.v4alpha.DatadogConfig>`
// - :ref:`OpenCensusConfig <envoy_api_msg_config.trace.v4alpha.OpenCensusConfig>`
// - :ref:`AWS X-Ray <envoy_api_msg_config.trace.v4alpha.XRayConfig>`
oneof config_type {
google.protobuf.Any typed_config = 3;
}
}
// Provides configuration for the HTTP tracer.
Http http = 1;
}
// Configuration for the LightStep tracer.
// [#extension: envoy.tracers.lightstep]
message LightstepConfig {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.trace.v3.LightstepConfig";
// Available propagation modes
enum PropagationMode {
// Propagate trace context in the single header x-ot-span-context.
ENVOY = 0;
// Propagate trace context using LightStep's native format.
LIGHTSTEP = 1;
// Propagate trace context using the b3 format.
B3 = 2;
// Propagation trace context using the w3 trace-context standard.
TRACE_CONTEXT = 3;
}
// 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
// <https://lightstep.com/>`_ API.
string access_token_file = 2 [(validate.rules).string = {min_bytes: 1}];
// Propagation modes to use by LightStep's tracer.
repeated PropagationMode propagation_modes = 3
[(validate.rules).repeated = {items {enum {defined_only: true}}}];
}
// Configuration for the Zipkin tracer.
// [#extension: envoy.tracers.zipkin]
// [#next-free-field: 6]
message ZipkinConfig {
option (udpa.annotations.versioning).previous_message_type = "envoy.config.trace.v3.ZipkinConfig";
// 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.]
DEPRECATED_AND_UNAVAILABLE_DO_NOT_USE = 0
[deprecated = true, (envoy.annotations.disallowed_by_default_enum) = true];
// Zipkin API v2, JSON over HTTP.
HTTP_JSON = 1;
// Zipkin API v2, protobuf over HTTP.
HTTP_PROTO = 2;
// [#not-implemented-hide:]
GRPC = 3;
}
// The cluster manager cluster that hosts the Zipkin collectors. Note that the
// Zipkin cluster must be defined in the :ref:`Bootstrap static cluster
// resources <envoy_api_field_config.bootstrap.v4alpha.Bootstrap.StaticResources.clusters>`.
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;
// 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
// <https://github.com/opentracing/opentracing-cpp>`_.
// [#extension: envoy.tracers.dynamic_ot]
message DynamicOtConfig {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.trace.v3.DynamicOtConfig";
// Dynamic library implementing the `OpenTracing API
// <https://github.com/opentracing/opentracing-cpp>`_.
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.
// [#extension: envoy.tracers.datadog]
message DatadogConfig {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.trace.v3.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.
// [#next-free-field: 15]
// [#extension: envoy.tracers.opencensus]
message OpenCensusConfig {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.trace.v3.OpenCensusConfig";
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;
}
reserved 7;
// 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;
// (optional) The gRPC server that hosts Stackdriver tracing service. Only
// Google gRPC is supported. If :ref:`target_uri <envoy_v3_api_field_config.core.v3.GrpcService.GoogleGrpc.target_uri>`
// is not provided, the default production Stackdriver address will be used.
core.v4alpha.GrpcService stackdriver_grpc_service = 13;
// 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 ocagent_address or
// ocagent_grpc_service 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
// [#comment:TODO: deprecate this field]
string ocagent_address = 12;
// (optional) The gRPC server hosted by the OpenCensus Agent. Only Google gRPC is supported.
// This is only used if the ocagent_address is left empty.
core.v4alpha.GrpcService ocagent_grpc_service = 14;
// 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 {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.trace.v3.TraceServiceConfig";
// The upstream gRPC cluster that hosts the metrics service.
core.v4alpha.GrpcService grpc_service = 1 [(validate.rules).message = {required: true}];
}

@ -7,7 +7,7 @@ import "envoy/config/core/v3/config_source.proto";
import "envoy/config/core/v3/protocol.proto"; import "envoy/config/core/v3/protocol.proto";
import "envoy/config/route/v3/route.proto"; import "envoy/config/route/v3/route.proto";
import "envoy/config/route/v3/scoped_route.proto"; import "envoy/config/route/v3/scoped_route.proto";
import "envoy/config/trace/v3/trace.proto"; import "envoy/config/trace/v3/http_tracer.proto";
import "envoy/type/tracing/v3/custom_tag.proto"; import "envoy/type/tracing/v3/custom_tag.proto";
import "envoy/type/v3/percent.proto"; import "envoy/type/v3/percent.proto";

@ -7,7 +7,7 @@ import "envoy/config/core/v4alpha/config_source.proto";
import "envoy/config/core/v4alpha/protocol.proto"; import "envoy/config/core/v4alpha/protocol.proto";
import "envoy/config/route/v4alpha/route.proto"; import "envoy/config/route/v4alpha/route.proto";
import "envoy/config/route/v4alpha/scoped_route.proto"; import "envoy/config/route/v4alpha/scoped_route.proto";
import "envoy/config/trace/v4alpha/trace.proto"; import "envoy/config/trace/v4alpha/http_tracer.proto";
import "envoy/type/tracing/v3/custom_tag.proto"; import "envoy/type/tracing/v3/custom_tag.proto";
import "envoy/type/v3/percent.proto"; import "envoy/type/v3/percent.proto";

@ -0,0 +1,12 @@
# DO NOT EDIT. This file is generated by tools/proto_sync.py.
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/trace/v3:pkg",
"@com_github_cncf_udpa//udpa/annotations:pkg",
],
)

@ -0,0 +1,27 @@
syntax = "proto3";
package envoy.extensions.tracers.datadog.v4alpha;
import "udpa/annotations/status.proto";
import "udpa/annotations/versioning.proto";
import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.tracers.datadog.v4alpha";
option java_outer_classname = "DatadogProto";
option java_multiple_files = true;
option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE;
// [#protodoc-title: Datadog tracer]
// Configuration for the Datadog tracer.
// [#extension: envoy.tracers.datadog]
message DatadogConfig {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.trace.v3.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}];
}

@ -0,0 +1,12 @@
# DO NOT EDIT. This file is generated by tools/proto_sync.py.
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/trace/v3:pkg",
"@com_github_cncf_udpa//udpa/annotations:pkg",
],
)

@ -0,0 +1,33 @@
syntax = "proto3";
package envoy.extensions.tracers.dynamic_ot.v4alpha;
import "google/protobuf/struct.proto";
import "udpa/annotations/status.proto";
import "udpa/annotations/versioning.proto";
import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.tracers.dynamic_ot.v4alpha";
option java_outer_classname = "DynamicOtProto";
option java_multiple_files = true;
option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE;
// [#protodoc-title: Dynamically loadable OpenTracing tracer]
// DynamicOtConfig is used to dynamically load a tracer from a shared library
// that implements the `OpenTracing dynamic loading API
// <https://github.com/opentracing/opentracing-cpp>`_.
// [#extension: envoy.tracers.dynamic_ot]
message DynamicOtConfig {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.trace.v3.DynamicOtConfig";
// Dynamic library implementing the `OpenTracing API
// <https://github.com/opentracing/opentracing-cpp>`_.
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;
}

@ -0,0 +1,12 @@
# DO NOT EDIT. This file is generated by tools/proto_sync.py.
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/trace/v3:pkg",
"@com_github_cncf_udpa//udpa/annotations:pkg",
],
)

@ -0,0 +1,47 @@
syntax = "proto3";
package envoy.extensions.tracers.lightstep.v4alpha;
import "udpa/annotations/status.proto";
import "udpa/annotations/versioning.proto";
import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.tracers.lightstep.v4alpha";
option java_outer_classname = "LightstepProto";
option java_multiple_files = true;
option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE;
// [#protodoc-title: LightStep tracer]
// Configuration for the LightStep tracer.
// [#extension: envoy.tracers.lightstep]
message LightstepConfig {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.trace.v3.LightstepConfig";
// Available propagation modes
enum PropagationMode {
// Propagate trace context in the single header x-ot-span-context.
ENVOY = 0;
// Propagate trace context using LightStep's native format.
LIGHTSTEP = 1;
// Propagate trace context using the b3 format.
B3 = 2;
// Propagation trace context using the w3 trace-context standard.
TRACE_CONTEXT = 3;
}
// 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
// <https://lightstep.com/>`_ API.
string access_token_file = 2 [(validate.rules).string = {min_bytes: 1}];
// Propagation modes to use by LightStep's tracer.
repeated PropagationMode propagation_modes = 3
[(validate.rules).repeated = {items {enum {defined_only: true}}}];
}

@ -0,0 +1,14 @@
# DO NOT EDIT. This file is generated by tools/proto_sync.py.
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v4alpha:pkg",
"//envoy/config/trace/v3:pkg",
"@com_github_cncf_udpa//udpa/annotations:pkg",
"@opencensus_proto//opencensus/proto/trace/v1:trace_config_proto",
],
)

@ -0,0 +1,97 @@
syntax = "proto3";
package envoy.extensions.tracers.opencensus.v4alpha;
import "envoy/config/core/v4alpha/grpc_service.proto";
import "opencensus/proto/trace/v1/trace_config.proto";
import "udpa/annotations/status.proto";
import "udpa/annotations/versioning.proto";
import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.tracers.opencensus.v4alpha";
option java_outer_classname = "OpencensusProto";
option java_multiple_files = true;
option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE;
// [#protodoc-title: OpenCensus tracer]
// Configuration for the OpenCensus tracer.
// [#next-free-field: 15]
// [#extension: envoy.tracers.opencensus]
message OpenCensusConfig {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.trace.v3.OpenCensusConfig";
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;
}
reserved 7;
// 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;
// (optional) The gRPC server that hosts Stackdriver tracing service. Only
// Google gRPC is supported. If :ref:`target_uri <envoy_v3_api_field_config.core.v3.GrpcService.GoogleGrpc.target_uri>`
// is not provided, the default production Stackdriver address will be used.
config.core.v4alpha.GrpcService stackdriver_grpc_service = 13;
// 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 ocagent_address or
// ocagent_grpc_service 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
// [#comment:TODO: deprecate this field]
string ocagent_address = 12;
// (optional) The gRPC server hosted by the OpenCensus Agent. Only Google gRPC is supported.
// This is only used if the ocagent_address is left empty.
config.core.v4alpha.GrpcService ocagent_grpc_service = 14;
// 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;
}

@ -0,0 +1,13 @@
# DO NOT EDIT. This file is generated by tools/proto_sync.py.
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v4alpha:pkg",
"//envoy/config/trace/v3:pkg",
"@com_github_cncf_udpa//udpa/annotations:pkg",
],
)

@ -1,6 +1,6 @@
syntax = "proto3"; syntax = "proto3";
package envoy.config.trace.v4alpha; package envoy.extensions.tracers.xray.v4alpha;
import "envoy/config/core/v4alpha/address.proto"; import "envoy/config/core/v4alpha/address.proto";
import "envoy/config/core/v4alpha/base.proto"; import "envoy/config/core/v4alpha/base.proto";
@ -9,7 +9,7 @@ import "udpa/annotations/status.proto";
import "udpa/annotations/versioning.proto"; import "udpa/annotations/versioning.proto";
import "validate/validate.proto"; import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.config.trace.v4alpha"; option java_package = "io.envoyproxy.envoy.extensions.tracers.xray.v4alpha";
option java_outer_classname = "XrayProto"; option java_outer_classname = "XrayProto";
option java_multiple_files = true; option java_multiple_files = true;
option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE; option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE;
@ -22,7 +22,7 @@ message XRayConfig {
// The UDP endpoint of the X-Ray Daemon where the spans will be sent. // The UDP endpoint of the X-Ray Daemon where the spans will be sent.
// If this value is not set, the default value of 127.0.0.1:2000 will be used. // If this value is not set, the default value of 127.0.0.1:2000 will be used.
core.v4alpha.SocketAddress daemon_endpoint = 1; config.core.v4alpha.SocketAddress daemon_endpoint = 1;
// The name of the X-Ray segment. // The name of the X-Ray segment.
string segment_name = 2 [(validate.rules).string = {min_len: 1}]; string segment_name = 2 [(validate.rules).string = {min_len: 1}];
@ -31,5 +31,5 @@ message XRayConfig {
// For an example of the sampling rules see: // For an example of the sampling rules see:
// `X-Ray SDK documentation // `X-Ray SDK documentation
// <https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-go-configuration.html#xray-sdk-go-configuration-sampling>`_ // <https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-go-configuration.html#xray-sdk-go-configuration-sampling>`_
core.v4alpha.DataSource sampling_rule_manifest = 3; config.core.v4alpha.DataSource sampling_rule_manifest = 3;
} }

@ -0,0 +1,13 @@
# DO NOT EDIT. This file is generated by tools/proto_sync.py.
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/annotations:pkg",
"//envoy/config/trace/v3:pkg",
"@com_github_cncf_udpa//udpa/annotations:pkg",
],
)

@ -0,0 +1,68 @@
syntax = "proto3";
package envoy.extensions.tracers.zipkin.v4alpha;
import "google/protobuf/wrappers.proto";
import "envoy/annotations/deprecation.proto";
import "udpa/annotations/status.proto";
import "udpa/annotations/versioning.proto";
import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.tracers.zipkin.v4alpha";
option java_outer_classname = "ZipkinProto";
option java_multiple_files = true;
option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE;
// [#protodoc-title: Zipkin tracer]
// Configuration for the Zipkin tracer.
// [#extension: envoy.tracers.zipkin]
// [#next-free-field: 6]
message ZipkinConfig {
option (udpa.annotations.versioning).previous_message_type = "envoy.config.trace.v3.ZipkinConfig";
// 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.]
DEPRECATED_AND_UNAVAILABLE_DO_NOT_USE = 0
[deprecated = true, (envoy.annotations.disallowed_by_default_enum) = true];
// Zipkin API v2, JSON over HTTP.
HTTP_JSON = 1;
// Zipkin API v2, protobuf over HTTP.
HTTP_PROTO = 2;
// [#not-implemented-hide:]
GRPC = 3;
}
// The cluster manager cluster that hosts the Zipkin collectors. Note that the
// Zipkin cluster must be defined in the :ref:`Bootstrap static cluster
// resources <envoy_api_field_config.bootstrap.v4alpha.Bootstrap.StaticResources.clusters>`.
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;
// Determines the selected collector endpoint version. By default, the ``HTTP_JSON_V1`` will be
// used.
CollectorEndpointVersion collector_endpoint_version = 5;
}
Loading…
Cancel
Save