diff --git a/core/trace/agent.go b/core/trace/agent.go index 6fbe2e78..053f9e3e 100644 --- a/core/trace/agent.go +++ b/core/trace/agent.go @@ -57,7 +57,11 @@ func createExporter(c Config) (sdktrace.SpanExporter, error) { // Just support jaeger and zipkin now, more for later switch c.Batcher { case kindJaeger: - return jaeger.New(jaeger.WithCollectorEndpoint(jaeger.WithEndpoint(c.Endpoint))) + if c.AgentHost != "" && c.AgentPort != "" { + return jaeger.New(jaeger.WithAgentEndpoint(jaeger.WithAgentHost(c.AgentHost), jaeger.WithAgentPort(c.AgentPort))) + } else { + return jaeger.New(jaeger.WithCollectorEndpoint(jaeger.WithEndpoint(c.Endpoint))) + } case kindZipkin: return zipkin.New(c.Endpoint) case kindOtlpGrpc: diff --git a/core/trace/config.go b/core/trace/config.go index 83c62c3c..5346e469 100644 --- a/core/trace/config.go +++ b/core/trace/config.go @@ -5,8 +5,10 @@ const TraceName = "go-zero" // A Config is an opentelemetry config. type Config struct { - Name string `json:",optional"` - Endpoint string `json:",optional"` - Sampler float64 `json:",default=1.0"` - Batcher string `json:",default=jaeger,options=jaeger|zipkin|otlpgrpc|otlphttp"` + Name string `json:",optional"` + AgentHost string `json:",optional"` + AgentPort string `json:",optional"` + Endpoint string `json:",optional"` + Sampler float64 `json:",default=1.0"` + Batcher string `json:",default=jaeger,options=jaeger|zipkin|otlpgrpc|otlphttp"` }