# Packages
No description provided by the author
No description provided by the author
# README
go-opentelemetry v2
Go OpenTelemetry Helper.
Why we need v2
?
- Span trace front to back (context propagation).
- Upgrade go version to
v1.21.0
and otel version fromv1.10.0
tov1.28.0
, see why_need_upgrade_version. - Better library API. See better_api.md
Feature
- Opentelemetry Trace
- Opentelemetry Context Propagation
Installation v2
go get github.com/erajayatech/go-opentelemetry/v2
import gootel "github.com/erajayatech/go-opentelemetry/v2"
Checklist implement v2
Here is checklist for you to check wheter you already implement this v2
fully.
- Your import is using
v2
and ranme.
import gootel "github.com/erajayatech/go-opentelemetry/v2"
- You create new trace provider and shutdown it properly. See example.
tp, err := gootel.NewTraceProvider(context.Background())
fatalIfErr(err)
defer func() {
err := tp.Shutdown(context.Background())
warnIfErr(err)
}()
- Your server ready to receive context propagation. See example gin and See example grpc.
ginEngine := gin.Default()
ginEngine.Use(otelgin.Middleware(""))
grpcServer := grpc.NewServer(grpc.StatsHandler(otelgrpc.NewServerHandler()))
- You record the span.
ctx, span := gootel.RecordSpan(ctx)
defer span.End()
- Your client sent context propagation. See example http and example grpc.
client := &http.Client{Transport: otelhttp.NewTransport(http.DefaultTransport)}
req, err := http.NewRequestWithContext(ctx, http.MethodGet, "http://localhost:4000/foo", nil)
conn, err := grpc.NewClient("localhost:4001", grpc.WithStatsHandler(otelgrpc.NewClientHandler()), grpc.WithTransportCredentials(insecure.NewCredentials()))
Usage
See example server and example client.
In New Relic you will get.
Migrate from v1
See Migrate from v1