Skip to content

Commit 1883d07

Browse files
committed
beholder: set compression config option explicitly to gzip
1 parent 25c57f2 commit 1883d07

File tree

5 files changed

+47
-38
lines changed

5 files changed

+47
-38
lines changed

pkg/beholder/client.go

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import (
2828
"github.com/smartcontractkit/chainlink-common/pkg/chipingress"
2929
)
3030

31-
const grpcCompressorGzip = "gzip"
31+
const defaultGRPCCompressor = "gzip"
3232

3333
type Emitter interface {
3434
// Sends message with bytes and attributes to OTel Collector
@@ -364,8 +364,12 @@ func newTracerProvider(config Config, resource *sdkresource.Resource, auth Auth,
364364
// No auth
365365
default:
366366
}
367-
if !config.TraceCompressionDisabled {
368-
exporterOpts = append(exporterOpts, otlptracegrpc.WithCompressor(grpcCompressorGzip))
367+
switch compressor := config.TraceCompressor; compressor {
368+
case "disabled":
369+
case "":
370+
exporterOpts = append(exporterOpts, otlptracegrpc.WithCompressor(defaultGRPCCompressor))
371+
default:
372+
exporterOpts = append(exporterOpts, otlptracegrpc.WithCompressor(compressor))
369373
}
370374
if config.TraceRetryConfig != nil {
371375
// NOTE: By default, the retry is enabled in the OTel SDK
@@ -406,8 +410,12 @@ func newMeterProvider(cfg Config, resource *sdkresource.Resource, auth Auth, cre
406410
otlpmetricgrpc.WithTLSCredentials(creds),
407411
otlpmetricgrpc.WithEndpoint(cfg.OtelExporterGRPCEndpoint),
408412
}
409-
if !cfg.MetricCompressionDisabled {
410-
opts = append(opts, otlpmetricgrpc.WithCompressor(grpcCompressorGzip))
413+
switch compressor := cfg.MetricCompressor; compressor {
414+
case "disabled":
415+
case "":
416+
opts = append(opts, otlpmetricgrpc.WithCompressor(defaultGRPCCompressor))
417+
default:
418+
opts = append(opts, otlpmetricgrpc.WithCompressor(compressor))
411419
}
412420

413421
switch {
@@ -459,8 +467,12 @@ func newLoggerOpts(cfg Config, auth Auth, creds credentials.TransportCredentials
459467
otlploggrpc.WithEndpoint(cfg.OtelExporterGRPCEndpoint),
460468
otlploggrpc.WithDialOption(grpc.WithStatsHandler(otelgrpc.NewClientHandler(otelOpts...))),
461469
}
462-
if !cfg.LogCompressionDisabled {
463-
opts = append(opts, otlploggrpc.WithCompressor(grpcCompressorGzip))
470+
switch compressor := cfg.LogCompressor; compressor {
471+
case "disabled":
472+
case "":
473+
opts = append(opts, otlploggrpc.WithCompressor(defaultGRPCCompressor))
474+
default:
475+
opts = append(opts, otlploggrpc.WithCompressor(compressor))
464476
}
465477
// Log exporter auth
466478
switch {

pkg/beholder/config.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,15 @@ type Config struct {
2929
TraceBatchTimeout time.Duration
3030
TraceSpanExporter trace.SpanExporter // optional additional exporter
3131
TraceRetryConfig *RetryConfig
32-
// TraceCompressionDisabled disables gRPC compression for traces (compression uses "gzip" by default).
33-
TraceCompressionDisabled bool
32+
// TraceCompressor sets the gRPC compressor for traces. Valid values: "gzip" (default), "disabled".
33+
TraceCompressor string
3434

3535
// OTel Metric
3636
MetricReaderInterval time.Duration
3737
MetricRetryConfig *RetryConfig
3838
MetricViews []metric.View
39-
// MetricCompressionDisabled disables gRPC compression for metrics (compression uses "gzip" by default).
40-
MetricCompressionDisabled bool
39+
// MetricCompressor sets the gRPC compressor for metrics. Valid values: "gzip" (default), "disabled".
40+
MetricCompressor string
4141

4242
// Custom Events via Chip Ingress Emitter
4343
ChipIngressEmitterEnabled bool
@@ -54,8 +54,8 @@ type Config struct {
5454
LogRetryConfig *RetryConfig
5555
LogStreamingEnabled bool // Enable logs streaming to the OTel log exporter
5656
LogLevel zapcore.Level // Log level for telemetry streaming
57-
// LogCompressionDisabled disables gRPC compression for logs (compression uses "gzip" by default).
58-
LogCompressionDisabled bool
57+
// LogCompressor sets the gRPC compressor for logs. Valid values: "gzip" (default), "disabled".
58+
LogCompressor string
5959

6060
// Auth
6161
// AuthHeaders serves two purposes:
@@ -116,10 +116,12 @@ func DefaultConfig() Config {
116116
// Trace
117117
TraceSampleRatio: 1,
118118
TraceBatchTimeout: 1 * time.Second,
119+
TraceCompressor: "gzip",
119120
// OTel trace exporter retry config
120121
TraceRetryConfig: defaultRetryConfig.Copy(),
121122
// Metric
122123
MetricReaderInterval: 1 * time.Second,
124+
MetricCompressor: "gzip",
123125
// OTel metric exporter retry config
124126
MetricRetryConfig: defaultRetryConfig.Copy(),
125127
// Log
@@ -130,6 +132,7 @@ func DefaultConfig() Config {
130132
LogBatchProcessor: true,
131133
LogStreamingEnabled: true, // Enable logs streaming by default
132134
LogLevel: zapcore.InfoLevel,
135+
LogCompressor: "gzip",
133136
// Auth (defaults to static auth mode with TTL=0)
134137
AuthHeadersTTL: 0,
135138
}

pkg/beholder/config_test.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,12 @@ func ExampleConfig() {
3636
// Trace
3737
TraceSampleRatio: 1,
3838
TraceBatchTimeout: 1 * time.Second,
39+
TraceCompressor: "gzip",
3940
// OTel trace exporter retry config
4041
TraceRetryConfig: nil,
4142
// Metric
4243
MetricReaderInterval: 1 * time.Second,
44+
MetricCompressor: "gzip",
4345
// OTel metric exporter retry config
4446
MetricRetryConfig: nil,
4547
// Log
@@ -50,6 +52,7 @@ func ExampleConfig() {
5052
LogBatchProcessor: true,
5153
LogStreamingEnabled: false, // Disable streaming logs by default
5254
LogLevel: zapcore.InfoLevel, // Default log level
55+
LogCompressor: "gzip",
5356
// Auth
5457
AuthPublicKeyHex: "",
5558
AuthHeaders: map[string]string{},
@@ -64,6 +67,6 @@ func ExampleConfig() {
6467
}
6568
fmt.Printf("%+v\n", *config.LogRetryConfig)
6669
// Output:
67-
// {InsecureConnection:true CACertFile: OtelExporterGRPCEndpoint:localhost:4317 OtelExporterHTTPEndpoint:localhost:4318 ResourceAttributes:[{Key:package_name Value:{vtype:4 numeric:0 stringly:beholder slice:<nil>}} {Key:sender Value:{vtype:4 numeric:0 stringly:beholderclient slice:<nil>}}] EmitterExportTimeout:1s EmitterExportInterval:1s EmitterExportMaxBatchSize:512 EmitterMaxQueueSize:2048 EmitterBatchProcessor:true TraceSampleRatio:1 TraceBatchTimeout:1s TraceSpanExporter:<nil> TraceRetryConfig:<nil> TraceCompressionDisabled:false MetricReaderInterval:1s MetricRetryConfig:<nil> MetricViews:[] MetricCompressionDisabled:false ChipIngressEmitterEnabled:false ChipIngressEmitterGRPCEndpoint: ChipIngressInsecureConnection:false LogExportTimeout:1s LogExportInterval:1s LogExportMaxBatchSize:512 LogMaxQueueSize:2048 LogBatchProcessor:true LogRetryConfig:<nil> LogStreamingEnabled:false LogLevel:info LogCompressionDisabled:false AuthHeaders:map[] AuthHeadersTTL:0s AuthKeySigner:<nil> AuthPublicKeyHex:}
70+
// {InsecureConnection:true CACertFile: OtelExporterGRPCEndpoint:localhost:4317 OtelExporterHTTPEndpoint:localhost:4318 ResourceAttributes:[{Key:package_name Value:{vtype:4 numeric:0 stringly:beholder slice:<nil>}} {Key:sender Value:{vtype:4 numeric:0 stringly:beholderclient slice:<nil>}}] EmitterExportTimeout:1s EmitterExportInterval:1s EmitterExportMaxBatchSize:512 EmitterMaxQueueSize:2048 EmitterBatchProcessor:true TraceSampleRatio:1 TraceBatchTimeout:1s TraceSpanExporter:<nil> TraceRetryConfig:<nil> TraceCompressor:gzip MetricReaderInterval:1s MetricRetryConfig:<nil> MetricViews:[] MetricCompressor:gzip ChipIngressEmitterEnabled:false ChipIngressEmitterGRPCEndpoint: ChipIngressInsecureConnection:false LogExportTimeout:1s LogExportInterval:1s LogExportMaxBatchSize:512 LogMaxQueueSize:2048 LogBatchProcessor:true LogRetryConfig:<nil> LogStreamingEnabled:false LogLevel:info LogCompressor:gzip AuthHeaders:map[] AuthHeadersTTL:0s AuthKeySigner:<nil> AuthPublicKeyHex:}
6871
// {InitialInterval:5s MaxInterval:30s MaxElapsedTime:1m0s}
6972
}

pkg/loop/config.go

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,9 @@ const (
7070
envTelemetryLogExportMaxBatchSize = "CL_TELEMETRY_LOG_EXPORT_MAX_BATCH_SIZE"
7171
envTelemetryLogExportInterval = "CL_TELEMETRY_LOG_EXPORT_INTERVAL"
7272
envTelemetryLogMaxQueueSize = "CL_TELEMETRY_LOG_MAX_QUEUE_SIZE"
73-
envTelemetryTraceCompressionDisabled = "CL_TELEMETRY_TRACE_COMPRESSION_DISABLED"
74-
envTelemetryMetricCompressionDisabled = "CL_TELEMETRY_METRIC_COMPRESSION_DISABLED"
75-
envTelemetryLogCompressionDisabled = "CL_TELEMETRY_LOG_COMPRESSION_DISABLED"
73+
envTelemetryTraceCompressor = "CL_TELEMETRY_TRACE_COMPRESSOR"
74+
envTelemetryMetricCompressor = "CL_TELEMETRY_METRIC_COMPRESSOR"
75+
envTelemetryLogCompressor = "CL_TELEMETRY_LOG_COMPRESSOR"
7676

7777
envChipIngressEndpoint = "CL_CHIP_INGRESS_ENDPOINT"
7878
envChipIngressInsecureConnection = "CL_CHIP_INGRESS_INSECURE_CONNECTION"
@@ -136,9 +136,9 @@ type EnvConfig struct {
136136
TelemetryLogExportMaxBatchSize int
137137
TelemetryLogExportInterval time.Duration
138138
TelemetryLogMaxQueueSize int
139-
TelemetryTraceCompressionDisabled bool
140-
TelemetryMetricCompressionDisabled bool
141-
TelemetryLogCompressionDisabled bool
139+
TelemetryTraceCompressor string
140+
TelemetryMetricCompressor string
141+
TelemetryLogCompressor string
142142

143143
ChipIngressEndpoint string
144144
ChipIngressInsecureConnection bool
@@ -215,9 +215,9 @@ func (e *EnvConfig) AsCmdEnv() (env []string) {
215215
add(envTelemetryLogExportMaxBatchSize, strconv.Itoa(e.TelemetryLogExportMaxBatchSize))
216216
add(envTelemetryLogExportInterval, e.TelemetryLogExportInterval.String())
217217
add(envTelemetryLogMaxQueueSize, strconv.Itoa(e.TelemetryLogMaxQueueSize))
218-
add(envTelemetryTraceCompressionDisabled, strconv.FormatBool(e.TelemetryTraceCompressionDisabled))
219-
add(envTelemetryMetricCompressionDisabled, strconv.FormatBool(e.TelemetryMetricCompressionDisabled))
220-
add(envTelemetryLogCompressionDisabled, strconv.FormatBool(e.TelemetryLogCompressionDisabled))
218+
add(envTelemetryTraceCompressor, e.TelemetryTraceCompressor)
219+
add(envTelemetryMetricCompressor, e.TelemetryMetricCompressor)
220+
add(envTelemetryLogCompressor, e.TelemetryLogCompressor)
221221

222222
add(envChipIngressEndpoint, e.ChipIngressEndpoint)
223223
add(envChipIngressInsecureConnection, strconv.FormatBool(e.ChipIngressInsecureConnection))
@@ -415,18 +415,9 @@ func (e *EnvConfig) parse() error {
415415
if err != nil {
416416
return fmt.Errorf("failed to parse %s: %w", envTelemetryLogMaxQueueSize, err)
417417
}
418-
e.TelemetryTraceCompressionDisabled, err = getBool(envTelemetryTraceCompressionDisabled)
419-
if err != nil {
420-
return fmt.Errorf("failed to parse %s: %w", envTelemetryTraceCompressionDisabled, err)
421-
}
422-
e.TelemetryMetricCompressionDisabled, err = getBool(envTelemetryMetricCompressionDisabled)
423-
if err != nil {
424-
return fmt.Errorf("failed to parse %s: %w", envTelemetryMetricCompressionDisabled, err)
425-
}
426-
e.TelemetryLogCompressionDisabled, err = getBool(envTelemetryLogCompressionDisabled)
427-
if err != nil {
428-
return fmt.Errorf("failed to parse %s: %w", envTelemetryLogCompressionDisabled, err)
429-
}
418+
e.TelemetryTraceCompressor = os.Getenv(envTelemetryTraceCompressor)
419+
e.TelemetryMetricCompressor = os.Getenv(envTelemetryMetricCompressor)
420+
e.TelemetryLogCompressor = os.Getenv(envTelemetryLogCompressor)
430421
// Optional
431422
e.ChipIngressEndpoint = os.Getenv(envChipIngressEndpoint)
432423
e.ChipIngressInsecureConnection, err = getBool(envChipIngressInsecureConnection)

pkg/loop/server.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ func (s *Server) start(opts ...ServerOpt) error {
155155
OtelExporterGRPCEndpoint: s.EnvConfig.TelemetryEndpoint,
156156
ResourceAttributes: append(attributes, s.EnvConfig.TelemetryAttributes.AsStringAttributes()...),
157157
TraceSampleRatio: s.EnvConfig.TelemetryTraceSampleRatio,
158-
TraceCompressionDisabled: s.EnvConfig.TelemetryTraceCompressionDisabled,
158+
TraceCompressor: s.EnvConfig.TelemetryTraceCompressor,
159159
EmitterBatchProcessor: s.EnvConfig.TelemetryEmitterBatchProcessor,
160160
EmitterExportTimeout: s.EnvConfig.TelemetryEmitterExportTimeout,
161161
EmitterExportInterval: s.EnvConfig.TelemetryEmitterExportInterval,
@@ -168,11 +168,11 @@ func (s *Server) start(opts ...ServerOpt) error {
168168
LogExportMaxBatchSize: s.EnvConfig.TelemetryLogExportMaxBatchSize,
169169
LogExportInterval: s.EnvConfig.TelemetryLogExportInterval,
170170
LogMaxQueueSize: s.EnvConfig.TelemetryLogMaxQueueSize,
171-
LogCompressionDisabled: s.EnvConfig.TelemetryLogCompressionDisabled,
171+
LogCompressor: s.EnvConfig.TelemetryLogCompressor,
172172
ChipIngressEmitterEnabled: s.EnvConfig.ChipIngressEndpoint != "",
173173
ChipIngressEmitterGRPCEndpoint: s.EnvConfig.ChipIngressEndpoint,
174174
ChipIngressInsecureConnection: s.EnvConfig.ChipIngressInsecureConnection,
175-
MetricCompressionDisabled: s.EnvConfig.TelemetryMetricCompressionDisabled,
175+
MetricCompressor: s.EnvConfig.TelemetryMetricCompressor,
176176
}
177177

178178
// Configure beholder auth - the client will determine rotating vs static mode

0 commit comments

Comments
 (0)