1
+ // Copyright The OpenTelemetry Authors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
1
4
package detect
2
5
3
6
import (
@@ -7,6 +10,7 @@ import (
7
10
"sync"
8
11
9
12
"go.opentelemetry.io/otel"
13
+ "go.opentelemetry.io/otel/sdk"
10
14
"go.opentelemetry.io/otel/sdk/resource"
11
15
semconv "go.opentelemetry.io/otel/semconv/v1.26.0"
12
16
)
@@ -23,7 +27,7 @@ func Resource() *resource.Resource {
23
27
res , err := resource .New (context .Background (),
24
28
resource .WithDetectors (serviceNameDetector {}),
25
29
resource .WithFromEnv (),
26
- resource .WithTelemetrySDK ( ),
30
+ resource .WithDetectors ( telemetrySDK {} ),
27
31
)
28
32
if err != nil {
29
33
otel .Handle (err )
@@ -42,7 +46,15 @@ func OverrideResource(res *resource.Resource) {
42
46
})
43
47
}
44
48
45
- type serviceNameDetector struct {}
49
+ type (
50
+ telemetrySDK struct {}
51
+ serviceNameDetector struct {}
52
+ )
53
+
54
+ var (
55
+ _ resource.Detector = telemetrySDK {}
56
+ _ resource.Detector = serviceNameDetector {}
57
+ )
46
58
47
59
func (serviceNameDetector ) Detect (ctx context.Context ) (* resource.Resource , error ) {
48
60
return resource .StringDetector (
@@ -56,3 +68,13 @@ func (serviceNameDetector) Detect(ctx context.Context) (*resource.Resource, erro
56
68
},
57
69
).Detect (ctx )
58
70
}
71
+
72
+ // Detect returns a *Resource that describes the OpenTelemetry SDK used.
73
+ func (telemetrySDK ) Detect (context.Context ) (* resource.Resource , error ) {
74
+ return resource .NewWithAttributes (
75
+ semconv .SchemaURL ,
76
+ semconv .TelemetrySDKName ("opentelemetry" ),
77
+ semconv .TelemetrySDKLanguageGo ,
78
+ semconv .TelemetrySDKVersion (sdk .Version ()),
79
+ ), nil
80
+ }
0 commit comments