Browse Source

Support for resource injection (#3383)

Co-authored-by: Kevin Wan <wanjunfeng@gmail.com>
唐小鸭 1 year ago
parent
commit
e20ccdd011
2 changed files with 13 additions and 1 deletions
  1. 3 1
      core/trace/agent.go
  2. 10 0
      core/trace/resource.go

+ 3 - 1
core/trace/agent.go

@@ -113,11 +113,13 @@ func createExporter(c Config) (sdktrace.SpanExporter, error) {
 }
 
 func startAgent(c Config) error {
+	AddResources(semconv.ServiceNameKey.String(c.Name))
+
 	opts := []sdktrace.TracerProviderOption{
 		// Set the sampling rate based on the parent span to 100%
 		sdktrace.WithSampler(sdktrace.ParentBased(sdktrace.TraceIDRatioBased(c.Sampler))),
 		// Record information about this application in a Resource.
-		sdktrace.WithResource(resource.NewSchemaless(semconv.ServiceNameKey.String(c.Name))),
+		sdktrace.WithResource(resource.NewSchemaless(attrResources...)),
 	}
 
 	if len(c.Endpoint) > 0 {

+ 10 - 0
core/trace/resource.go

@@ -0,0 +1,10 @@
+package trace
+
+import "go.opentelemetry.io/otel/attribute"
+
+var attrResources = make([]attribute.KeyValue, 0)
+
+// AddResources add more resources in addition to configured trace name.
+func AddResources(attrs ...attribute.KeyValue) {
+	attrResources = append(attrResources, attrs...)
+}