服务端代码:
package main
import (
"GoStart/telemetry/ch03/server/model"
"github.com/gin-gonic/gin"
"go.opentelemetry.io/contrib/instrumentation/github.com/gin-gonic/gin/otelgin"
"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"
semconv "go.opentelemetry.io/otel/semconv/v1.12.0"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"gorm.io/gorm/schema"
"gorm.io/plugin/opentelemetry/tracing"
"log"
"os"
"time"
)
var tp *trace.TracerProvider
const (
TRACE_NAME = "mxshop-otel"
)
func tracerProvider() error {
url := "http://192.168.66.130: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)
otel.SetTextMapPropagator(propagation.NewCompositeTextMapPropagator(propagation.TraceContext{
}, propagation.Baggage{
}))
return nil
}
func Server(c *gin.Context) {
dsn := "root:123456@tcp(127.0.0.1:3306)/mxshop_user_srv?charset=utf8mb4&parseTime=True&loc=Local"
newLogger := logger.New(
log.New(os.Stdout,

本文介绍了如何在Go服务端应用中使用OpenTelemetry和Jaeger进行追踪,包括设置TracerProvider、GORM集成OpenTelemetry插件以及客户端发起请求时携带追踪信息。
最低0.47元/天 解锁文章
560

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



