github.com/go-srvc/mods/tracemod
go get github.com/go-srvc/mods/tracemod@v1.16.0
README
tracemod
tracemod exports spans to the otel endpoint and flushes buffers before the application exits. Once installed, any otel tracer in the process feeds into the same exporter.
package main
import (
"fmt"
"net/http"
"os"
"github.com/go-srvc/mods/httpmod"
"github.com/go-srvc/mods/sigmod"
"github.com/go-srvc/mods/tracemod"
"github.com/go-srvc/srvc"
"go.opentelemetry.io/otel"
)
func main() {
srvc.RunAndExit(
tracemod.New(),
sigmod.New(os.Interrupt),
httpmod.New(
httpmod.WithAddr(":8080"),
httpmod.WithHandler(http.HandlerFunc(hello)),
),
)
}
func hello(w http.ResponseWriter, r *http.Request) {
_, span := otel.Tracer("hello").Start(r.Context(), "greet")
defer span.End()
fmt.Fprint(w, "hello, world")
}
Overview
Package tracemod provides OpenTelemetry trace provider as a module.
Constants
const (
ErrMissingProvider = errStr("trace provider not set")
ErrFlushFailed = errStr("failed to flush remaining spans")
)const ID = "tracemod"Types
type Opt
type Opt func(*Provider) errorfunc WithEnv
func WithEnv() OptWithEnv uses OTEL_EXPORTER_OTLP_TRACES_PROTOCOL and OTEL_EXPORTER_OTLP_PROTOCOL environment variable to set exporter. Accepted values are:
- http/protobuf
- grpc
- stdout
If no value is provided, stdout is used.
func WithGRPC
func WithGRPC() OptWithGRPC creates trace provider with batch span processor using grpc exporter from OTEL_* env configs. Env variables: https://pkg.go.dev/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc
func WithHTTP
func WithHTTP() OptWithHTTP creates trace provider with batch span processor using http exporter from OTEL_* env configs. Env variables: https://pkg.go.dev/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp
func WithPropagator
func WithPropagator(prop propagation.TextMapPropagator) OptWithPropagator allows setting custom text map propagator.
func WithProvider
func WithProvider(exp *trace.TracerProvider) OptWithProvider sets the underlying trace provider for module.
func WithProviderFn
func WithProviderFn(fn func() (*trace.TracerProvider, error)) OptWithProviderFn sets the underlying trace provider for module using given function.
func WithStdout
func WithStdout(opt ...stdouttrace.Option) OptWithStdout creates trace provider with stdout exporter.
type Provider
type Provider struct {
// contains filtered or unexported fields
}func New
func New(opts ...Opt) *ProviderNew creates tracer provider module with sane defaults. Default options are: WithEnv.
func (*Provider) ID
func (p *Provider) ID() stringfunc (*Provider) Init
func (p *Provider) Init() errorfunc (*Provider) Run
func (p *Provider) Run() errorfunc (*Provider) Stop
func (p *Provider) Stop() errorExamples
ExampleNew
package main
import (
"github.com/go-srvc/mods/tracemod"
"github.com/go-srvc/srvc"
)
func main() {
srvc.RunAndExit(
tracemod.New(),
)
}