-
Notifications
You must be signed in to change notification settings - Fork 80
/
exporter.go
78 lines (63 loc) · 2.45 KB
/
exporter.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package tracing
import (
"context"
"errors"
"go.opentelemetry.io/otel/exporters/otlp/otlptrace"
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp"
"go.opentelemetry.io/otel/exporters/stdout/stdouttrace"
"go.opentelemetry.io/otel/exporters/zipkin"
traceSdk "go.opentelemetry.io/otel/sdk/trace"
)
// NewExporter 创建一个导出器,支持:zipkin、otlp-http、otlp-grpc
func NewExporter(exporterName, endpoint string, insecure bool) (traceSdk.SpanExporter, error) {
ctx := context.Background()
switch exporterName {
case "zipkin":
return NewZipkinExporter(ctx, endpoint)
case "jaeger":
return nil, errors.New("jaeger exporter is no longer supported, please use otlp-http or otlp-grpc replace it")
case "otlp-http":
return NewOtlpHttpExporter(ctx, endpoint, insecure)
case "otlp-grpc":
return NewOtlpGrpcExporter(ctx, endpoint, insecure)
default:
fallthrough
case "stdout":
return stdouttrace.New()
}
}
// NewZipkinExporter 创建一个zipkin导出器,默认对端地址:http://localhost:9411/api/v2/spans
func NewZipkinExporter(_ context.Context, endpoint string) (traceSdk.SpanExporter, error) {
return zipkin.New(endpoint)
}
//// NewJaegerExporter 创建一个jaeger导出器,默认对端地址:http://localhost:14268/api/traces
//func NewJaegerExporter(_ context.Context, endpoint string) (traceSdk.SpanExporter, error) {
// return jaeger.New(jaeger.WithCollectorEndpoint(jaeger.WithEndpoint(endpoint)))
//}
// NewOtlpHttpExporter 创建OTLP/HTTP导出器,默认端口:4318
func NewOtlpHttpExporter(ctx context.Context, endpoint string, insecure bool, options ...otlptracehttp.Option) (traceSdk.SpanExporter, error) {
var opts []otlptracehttp.Option
opts = append(opts, otlptracehttp.WithEndpoint(endpoint))
if insecure {
opts = append(opts, otlptracehttp.WithInsecure())
}
opts = append(opts, options...)
return otlptrace.New(
ctx,
otlptracehttp.NewClient(opts...),
)
}
// NewOtlpGrpcExporter 创建OTLP/gRPC导出器,默认端口:4317
func NewOtlpGrpcExporter(ctx context.Context, endpoint string, insecure bool, options ...otlptracegrpc.Option) (traceSdk.SpanExporter, error) {
var opts []otlptracegrpc.Option
opts = append(opts, otlptracegrpc.WithEndpoint(endpoint))
if insecure {
opts = append(opts, otlptracegrpc.WithInsecure())
}
opts = append(opts, options...)
return otlptrace.New(
ctx,
otlptracegrpc.NewClient(opts...),
)
}