github.com/go-srvc/mods/tracemod
go get github.com/go-srvc/mods/tracemod@v1.0.2
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) errortype Provider
type Provider struct {
// contains filtered or unexported fields
}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(),
)
}