set default tracing sample rate to 1.0

This commit is contained in:
Joe Kralicky 2025-01-09 22:32:07 +00:00
parent 86bf8a1d5f
commit 61e56b6e42
No known key found for this signature in database
GPG key ID: 75C4875F34A9FB79
4 changed files with 18 additions and 10 deletions

View file

@ -56,8 +56,17 @@ func applyTracingConfig(
maxPathTagLength = max(64, uint32(num)) maxPathTagLength = max(64, uint32(num))
} }
} }
sampleRate := 1.0
if value, ok := os.LookupEnv("OTEL_TRACES_SAMPLER_ARG"); ok {
if rate, err := strconv.ParseFloat(value, 64); err == nil {
sampleRate = rate
}
}
if opts.TracingSampleRate != nil {
sampleRate = *opts.TracingSampleRate
}
mgr.Tracing = &envoy_extensions_filters_network_http_connection_manager.HttpConnectionManager_Tracing{ mgr.Tracing = &envoy_extensions_filters_network_http_connection_manager.HttpConnectionManager_Tracing{
RandomSampling: &envoy_type_v3.Percent{Value: opts.TracingSampleRate * 100}, RandomSampling: &envoy_type_v3.Percent{Value: max(0.0, min(1.0, sampleRate)) * 100},
Verbose: true, Verbose: true,
SpawnUpstreamSpan: wrapperspb.Bool(true), SpawnUpstreamSpan: wrapperspb.Bool(true),
Provider: &tracev3.Tracing_Http{ Provider: &tracev3.Tracing_Http{

View file

@ -210,10 +210,10 @@ type Options struct {
MetricsClientCA string `mapstructure:"metrics_client_ca" yaml:"metrics_client_ca,omitempty"` MetricsClientCA string `mapstructure:"metrics_client_ca" yaml:"metrics_client_ca,omitempty"`
MetricsClientCAFile string `mapstructure:"metrics_client_ca_file" yaml:"metrics_client_ca_file,omitempty"` MetricsClientCAFile string `mapstructure:"metrics_client_ca_file" yaml:"metrics_client_ca_file,omitempty"`
TracingSampleRate float64 `mapstructure:"tracing_sample_rate" yaml:"tracing_sample_rate,omitempty"` TracingSampleRate *float64 `mapstructure:"tracing_sample_rate" yaml:"tracing_sample_rate,omitempty"`
TracingProvider string `mapstructure:"tracing_provider" yaml:"tracing_provider,omitempty"` TracingProvider string `mapstructure:"tracing_provider" yaml:"tracing_provider,omitempty"`
TracingOTLPEndpoint string `mapstructure:"tracing_otlp_endpoint" yaml:"tracing_otlp_endpoint,omitempty"` TracingOTLPEndpoint string `mapstructure:"tracing_otlp_endpoint" yaml:"tracing_otlp_endpoint,omitempty"`
TracingOTLPProtocol string `mapstructure:"tracing_otlp_protocol" yaml:"tracing_otlp_protocol,omitempty"` TracingOTLPProtocol string `mapstructure:"tracing_otlp_protocol" yaml:"tracing_otlp_protocol,omitempty"`
// Deprecated: this field is ignored. // Deprecated: this field is ignored.
// Configure tracing using the OTLP options or environment variables. // Configure tracing using the OTLP options or environment variables.
@ -313,7 +313,6 @@ var defaultOptions = Options{
GRPCAddr: ":443", GRPCAddr: ":443",
GRPCClientTimeout: 10 * time.Second, // Try to withstand transient service failures for a single request GRPCClientTimeout: 10 * time.Second, // Try to withstand transient service failures for a single request
AuthenticateCallbackPath: "/oauth2/callback", AuthenticateCallbackPath: "/oauth2/callback",
TracingSampleRate: 0.0001,
AutocertOptions: AutocertOptions{ AutocertOptions: AutocertOptions{
Folder: dataDir(), Folder: dataDir(),
@ -1518,7 +1517,7 @@ func (o *Options) ApplySettings(ctx context.Context, certsIndex *cryptutil.Certi
set(&o.TracingProvider, settings.TracingProvider) set(&o.TracingProvider, settings.TracingProvider)
set(&o.TracingOTLPEndpoint, settings.TracingOtlpEndpoint) set(&o.TracingOTLPEndpoint, settings.TracingOtlpEndpoint)
set(&o.TracingOTLPProtocol, settings.TracingOtlpProtocol) set(&o.TracingOTLPProtocol, settings.TracingOtlpProtocol)
set(&o.TracingSampleRate, settings.TracingSampleRate) setOptional(&o.TracingSampleRate, settings.TracingSampleRate)
set(&o.TracingDatadogAddress, settings.TracingDatadogAddress) set(&o.TracingDatadogAddress, settings.TracingDatadogAddress)
set(&o.TracingJaegerCollectorEndpoint, settings.TracingJaegerCollectorEndpoint) set(&o.TracingJaegerCollectorEndpoint, settings.TracingJaegerCollectorEndpoint)
set(&o.TracingJaegerAgentEndpoint, settings.TracingJaegerAgentEndpoint) set(&o.TracingJaegerAgentEndpoint, settings.TracingJaegerAgentEndpoint)
@ -1608,7 +1607,7 @@ func (o *Options) ToProto() *config.Config {
settings.MetricsCertificate = toCertificateOrFromFile(o.MetricsCertificate, o.MetricsCertificateKey, o.MetricsCertificateFile, o.MetricsCertificateKeyFile) settings.MetricsCertificate = toCertificateOrFromFile(o.MetricsCertificate, o.MetricsCertificateKey, o.MetricsCertificateFile, o.MetricsCertificateKeyFile)
copySrcToOptionalDest(&settings.MetricsClientCa, valueOrFromFileBase64(o.MetricsClientCA, o.MetricsClientCAFile)) copySrcToOptionalDest(&settings.MetricsClientCa, valueOrFromFileBase64(o.MetricsClientCA, o.MetricsClientCAFile))
copySrcToOptionalDest(&settings.TracingProvider, &o.TracingProvider) copySrcToOptionalDest(&settings.TracingProvider, &o.TracingProvider)
copySrcToOptionalDest(&settings.TracingSampleRate, &o.TracingSampleRate) settings.TracingSampleRate = o.TracingSampleRate
copySrcToOptionalDest(&settings.TracingOtlpEndpoint, &o.TracingOTLPEndpoint) copySrcToOptionalDest(&settings.TracingOtlpEndpoint, &o.TracingOTLPEndpoint)
copySrcToOptionalDest(&settings.TracingOtlpProtocol, &o.TracingOTLPProtocol) copySrcToOptionalDest(&settings.TracingOtlpProtocol, &o.TracingOTLPProtocol)
copySrcToOptionalDest(&settings.TracingDatadogAddress, &o.TracingDatadogAddress) copySrcToOptionalDest(&settings.TracingDatadogAddress, &o.TracingDatadogAddress)

View file

@ -599,7 +599,6 @@ func (e *environment) Start() {
log.AccessLogFieldUserAgent, log.AccessLogFieldUserAgent,
log.AccessLogFieldClientCertificate, log.AccessLogFieldClientCertificate,
} }
cfg.Options.TracingSampleRate = 1.0
e.src = &configSource{cfg: cfg} e.src = &configSource{cfg: cfg}
e.AddTask(TaskFunc(func(ctx context.Context) error { e.AddTask(TaskFunc(func(ctx context.Context) error {

View file

@ -193,7 +193,8 @@ func (s *SamplingTestSuite) SetupTest() {
s.notSampled.Store(0) s.notSampled.Store(0)
s.env.Add(testenv.ModifierFunc(func(_ context.Context, cfg *config.Config) { s.env.Add(testenv.ModifierFunc(func(_ context.Context, cfg *config.Config) {
cfg.Options.TracingSampleRate = 0.5 half := 0.5
cfg.Options.TracingSampleRate = &half
})) }))
s.env.Add(scenarios.NewIDP([]*scenarios.User{ s.env.Add(scenarios.NewIDP([]*scenarios.User{
{ {