From 58f322f19d59f44e44789dc52041070c8875d7ec Mon Sep 17 00:00:00 2001 From: Emil Mikulic Date: Fri, 23 Aug 2019 14:47:14 +1000 Subject: [PATCH] tracing: add OpenCensus agent exporter support to OpenCensus driver. Signed-off-by: Emil Mikulic --- api/envoy/config/trace/v2/trace.proto | 7 +++++++ bazel/repositories.bzl | 4 ++++ source/extensions/tracers/opencensus/BUILD | 1 + .../tracers/opencensus/opencensus_tracer_impl.cc | 6 ++++++ test/extensions/tracers/opencensus/config_test.cc | 2 ++ 5 files changed, 20 insertions(+) diff --git a/api/envoy/config/trace/v2/trace.proto b/api/envoy/config/trace/v2/trace.proto index e4e4dec64e95..da298d062796 100644 --- a/api/envoy/config/trace/v2/trace.proto +++ b/api/envoy/config/trace/v2/trace.proto @@ -136,6 +136,13 @@ message OpenCensusConfig { // The URL to Zipkin, e.g. "http://127.0.0.1:9411/api/v2/spans" string zipkin_url = 6; + // Enables the OpenCensus Agent exporter if set to true. The address must also + // be set. + bool ocagent_exporter_enabled = 11; + + // The address of the OpenCensus Agent, if its exporter is enabled. + string ocagent_address = 12; + reserved 7; // Formerly zipkin_service_name. enum TraceContext { diff --git a/bazel/repositories.bzl b/bazel/repositories.bzl index 319d374286bd..15dbd7cb0e8c 100644 --- a/bazel/repositories.bzl +++ b/bazel/repositories.bzl @@ -549,6 +549,10 @@ def _io_opencensus_cpp(): name = "opencensus_trace_trace_context", actual = "@io_opencensus_cpp//opencensus/trace:trace_context", ) + native.bind( + name = "opencensus_exporter_ocagent", + actual = "@io_opencensus_cpp//opencensus/exporters/trace/ocagent:ocagent_exporter", + ) native.bind( name = "opencensus_exporter_stdout", actual = "@io_opencensus_cpp//opencensus/exporters/trace/stdout:stdout_exporter", diff --git a/source/extensions/tracers/opencensus/BUILD b/source/extensions/tracers/opencensus/BUILD index 492648fdf088..dbef2b4be0b3 100644 --- a/source/extensions/tracers/opencensus/BUILD +++ b/source/extensions/tracers/opencensus/BUILD @@ -32,6 +32,7 @@ envoy_cc_library( "opencensus_trace_cloud_trace_context", "opencensus_trace_grpc_trace_bin", "opencensus_trace_trace_context", + "opencensus_exporter_ocagent", "opencensus_exporter_stdout", "opencensus_exporter_stackdriver", "opencensus_exporter_zipkin", diff --git a/source/extensions/tracers/opencensus/opencensus_tracer_impl.cc b/source/extensions/tracers/opencensus/opencensus_tracer_impl.cc index 9be9d3484868..a5562d20c81f 100644 --- a/source/extensions/tracers/opencensus/opencensus_tracer_impl.cc +++ b/source/extensions/tracers/opencensus/opencensus_tracer_impl.cc @@ -8,6 +8,7 @@ #include "absl/strings/str_cat.h" #include "google/devtools/cloudtrace/v2/tracing.grpc.pb.h" +#include "opencensus/exporters/trace/ocagent/ocagent_exporter.h" #include "opencensus/exporters/trace/stackdriver/stackdriver_exporter.h" #include "opencensus/exporters/trace/stdout/stdout_exporter.h" #include "opencensus/exporters/trace/zipkin/zipkin_exporter.h" @@ -257,6 +258,11 @@ Driver::Driver(const envoy::config::trace::v2::OpenCensusConfig& oc_config, opts.service_name = local_info_.clusterName(); ::opencensus::exporters::trace::ZipkinExporter::Register(opts); } + if (oc_config.ocagent_exporter_enabled()) { + ::opencensus::exporters::trace::OcAgentOptions opts; + opts.address = oc_config.ocagent_address(); + ::opencensus::exporters::trace::OcAgentExporter::Register(std::move(opts)); + } } void Driver::applyTraceConfig(const opencensus::proto::trace::v1::TraceConfig& config) { diff --git a/test/extensions/tracers/opencensus/config_test.cc b/test/extensions/tracers/opencensus/config_test.cc index 686f3e5b5813..95cd8767f86b 100644 --- a/test/extensions/tracers/opencensus/config_test.cc +++ b/test/extensions/tracers/opencensus/config_test.cc @@ -50,6 +50,8 @@ TEST(OpenCensusTracerConfigTest, OpenCensusHttpTracerWithTypedConfig) { stackdriver_project_id: test_project_id zipkin_exporter_enabled: true zipkin_url: http://127.0.0.1:9411/api/v2/spans + ocagent_exporter_enabled: true + ocagent_address: 127.0.0.1:55678 incoming_trace_context: b3 incoming_trace_context: trace_context incoming_trace_context: grpc_trace_bin