mirror of
https://gitee.com/johng/gf
synced 2026-06-06 02:25:47 +08:00
feat: improve code for shutdown of otel (#3136)
This commit is contained in:
@ -9,8 +9,8 @@ package otlpgrpc
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"github.com/gogf/gf/v2/net/gipv4"
|
||||
"go.opentelemetry.io/otel"
|
||||
"go.opentelemetry.io/otel/attribute"
|
||||
"go.opentelemetry.io/otel/exporters/otlp/otlptrace"
|
||||
@ -20,6 +20,9 @@ import (
|
||||
sdktrace "go.opentelemetry.io/otel/sdk/trace"
|
||||
semconv "go.opentelemetry.io/otel/semconv/v1.20.0"
|
||||
"google.golang.org/grpc"
|
||||
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/net/gipv4"
|
||||
)
|
||||
|
||||
const (
|
||||
@ -30,7 +33,7 @@ const (
|
||||
//
|
||||
// The output parameter `Shutdown` is used for waiting exported trace spans to be uploaded,
|
||||
// which is useful if your program is ending, and you do not want to lose recent spans.
|
||||
func Init(serviceName, endpoint, traceToken string) (*sdktrace.TracerProvider, error) {
|
||||
func Init(serviceName, endpoint, traceToken string) (func(), error) {
|
||||
// Try retrieving host ip for tracing info.
|
||||
var (
|
||||
intranetIPArray, err = gipv4.GetIntranetIpArray()
|
||||
@ -87,5 +90,13 @@ func Init(serviceName, endpoint, traceToken string) (*sdktrace.TracerProvider, e
|
||||
otel.SetTextMapPropagator(propagation.TraceContext{})
|
||||
otel.SetTracerProvider(tracerProvider)
|
||||
|
||||
return tracerProvider, nil
|
||||
return func() {
|
||||
ctx, cancel := context.WithTimeout(ctx, time.Second)
|
||||
defer cancel()
|
||||
if err = traceExp.Shutdown(ctx); err != nil {
|
||||
g.Log().Errorf(ctx, "Shutdown traceExp failed err:%+v", err)
|
||||
otel.Handle(err)
|
||||
}
|
||||
g.Log().Debug(ctx, "Shutdown traceExp success")
|
||||
}, nil
|
||||
}
|
||||
|
||||
@ -9,8 +9,8 @@ package otlphttp
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"github.com/gogf/gf/v2/net/gipv4"
|
||||
"go.opentelemetry.io/otel"
|
||||
"go.opentelemetry.io/otel/attribute"
|
||||
"go.opentelemetry.io/otel/exporters/otlp/otlptrace"
|
||||
@ -19,6 +19,9 @@ import (
|
||||
"go.opentelemetry.io/otel/sdk/resource"
|
||||
sdktrace "go.opentelemetry.io/otel/sdk/trace"
|
||||
semconv "go.opentelemetry.io/otel/semconv/v1.20.0"
|
||||
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/net/gipv4"
|
||||
)
|
||||
|
||||
const (
|
||||
@ -29,7 +32,7 @@ const (
|
||||
//
|
||||
// The output parameter `Shutdown` is used for waiting exported trace spans to be uploaded,
|
||||
// which is useful if your program is ending, and you do not want to lose recent spans.
|
||||
func Init(serviceName, endpoint, path string) (*sdktrace.TracerProvider, error) {
|
||||
func Init(serviceName, endpoint, path string) (func(), error) {
|
||||
// Try retrieving host ip for tracing info.
|
||||
var (
|
||||
intranetIPArray, err = gipv4.GetIntranetIpArray()
|
||||
@ -85,5 +88,13 @@ func Init(serviceName, endpoint, path string) (*sdktrace.TracerProvider, error)
|
||||
otel.SetTextMapPropagator(propagation.TraceContext{})
|
||||
otel.SetTracerProvider(tracerProvider)
|
||||
|
||||
return tracerProvider, nil
|
||||
return func() {
|
||||
ctx, cancel := context.WithTimeout(ctx, time.Second)
|
||||
defer cancel()
|
||||
if err = traceExp.Shutdown(ctx); err != nil {
|
||||
g.Log().Errorf(ctx, "Shutdown traceExp failed err:%+v", err)
|
||||
otel.Handle(err)
|
||||
}
|
||||
g.Log().Debug(ctx, "Shutdown traceExp success")
|
||||
}, nil
|
||||
}
|
||||
|
||||
@ -20,11 +20,11 @@ func main() {
|
||||
grpcx.Resolver.Register(etcd.New("127.0.0.1:2379"))
|
||||
|
||||
var ctx = gctx.New()
|
||||
tp, err := otlpgrpc.Init(serviceName, endpoint, traceToken)
|
||||
shutdown, err := otlpgrpc.Init(serviceName, endpoint, traceToken)
|
||||
if err != nil {
|
||||
g.Log().Fatal(ctx, err)
|
||||
}
|
||||
defer tp.Shutdown(ctx)
|
||||
defer shutdown()
|
||||
|
||||
StartRequests()
|
||||
}
|
||||
|
||||
@ -33,11 +33,11 @@ func main() {
|
||||
grpcx.Resolver.Register(etcd.New("127.0.0.1:2379"))
|
||||
|
||||
var ctx = gctx.New()
|
||||
tp, err := otlpgrpc.Init(serviceName, endpoint, traceToken)
|
||||
shutdown, err := otlpgrpc.Init(serviceName, endpoint, traceToken)
|
||||
if err != nil {
|
||||
g.Log().Fatal(ctx, err)
|
||||
}
|
||||
defer tp.Shutdown(ctx)
|
||||
defer shutdown()
|
||||
|
||||
// Set ORM cache adapter with redis.
|
||||
g.DB().GetCache().SetAdapter(gcache.NewAdapterRedis(g.Redis()))
|
||||
|
||||
@ -15,11 +15,11 @@ const (
|
||||
|
||||
func main() {
|
||||
var ctx = gctx.New()
|
||||
tp, err := otlphttp.Init(serviceName, endpoint, path)
|
||||
shutdown, err := otlphttp.Init(serviceName, endpoint, path)
|
||||
if err != nil {
|
||||
g.Log().Fatal(ctx, err)
|
||||
}
|
||||
defer tp.Shutdown(ctx)
|
||||
defer shutdown()
|
||||
|
||||
StartRequests()
|
||||
}
|
||||
|
||||
@ -16,11 +16,11 @@ const (
|
||||
|
||||
func main() {
|
||||
var ctx = gctx.New()
|
||||
tp, err := otlphttp.Init(serviceName, endpoint, path)
|
||||
shutdown, err := otlphttp.Init(serviceName, endpoint, path)
|
||||
if err != nil {
|
||||
g.Log().Fatal(ctx, err)
|
||||
}
|
||||
defer tp.Shutdown(ctx)
|
||||
defer shutdown()
|
||||
|
||||
s := g.Server()
|
||||
s.Group("/", func(group *ghttp.RouterGroup) {
|
||||
|
||||
@ -17,11 +17,11 @@ const (
|
||||
|
||||
func main() {
|
||||
var ctx = gctx.New()
|
||||
tp, err := otlphttp.Init(serviceName, endpoint, path)
|
||||
shutdown, err := otlphttp.Init(serviceName, endpoint, path)
|
||||
if err != nil {
|
||||
g.Log().Fatal(ctx, err)
|
||||
}
|
||||
defer tp.Shutdown(ctx)
|
||||
defer shutdown()
|
||||
|
||||
StartRequests()
|
||||
}
|
||||
|
||||
@ -24,11 +24,11 @@ const (
|
||||
|
||||
func main() {
|
||||
var ctx = gctx.New()
|
||||
tp, err := otlphttp.Init(serviceName, endpoint, path)
|
||||
shutdown, err := otlphttp.Init(serviceName, endpoint, path)
|
||||
if err != nil {
|
||||
g.Log().Fatal(ctx, err)
|
||||
}
|
||||
defer tp.Shutdown(ctx)
|
||||
defer shutdown()
|
||||
|
||||
// Set ORM cache adapter with redis.
|
||||
g.DB().GetCache().SetAdapter(gcache.NewAdapterRedis(g.Redis()))
|
||||
|
||||
@ -18,11 +18,11 @@ const (
|
||||
|
||||
func main() {
|
||||
var ctx = gctx.New()
|
||||
tp, err := otlphttp.Init(serviceName, endpoint, path)
|
||||
shutdown, err := otlphttp.Init(serviceName, endpoint, path)
|
||||
if err != nil {
|
||||
g.Log().Fatal(ctx, err)
|
||||
}
|
||||
defer tp.Shutdown(ctx)
|
||||
defer shutdown()
|
||||
|
||||
ctx, span := gtrace.NewSpan(ctx, "main")
|
||||
defer span.End()
|
||||
|
||||
@ -22,11 +22,11 @@ const (
|
||||
|
||||
func main() {
|
||||
var ctx = gctx.New()
|
||||
tp, err := otlpgrpc.Init(serviceName, endpoint, traceToken)
|
||||
shutdown, err := otlpgrpc.Init(serviceName, endpoint, traceToken)
|
||||
if err != nil {
|
||||
g.Log().Fatal(ctx, err)
|
||||
}
|
||||
defer tp.Shutdown(ctx)
|
||||
defer shutdown()
|
||||
|
||||
StartRequests()
|
||||
}
|
||||
|
||||
@ -21,11 +21,11 @@ const (
|
||||
|
||||
func main() {
|
||||
var ctx = gctx.New()
|
||||
tp, err := otlphttp.Init(serviceName, endpoint, path)
|
||||
shutdown, err := otlphttp.Init(serviceName, endpoint, path)
|
||||
if err != nil {
|
||||
g.Log().Fatal(ctx, err)
|
||||
}
|
||||
defer tp.Shutdown(ctx)
|
||||
defer shutdown()
|
||||
|
||||
StartRequests()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user