W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
Tracing 中間件使用 OpenTelemetry 實現(xiàn)了鏈路追蹤。
Tracing 中間件中提供了一個配置方法 ?SetTracerProvider()
?。
SetTracerProvider
?package otel
...
func SetTracerProvider(tp trace.TracerProvider) {
global.SetTracerProvider(tp)
}
SetTracerProvider 用于設(shè)置 tracing 的鏈路追蹤程序的提供者,該方法接收一個 trace.TracerProvider。
package server
func initTracer() func() {
// 創(chuàng)建一個 jaeger 的 pipeline,其他收集方式可以查看 opentelemetry 文檔
flush, err := jaeger.InstallNewPipeline(
jaeger.WithCollectorEndpoint("http://localhost:14268/api/traces"),
jaeger.WithSDKOptions(
sdktrace.WithSampler(sdktrace.AlwaysSample()),
sdktrace.WithResource(resource.NewWithAttributes(
semconv.ServiceNameKey.String("kratos-trace"),
attribute.String("exporter", "jaeger"),
attribute.Float64("float", 312.23),
)),
),
)
if err != nil {
log.Fatal(err)
}
return flush
}
// NewGRPCServer new a gRPC server.
func NewGRPCServer(c *conf.Server, executor *service.ExecutorService) *grpc.Server {
flush := initTracer()
defer flush()
//tr := otel.Tracer("component-main")
var opts = []grpc.ServerOption{
grpc.Middleware(
middleware.Chain(
tracing.Server(),
),
),
}
// ...
}
func initTracer() func() {
// 創(chuàng)建一個 jaeger 的 pipeline,其他收集方式可以查看 opentelemetry 文檔
flush, err := jaeger.InstallNewPipeline(
jaeger.WithCollectorEndpoint("http://localhost:14268/api/traces"),
jaeger.WithSDKOptions(
sdktrace.WithSampler(sdktrace.AlwaysSample()),
sdktrace.WithResource(resource.NewWithAttributes(
semconv.ServiceNameKey.String("kratos-trace"),
attribute.String("exporter", "jaeger"),
attribute.Float64("float", 312.23),
)),
),
)
if err != nil {
log.Fatal(err)
}
return flush
}
func grpcCli() (*grpc.ClientConn, error) {
return grpc.DialInsecure(
context.Background(),
grpc.WithMiddleware(
tracing.Client(),
),
)
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: