diff --git a/config/envoyconfig/clusters.go b/config/envoyconfig/clusters.go index 3fa9d2f8f..bfb083cc5 100644 --- a/config/envoyconfig/clusters.go +++ b/config/envoyconfig/clusters.go @@ -437,16 +437,6 @@ func grpcHealthChecks(name string) []*envoy_config_core_v3.HealthCheck { ServiceName: name, }, }, - // EventLogger: []*envoy_config_core_v3.TypedExtensionConfig{ - // { - // Name: "envoy.health_check.event_sink.file", - // TypedConfig: marshalAny(&envoy_extensions_eventsinks_file_v3.HealthCheckEventFileSink{ - // EventLogPath: "/tmp/healthchecks", - // }), - // }, - // }, - // AlwaysLogHealthCheckFailures: true, - // AlwaysLogHealthCheckSuccess: true, }} } diff --git a/config/envoyconfig/tracing.go b/config/envoyconfig/tracing.go index a47ea356a..fe9b73a98 100644 --- a/config/envoyconfig/tracing.go +++ b/config/envoyconfig/tracing.go @@ -15,13 +15,31 @@ import ( envoy_type_v3 "github.com/envoyproxy/go-control-plane/envoy/type/v3" "github.com/pomerium/pomerium/config" "github.com/pomerium/pomerium/config/envoyconfig/extensions" + "github.com/pomerium/pomerium/internal/telemetry/trace" "google.golang.org/protobuf/types/known/wrapperspb" ) +func isTracingEnabled(cfg *config.Options) bool { + if os.Getenv("OTEL_SDK_DISABLED") == "true" { + return false + } + switch cfg.TracingProvider { + case "none", "noop": // explicitly disabled from config + return false + case "": // unset + return trace.IsEnabledViaEnvironment() + default: // set to a non-empty value + return !trace.IsDisabledViaEnvironment() + } +} + func applyTracingConfig( mgr *envoy_extensions_filters_network_http_connection_manager.HttpConnectionManager, opts *config.Options, ) { + if !isTracingEnabled(opts) { + return + } mgr.HttpFilters = append([]*envoy_extensions_filters_network_http_connection_manager.HttpFilter{ tracingMetadataFilter(), }, mgr.HttpFilters...) diff --git a/internal/telemetry/trace/client.go b/internal/telemetry/trace/client.go index 5ab4510d5..0dcf332f9 100644 --- a/internal/telemetry/trace/client.go +++ b/internal/telemetry/trace/client.go @@ -225,3 +225,35 @@ func (n NoopClient) Stop(context.Context) error { func (n NoopClient) UploadTraces(context.Context, []*v1.ResourceSpans) error { return nil } + +func IsDisabledViaEnvironment() bool { + if os.Getenv("OTEL_SDK_DISABLED") == "true" { + return true + } + exporter, ok := os.LookupEnv("OTEL_TRACES_EXPORTER") + if !ok { + return false + } + switch strings.ToLower(strings.TrimSpace(exporter)) { + case "none, noop": + return true + default: + return false + } +} + +func IsEnabledViaEnvironment() bool { + if os.Getenv("OTEL_SDK_DISABLED") == "true" { + return false + } + exporter, ok := os.LookupEnv("OTEL_TRACES_EXPORTER") + if !ok { + return false + } + switch strings.ToLower(strings.TrimSpace(exporter)) { + case "none, noop", "": + return false + default: + return true + } +}