extensions: add OpenTelemetry tracer extension for exporting OTLP traces (#20281)

Signed-off-by: Alex Ellis <ellisonjtk@gmail.com>

Mirrored from https://github.com/envoyproxy/envoy @ f7a8db0599924663a3549460edeb212be97e2ced
pull/626/head
data-plane-api(Azure Pipelines) 3 years ago
parent ab3d7b06a2
commit f5c3d8e5cf
  1. 3
      bazel/external_proto_deps.bzl
  2. 30
      bazel/repositories.bzl
  3. 6
      bazel/repository_locations.bzl
  4. 26
      envoy/config/trace/v3/opentelemetry.proto
  5. 1
      envoy/config/trace/v3/trace.proto

@ -32,6 +32,7 @@ EXTERNAL_PROTO_GO_BAZEL_DEP_MAP = {
"@com_google_googleapis//google/api/expr/v1alpha1:syntax_proto": "@go_googleapis//google/api/expr/v1alpha1:expr_go_proto",
"@opencensus_proto//opencensus/proto/trace/v1:trace_proto": "@opencensus_proto//opencensus/proto/trace/v1:trace_proto_go",
"@opencensus_proto//opencensus/proto/trace/v1:trace_config_proto": "@opencensus_proto//opencensus/proto/trace/v1:trace_and_config_proto_go",
"@opentelemetry_proto//:trace": "@opentelemetry_proto//:trace_go_proto",
"@opentelemetry_proto//:logs": "@opentelemetry_proto//:logs_go_proto",
"@opentelemetry_proto//:common": "@opentelemetry_proto//:common_go_proto",
}
@ -42,6 +43,7 @@ EXTERNAL_PROTO_CC_BAZEL_DEP_MAP = {
"@com_google_googleapis//google/api/expr/v1alpha1:syntax_proto": "@com_google_googleapis//google/api/expr/v1alpha1:syntax_cc_proto",
"@opencensus_proto//opencensus/proto/trace/v1:trace_proto": "@opencensus_proto//opencensus/proto/trace/v1:trace_proto_cc",
"@opencensus_proto//opencensus/proto/trace/v1:trace_config_proto": "@opencensus_proto//opencensus/proto/trace/v1:trace_config_proto_cc",
"@opentelemetry_proto//:trace": "@opentelemetry_proto//:trace_cc_proto",
"@opentelemetry_proto//:logs": "@opentelemetry_proto//:logs_cc_proto",
"@opentelemetry_proto//:common": "@opentelemetry_proto//:common_cc_proto",
}
@ -52,6 +54,7 @@ EXTERNAL_PROTO_PY_BAZEL_DEP_MAP = {
"@com_google_googleapis//google/api/expr/v1alpha1:syntax_proto": "@com_google_googleapis//google/api/expr/v1alpha1:syntax_py_proto",
"@opencensus_proto//opencensus/proto/trace/v1:trace_proto": "@opencensus_proto//opencensus/proto/trace/v1:trace_proto_py",
"@opencensus_proto//opencensus/proto/trace/v1:trace_config_proto": "@opencensus_proto//opencensus/proto/trace/v1:trace_config_proto_py",
"@opentelemetry_proto//:trace": "@opentelemetry_proto//:trace_py_proto",
"@opentelemetry_proto//:logs": "@opentelemetry_proto//:logs_py_proto",
"@opentelemetry_proto//:common": "@opentelemetry_proto//:common_py_proto",
}

@ -42,7 +42,7 @@ def api_dependencies():
)
external_http_archive(
name = "opentelemetry_proto",
build_file_content = OPENTELEMETRY_LOGS_BUILD_CONTENT,
build_file_content = OPENTELEMETRY_BUILD_CONTENT,
)
external_http_archive(
name = "com_github_bufbuild_buf",
@ -111,7 +111,7 @@ go_proto_library(
)
"""
OPENTELEMETRY_LOGS_BUILD_CONTENT = """
OPENTELEMETRY_BUILD_CONTENT = """
load("@envoy_api//bazel:api_build_system.bzl", "api_cc_py_proto_library")
load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library")
@ -123,6 +123,17 @@ api_cc_py_proto_library(
visibility = ["//visibility:public"],
)
api_cc_py_proto_library(
name = "resource",
srcs = [
"opentelemetry/proto/resource/v1/resource.proto",
],
deps = [
"//:common",
],
visibility = ["//visibility:public"],
)
go_proto_library(
name = "common_go_proto",
importpath = "go.opentelemetry.io/proto/otlp/common/v1",
@ -137,10 +148,10 @@ api_cc_py_proto_library(
srcs = [
"opentelemetry/proto/collector/logs/v1/logs_service.proto",
"opentelemetry/proto/logs/v1/logs.proto",
"opentelemetry/proto/resource/v1/resource.proto",
],
deps = [
"//:common",
"//:resource",
],
visibility = ["//visibility:public"],
)
@ -151,6 +162,19 @@ go_proto_library(
proto = ":logs",
visibility = ["//visibility:public"],
)
api_cc_py_proto_library(
name = "trace",
srcs = [
"opentelemetry/proto/collector/trace/v1/trace_service.proto",
"opentelemetry/proto/trace/v1/trace.proto",
],
deps = [
"//:common",
"//:resource",
],
visibility = ["//visibility:public"],
)
"""
BUF_BUILD_CONTENT = """

@ -100,9 +100,9 @@ REPOSITORY_LOCATIONS_SPEC = dict(
project_name = "OpenTelemetry Proto",
project_desc = "Language Independent Interface Types For OpenTelemetry",
project_url = "https://github.com/open-telemetry/opentelemetry-proto",
version = "0.11.0",
sha256 = "985367f8905e91018e636cbf0d83ab3f834b665c4f5899a27d10cae9657710e2",
release_date = "2021-10-07",
version = "0.18.0",
sha256 = "134ce87f0a623daac19b9507b92da0d9b82929e3db796bba631e422f6ea8d3b3",
release_date = "2022-05-17",
strip_prefix = "opentelemetry-proto-{version}",
urls = ["https://github.com/open-telemetry/opentelemetry-proto/archive/v{version}.tar.gz"],
use_category = ["api"],

@ -0,0 +1,26 @@
syntax = "proto3";
package envoy.config.trace.v3;
import "envoy/config/core/v3/grpc_service.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 = "OpentelemetryProto";
option java_multiple_files = true;
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/trace/v3;tracev3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: OpenTelemetry tracer]
// Configuration for the OpenTelemetry tracer.
// [#extension: envoy.tracers.opentelemetry]
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.
core.v3.GrpcService grpc_service = 1 [(validate.rules).message = {required: true}];
}

@ -7,6 +7,7 @@ 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/opentelemetry.proto";
import public "envoy/config/trace/v3/service.proto";
import public "envoy/config/trace/v3/zipkin.proto";

Loading…
Cancel
Save