@@ -14,7 +14,10 @@ import (
14
14
"path/filepath"
15
15
"syscall"
16
16
17
+ semconv "go.opentelemetry.io/otel/semconv/v1.26.0"
18
+
17
19
"go.opentelemetry.io/auto"
20
+ "go.opentelemetry.io/auto/export/otelsdk"
18
21
"go.opentelemetry.io/auto/internal/pkg/process"
19
22
)
20
23
@@ -106,9 +109,22 @@ func main() {
106
109
"version" , newVersion (),
107
110
)
108
111
112
+ v := semconv .TelemetryDistroVersionKey .String (auto .Version ())
113
+ h , err := otelsdk .New (
114
+ ctx ,
115
+ otelsdk .WithEnv (),
116
+ otelsdk .WithLogger (logger ),
117
+ otelsdk .WithResourceAttributes (v ),
118
+ )
119
+ if err != nil {
120
+ logger .Error ("failed to create OTel SDK handler" , "error" , err )
121
+ return
122
+ }
123
+
109
124
instOptions := []auto.InstrumentationOption {
110
125
auto .WithEnv (),
111
126
auto .WithLogger (logger ),
127
+ auto .WithHandler (h ),
112
128
}
113
129
if globalImpl {
114
130
instOptions = append (instOptions , auto .WithGlobal ())
@@ -131,4 +147,14 @@ func main() {
131
147
if err = inst .Run (ctx ); err != nil && ! errors .Is (err , process .ErrInterrupted ) {
132
148
logger .Error ("instrumentation crashed" , "error" , err )
133
149
}
150
+
151
+ logger .Info ("shutting down" )
152
+
153
+ ctx , cancel = signal .NotifyContext (context .Background (), os .Interrupt , syscall .SIGTERM )
154
+ defer cancel ()
155
+
156
+ err = h .Shutdown (ctx )
157
+ if err != nil {
158
+ logger .Error ("failed to flush handler" , "error" , err )
159
+ }
134
160
}
0 commit comments