From 783cea0e79247f37f7ce2ea5714bc7d5714f4f72 Mon Sep 17 00:00:00 2001 From: "update-envoy[bot]" <135279899+update-envoy[bot]@users.noreply.github.com> Date: Mon, 30 Oct 2023 19:58:20 +0000 Subject: [PATCH] Allow specifying samplers for the OpenTelemetry tracer via a new configuration. (#30259) Signed-off-by: thomas.ebner Signed-off-by: Joao Grassi Mirrored from https://github.com/envoyproxy/envoy @ c600637b9fddfe3f1381baf436e050f3fa7723b6 --- BUILD | 1 + envoy/config/trace/v3/opentelemetry.proto | 9 ++++++++ .../tracers/opentelemetry/samplers/v3/BUILD | 9 ++++++++ .../samplers/v3/always_on_sampler.proto | 23 +++++++++++++++++++ versioning/BUILD | 1 + 5 files changed, 43 insertions(+) create mode 100644 envoy/extensions/tracers/opentelemetry/samplers/v3/BUILD create mode 100644 envoy/extensions/tracers/opentelemetry/samplers/v3/always_on_sampler.proto diff --git a/BUILD b/BUILD index d40a6c4d..78b712f8 100644 --- a/BUILD +++ b/BUILD @@ -307,6 +307,7 @@ proto_library( "//envoy/extensions/stat_sinks/open_telemetry/v3:pkg", "//envoy/extensions/stat_sinks/wasm/v3:pkg", "//envoy/extensions/tracers/opentelemetry/resource_detectors/v3:pkg", + "//envoy/extensions/tracers/opentelemetry/samplers/v3:pkg", "//envoy/extensions/transport_sockets/alts/v3:pkg", "//envoy/extensions/transport_sockets/http_11_proxy/v3:pkg", "//envoy/extensions/transport_sockets/internal_upstream/v3:pkg", diff --git a/envoy/config/trace/v3/opentelemetry.proto b/envoy/config/trace/v3/opentelemetry.proto index 5d9c9202..59028326 100644 --- a/envoy/config/trace/v3/opentelemetry.proto +++ b/envoy/config/trace/v3/opentelemetry.proto @@ -19,6 +19,7 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE; // Configuration for the OpenTelemetry tracer. // [#extension: envoy.tracers.opentelemetry] +// [#next-free-field: 6] message OpenTelemetryConfig { // The upstream gRPC cluster that will receive OTLP traces. // Note that the tracer drops traces if the server does not read data fast enough. @@ -48,4 +49,12 @@ message OpenTelemetryConfig { // An ordered list of resource detectors // [#extension-category: envoy.tracers.opentelemetry.resource_detectors] repeated core.v3.TypedExtensionConfig resource_detectors = 4; + + // Specifies the sampler to be used by the OpenTelemetry tracer. + // The configured sampler implements the Sampler interface defined by the OpenTelemetry specification. + // This field can be left empty. In this case, the default Envoy sampling decision is used. + // + // See: `OpenTelemetry sampler specification `_ + // [#extension-category: envoy.tracers.opentelemetry.samplers] + core.v3.TypedExtensionConfig sampler = 5; } diff --git a/envoy/extensions/tracers/opentelemetry/samplers/v3/BUILD b/envoy/extensions/tracers/opentelemetry/samplers/v3/BUILD new file mode 100644 index 00000000..ee92fb65 --- /dev/null +++ b/envoy/extensions/tracers/opentelemetry/samplers/v3/BUILD @@ -0,0 +1,9 @@ +# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py. + +load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package") + +licenses(["notice"]) # Apache 2 + +api_proto_package( + deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"], +) diff --git a/envoy/extensions/tracers/opentelemetry/samplers/v3/always_on_sampler.proto b/envoy/extensions/tracers/opentelemetry/samplers/v3/always_on_sampler.proto new file mode 100644 index 00000000..241dc06e --- /dev/null +++ b/envoy/extensions/tracers/opentelemetry/samplers/v3/always_on_sampler.proto @@ -0,0 +1,23 @@ +syntax = "proto3"; + +package envoy.extensions.tracers.opentelemetry.samplers.v3; + +import "udpa/annotations/status.proto"; + +option java_package = "io.envoyproxy.envoy.extensions.tracers.opentelemetry.samplers.v3"; +option java_outer_classname = "AlwaysOnSamplerProto"; +option java_multiple_files = true; +option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/tracers/opentelemetry/samplers/v3;samplersv3"; +option (udpa.annotations.file_status).package_version_status = ACTIVE; + +// [#protodoc-title: Always On Sampler config] +// Configuration for the "AlwaysOn" Sampler extension. +// The sampler follows the "AlwaysOn" implementation from the OpenTelemetry +// SDK specification. +// +// See: +// `AlwaysOn sampler specification `_ +// [#extension: envoy.tracers.opentelemetry.samplers.always_on] + +message AlwaysOnSamplerConfig { +} diff --git a/versioning/BUILD b/versioning/BUILD index 9ad67e06..4e89b020 100644 --- a/versioning/BUILD +++ b/versioning/BUILD @@ -246,6 +246,7 @@ proto_library( "//envoy/extensions/stat_sinks/open_telemetry/v3:pkg", "//envoy/extensions/stat_sinks/wasm/v3:pkg", "//envoy/extensions/tracers/opentelemetry/resource_detectors/v3:pkg", + "//envoy/extensions/tracers/opentelemetry/samplers/v3:pkg", "//envoy/extensions/transport_sockets/alts/v3:pkg", "//envoy/extensions/transport_sockets/http_11_proxy/v3:pkg", "//envoy/extensions/transport_sockets/internal_upstream/v3:pkg",