服务端代码:
package main
import (
"context"
"flag"
"fmt"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/exporters/jaeger"
"go.opentelemetry.io/otel/propagation"
"go.opentelemetry.io/otel/sdk/resource"
"go.opentelemetry.io/otel/sdk/trace"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
"log"
"net"
pb "GoStart/error/rpc"
"go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc"
"google.golang.org/grpc"
semconv "go.opentelemetry.io/otel/semconv/v1.12.0"
)
const (
traceName = "mxshop-otel"
)
var tp *trace.TracerProvider
func tracerProvider() error {
url := "http://127.0.0.1:14268/api/traces"
jexp, err := jaeger.New(jaeger.WithCollectorEndpoint(jaeger.WithEndpoint(url)))
if err != nil {
panic(err)
}
tp = trace.NewTracerProvider(
trace.WithBatcher(jexp),
trace.WithResource(
resource.NewWithAttributes(
semconv.SchemaURL,
semconv.ServiceNameKey.String("mxshop-user"),
attribute.String("environment", "dev"),
attribute.Int("ID", 1),
),
),
)
otel.SetTracerProvider(tp

文章介绍了如何在Go语言的服务端和客户端代码中集成OpenTelemetry和Jaeger,以实现分布式追踪,包括创建TracerProvider、设置资源属性和使用gRPC的拦截器进行OpenTelemetry追踪。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



