Skip to content

Commit f5553db

Browse files
authored
Enable trace export debug (#830)
1 parent 63b1f7d commit f5553db

File tree

5 files changed

+89
-9
lines changed

5 files changed

+89
-9
lines changed

pkg/export/otel/traces.go

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111

1212
expirable2 "github.com/hashicorp/golang-lru/v2/expirable"
1313
"go.uber.org/zap"
14+
"go.uber.org/zap/zapcore"
1415

1516
"go.opentelemetry.io/collector/component"
1617
"go.opentelemetry.io/collector/config/configgrpc"
@@ -216,7 +217,7 @@ func getTracesExporter(ctx context.Context, cfg otelcfg.TracesConfig, im imetric
216217
Headers: convertHeaders(opts.Headers),
217218
}
218219
slog.Debug("getTracesExporter: confighttp.ClientConfig created", "endpoint", config.ClientConfig.Endpoint)
219-
set := getTraceSettings(factory.Type())
220+
set := getTraceSettings(factory.Type(), cfg.SDKLogLevel)
220221
exp, err := factory.CreateTraces(ctx, set, config)
221222
if err != nil {
222223
slog.Error("can't create OTLP HTTP traces exporter", "error", err)
@@ -272,7 +273,7 @@ func getTracesExporter(ctx context.Context, cfg otelcfg.TracesConfig, im imetric
272273
},
273274
Headers: convertHeaders(opts.Headers),
274275
}
275-
set := getTraceSettings(factory.Type())
276+
set := getTraceSettings(factory.Type(), cfg.SDKLogLevel)
276277
exp, err := factory.CreateTraces(ctx, set, config)
277278
if err != nil {
278279
return nil, err
@@ -286,11 +287,34 @@ func getTracesExporter(ctx context.Context, cfg otelcfg.TracesConfig, im imetric
286287
}
287288
}
288289

289-
func getTraceSettings(dataTypeMetrics component.Type) exporter.Settings {
290+
func createZapLoggerDev(sdkLogLevel string) *zap.Logger {
291+
if sdkLogLevel == "" {
292+
return zap.NewNop()
293+
}
294+
295+
var level zapcore.Level
296+
if err := level.UnmarshalText([]byte(sdkLogLevel)); err != nil {
297+
slog.Error("unsupported trace exporter logger level", "error", err, "level", sdkLogLevel)
298+
return zap.NewNop()
299+
}
300+
301+
config := zap.NewDevelopmentConfig()
302+
config.Level = zap.NewAtomicLevelAt(level)
303+
304+
logger, err := config.Build()
305+
if err != nil {
306+
slog.Error("unable to create trace exporter logger", "error", err)
307+
return zap.NewNop()
308+
}
309+
310+
return logger
311+
}
312+
313+
func getTraceSettings(dataTypeMetrics component.Type, sdkLogLevel string) exporter.Settings {
290314
traceProvider := tracenoop.NewTracerProvider()
291315
meterProvider := metric.NewMeterProvider()
292316
telemetrySettings := component.TelemetrySettings{
293-
Logger: zap.NewNop(),
317+
Logger: createZapLoggerDev(sdkLogLevel),
294318
MeterProvider: meterProvider,
295319
TracerProvider: traceProvider,
296320
Resource: pcommon.NewResource(),
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
routes:
2+
patterns:
3+
- /basic/:rnd
4+
unmatched: path
5+
ignored_patterns:
6+
- /metrics
7+
ignore_mode: traces
8+
otel_metrics_export:
9+
endpoint: http://otelcol:4318
10+
otel_traces_export:
11+
endpoint: http://otelcol:4318
12+
otel_sdk_log_level: debug
13+
attributes:
14+
kubernetes:
15+
cluster_name: obi-k8s-test-cluster
16+
resource_labels:
17+
deployment.environment: ["deployment.environment"]
18+
select:
19+
"*":
20+
include: ["*"]

test/integration/configs/obi-config.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,12 @@ otel_metrics_export:
99
endpoint: http://otelcol:4318
1010
otel_traces_export:
1111
endpoint: http://jaeger:4318
12+
otel_sdk_log_level: debug
1213
attributes:
1314
kubernetes:
1415
cluster_name: obi-k8s-test-cluster
1516
resource_labels:
1617
deployment.environment: ["deployment.environment"]
1718
select:
1819
"*":
19-
include: ["*"]
20+
include: ["*"]
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
receivers:
2+
otlp:
3+
protocols:
4+
grpc:
5+
endpoint: 0.0.0.0:4317
6+
max_recv_msg_size_mib: 100
7+
http:
8+
endpoint: 0.0.0.0:4318
9+
cors:
10+
allowed_origins:
11+
- "http://*"
12+
- "https://*"
13+
exporters:
14+
prometheus:
15+
endpoint: "otelcol:9464"
16+
resource_to_telemetry_conversion:
17+
enabled: true
18+
enable_open_metrics: true
19+
otlphttp/traces:
20+
endpoint: http://jaeger:4318
21+
tls:
22+
insecure: true
23+
debug/traces:
24+
verbosity: detailed
25+
service:
26+
pipelines:
27+
metrics:
28+
receivers: [otlp]
29+
exporters: [prometheus]
30+
traces:
31+
receivers: [otlp]
32+
exporters: [otlphttp/traces, debug/traces]
33+
# telemetry:
34+
# logs:
35+
# level: debug

test/integration/docker-compose-python-aws.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ services:
3434
network_mode: "service:testserver"
3535
pid: "service:testserver"
3636
environment:
37-
OTEL_EBPF_CONFIG_PATH: "/configs/obi-config.yml"
37+
OTEL_EBPF_CONFIG_PATH: "/configs/obi-config-debug.yml"
3838
GOCOVERDIR: "/coverage"
3939
OTEL_EBPF_TRACE_PRINTER: "text"
4040
OTEL_EBPF_OPEN_PORT: "${OTEL_EBPF_OPEN_PORT}"
@@ -65,7 +65,7 @@ services:
6565
limits:
6666
memory: 125M
6767
restart: unless-stopped
68-
command: ["--config=/etc/otelcol-config/otelcol-config.yml"]
68+
command: ["--config=/etc/otelcol-config/otelcol-config-debug.yml"]
6969
volumes:
7070
- ./configs/:/etc/otelcol-config
7171
ports:
@@ -94,8 +94,8 @@ services:
9494
image: jaegertracing/all-in-one:1.60@sha256:4fd2d70fa347d6a47e79fcb06b1c177e6079f92cba88b083153d56263082135e
9595
ports:
9696
- "16686:16686" # Query frontend
97-
- "4317" # OTEL GRPC traces collector
98-
- "4318" # OTEL HTTP traces collector
97+
- "14317:4317" # OTEL GRPC traces collector
98+
- "14318:4318" # OTEL HTTP traces collector
9999
environment:
100100
- COLLECTOR_OTLP_ENABLED=true
101101
- LOG_LEVEL=debug

0 commit comments

Comments
 (0)