feat: add otlptracegrpc otlptracehttp headers support for Uptrace (#3219)
Signed-off-by: Toby Yan <me@tobyan.com> Co-authored-by: cong <zhangcong1992@gmail.com>
This commit is contained in:
@@ -71,17 +71,29 @@ func createExporter(c Config) (sdktrace.SpanExporter, error) {
|
|||||||
// endpoint can not reach.
|
// endpoint can not reach.
|
||||||
// If the connection not dial success, the global otel ErrorHandler will catch error
|
// If the connection not dial success, the global otel ErrorHandler will catch error
|
||||||
// when reporting data like other exporters.
|
// when reporting data like other exporters.
|
||||||
return otlptracegrpc.New(
|
opts := []otlptracegrpc.Option{
|
||||||
context.Background(),
|
|
||||||
otlptracegrpc.WithInsecure(),
|
otlptracegrpc.WithInsecure(),
|
||||||
otlptracegrpc.WithEndpoint(c.Endpoint),
|
otlptracegrpc.WithEndpoint(c.Endpoint),
|
||||||
|
}
|
||||||
|
if len(c.OtlpHeaders) > 0 {
|
||||||
|
opts = append(opts, otlptracegrpc.WithHeaders(c.OtlpHeaders))
|
||||||
|
}
|
||||||
|
return otlptracegrpc.New(
|
||||||
|
context.Background(),
|
||||||
|
opts...,
|
||||||
)
|
)
|
||||||
case kindOtlpHttp:
|
case kindOtlpHttp:
|
||||||
// Not support flexible configuration now.
|
// Not support flexible configuration now.
|
||||||
return otlptracehttp.New(
|
opts := []otlptracehttp.Option{
|
||||||
context.Background(),
|
|
||||||
otlptracehttp.WithInsecure(),
|
otlptracehttp.WithInsecure(),
|
||||||
otlptracehttp.WithEndpoint(c.Endpoint),
|
otlptracehttp.WithEndpoint(c.Endpoint),
|
||||||
|
}
|
||||||
|
if len(c.OtlpHeaders) > 0 {
|
||||||
|
opts = append(opts, otlptracehttp.WithHeaders(c.OtlpHeaders))
|
||||||
|
}
|
||||||
|
return otlptracehttp.New(
|
||||||
|
context.Background(),
|
||||||
|
opts...,
|
||||||
)
|
)
|
||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf("unknown exporter: %s", c.Batcher)
|
return nil, fmt.Errorf("unknown exporter: %s", c.Batcher)
|
||||||
|
|||||||
@@ -36,14 +36,20 @@ func TestStartAgent(t *testing.T) {
|
|||||||
Batcher: "otlp",
|
Batcher: "otlp",
|
||||||
}
|
}
|
||||||
c5 := Config{
|
c5 := Config{
|
||||||
Name: "grpc",
|
Name: "otlpgrpc",
|
||||||
Endpoint: endpoint3,
|
Endpoint: endpoint3,
|
||||||
Batcher: kindOtlpGrpc,
|
Batcher: kindOtlpGrpc,
|
||||||
|
OtlpHeaders: map[string]string{
|
||||||
|
"uptrace-dsn": "http://project2_secret_token@localhost:14317/2",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
c6 := Config{
|
c6 := Config{
|
||||||
Name: "otlphttp",
|
Name: "otlphttp",
|
||||||
Endpoint: endpoint4,
|
Endpoint: endpoint4,
|
||||||
Batcher: kindOtlpHttp,
|
Batcher: kindOtlpHttp,
|
||||||
|
OtlpHeaders: map[string]string{
|
||||||
|
"uptrace-dsn": "http://project2_secret_token@localhost:14318/2",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
c7 := Config{
|
c7 := Config{
|
||||||
Name: "UDP",
|
Name: "UDP",
|
||||||
|
|||||||
@@ -5,8 +5,9 @@ const TraceName = "go-zero"
|
|||||||
|
|
||||||
// A Config is an opentelemetry config.
|
// A Config is an opentelemetry config.
|
||||||
type Config struct {
|
type Config struct {
|
||||||
Name string `json:",optional"`
|
Name string `json:",optional"`
|
||||||
Endpoint string `json:",optional"`
|
Endpoint string `json:",optional"`
|
||||||
Sampler float64 `json:",default=1.0"`
|
Sampler float64 `json:",default=1.0"`
|
||||||
Batcher string `json:",default=jaeger,options=jaeger|zipkin|otlpgrpc|otlphttp"`
|
Batcher string `json:",default=jaeger,options=jaeger|zipkin|otlpgrpc|otlphttp"`
|
||||||
|
OtlpHeaders map[string]string `json:",optional"` // uptrace-dsn: 'http://project2_secret_token@localhost:14317/2'
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user