1 Star 0 Fork 0

PengHengBen/devcloud-mini

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
jaeger.go 2.07 KB
一键复制 编辑 原始数据 按行查看 历史
PengHengBen 提交于 2024-02-19 17:19 . 实现跨服务tracer追踪
package tracer
import (
"context"
"gitee.com/penghengben/devcloud-mini/mcenter/conf"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/exporters/jaeger"
"go.opentelemetry.io/otel/propagation"
"go.opentelemetry.io/otel/sdk/resource"
sdktrace "go.opentelemetry.io/otel/sdk/trace"
semconv "go.opentelemetry.io/otel/semconv/v1.17.0"
oteltrace "go.opentelemetry.io/otel/trace"
)
// 全局Tracer对象
var Tracer oteltrace.Tracer
// 记得调用初始化方法,初始化全局Tracer对象
func InitTracer() error {
ep := conf.C().Jaeger.Endpoint
// 如果没配置就不启动Tracer
if ep == "" {
return nil
}
exporter, err := jaeger.New(jaeger.WithCollectorEndpoint(jaeger.WithEndpoint(ep)))
if err != nil {
return err
}
// 初始化一个Provider,设置具体的Provider(Jaeger/Zipkin/...)
// 这里选择jaeger
tp := sdktrace.NewTracerProvider(
// 直接使用
sdktrace.WithSampler(sdktrace.AlwaysSample()),
// 指定Provider: Jaeger
sdktrace.WithBatcher(exporter),
// Traces时需要携带额外数据(Pod Name),需要携带的数据定义为Resource
sdktrace.WithResource(newResource()),
)
// 通过SetTracerProvider 把当前的TraceProvider 赋值为一个全局Provider
otel.SetTracerProvider(tp)
// 上下文数据如何传递, 相当于初始化了一个Root Context
otel.SetTextMapPropagator(propagation.NewCompositeTextMapPropagator(propagation.Baggage{}, propagation.TraceContext{}))
// 通过全局的Provider, 在Cmdb服务内部运行的Tracer, CMDB Tracer
// Trace 来自于cmdb的请求
Tracer = otel.GetTracerProvider().Tracer("mcenter", oteltrace.WithInstrumentationVersion("0.1"))
return nil
}
// newResource returns a resource describing this application.
func newResource() *resource.Resource {
// 因为需要手动设置ServiceName和版本,不使用default的自动探测
// resource.Default()
r, _ := resource.New(
context.Background(),
resource.WithFromEnv(),
resource.WithTelemetrySDK(),
resource.WithAttributes(
semconv.ServiceNameKey.String("mcenter"),
semconv.ServiceVersionKey.String("v1"),
),
)
return r
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/penghengben/devcloud-mini.git
git@gitee.com:penghengben/devcloud-mini.git
penghengben
devcloud-mini
devcloud-mini
52595909206d

搜索帮助