@@ -9,43 +9,21 @@ import (
9
9
"github.com/go-redis/redis/v8"
10
10
"github.com/go-redis/redis/v8/extra/redisotel"
11
11
"go.opentelemetry.io/otel"
12
- meterStdout "go.opentelemetry.io/otel/exporters/metric/stdout"
13
- traceStdout "go.opentelemetry.io/otel/exporters/trace/stdout"
12
+ "go.opentelemetry.io/otel/exporters/stdout"
14
13
"go.opentelemetry.io/otel/sdk/metric/controller/push"
14
+ "go.opentelemetry.io/otel/sdk/metric/processor/basic"
15
+ "go.opentelemetry.io/otel/sdk/metric/selector/simple"
15
16
sdktrace "go.opentelemetry.io/otel/sdk/trace"
16
17
)
17
18
18
19
func main () {
19
- <- time .After (1 * time .Second )
20
+ stop := runExporter ()
21
+ defer stop ()
20
22
21
23
rdb := redis .NewClient (& redis.Options {
22
24
Addr : ":6379" ,
23
25
})
24
26
25
- meterExporter , err := meterStdout .NewExportPipeline (meterStdout.Config {PrettyPrint : true },
26
- push .WithPeriod (1 * time .Second ))
27
- if err != nil {
28
- log .Fatal (err .Error ())
29
- } else {
30
- otel .SetMeterProvider (meterExporter .Provider ())
31
- }
32
-
33
- traceExporter , err := traceStdout .NewExporter (traceStdout.Options {
34
- PrettyPrint : true ,
35
- })
36
- if err != nil {
37
- log .Fatal (err .Error ())
38
- }
39
-
40
- if tp , err := sdktrace .NewProvider (
41
- sdktrace .WithSyncer (traceExporter ),
42
- sdktrace .WithConfig (sdktrace.Config {DefaultSampler : sdktrace .AlwaysSample ()}),
43
- ); err != nil {
44
- log .Fatal (err .Error ())
45
- } else {
46
- otel .SetTraceProvider (tp )
47
- }
48
-
49
27
rdb .AddHook (redisotel.TracingHook {})
50
28
51
29
ctx := context .Background ()
@@ -77,3 +55,27 @@ func main() {
77
55
<- time .After (5 * time .Second )
78
56
span .End ()
79
57
}
58
+
59
+ func runExporter () func () {
60
+ exporter , err := stdout .NewExporter (stdout .WithPrettyPrint ())
61
+ if err != nil {
62
+ log .Fatal (err .Error ())
63
+ }
64
+
65
+ tp := sdktrace .NewTracerProvider (
66
+ sdktrace .WithSyncer (exporter ),
67
+ sdktrace .WithConfig (sdktrace.Config {DefaultSampler : sdktrace .AlwaysSample ()}),
68
+ )
69
+ otel .SetTracerProvider (tp )
70
+
71
+ pusher := push .New (
72
+ basic .New (
73
+ simple .NewWithExactDistribution (),
74
+ exporter ,
75
+ ),
76
+ exporter ,
77
+ push .WithPeriod (1 * time .Second ),
78
+ )
79
+ pusher .Start ()
80
+ return pusher .Stop
81
+ }
0 commit comments