@@ -9,43 +9,21 @@ import (
99 "github.com/go-redis/redis/v8"
1010 "github.com/go-redis/redis/v8/extra/redisotel"
1111 "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"
1413 "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"
1516 sdktrace "go.opentelemetry.io/otel/sdk/trace"
1617)
1718
1819func main () {
19- <- time .After (1 * time .Second )
20+ stop := runExporter ()
21+ defer stop ()
2022
2123 rdb := redis .NewClient (& redis.Options {
2224 Addr : ":6379" ,
2325 })
2426
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-
4927 rdb .AddHook (redisotel.TracingHook {})
5028
5129 ctx := context .Background ()
@@ -77,3 +55,27 @@ func main() {
7755 <- time .After (5 * time .Second )
7856 span .End ()
7957}
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