Help us shape the future of Go! Take the 2026 Go Developer Survey

uptrace-go

module
v1.47.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 6, 2026 License: BSD-2-Clause

README

Uptrace for Go

build workflow PkgGoDev Documentation Chat

Introduction

uptrace-go is an OpenTelemery Go distribution configured to export traces and metrics to Uptrace.

Quickstart

Install uptrace-go:

go get github.com/uptrace/uptrace-go

Run the basic example below using the DSN from the Uptrace project settings page.

package main

import (
	"context"
	"errors"
	"fmt"

	"go.opentelemetry.io/otel"
	"go.opentelemetry.io/otel/attribute"

	"github.com/uptrace/uptrace-go/uptrace"
)

func main() {
	ctx := context.Background()

	// Configure OpenTelemetry with sensible defaults.
	uptrace.ConfigureOpentelemetry(
		// copy your project DSN here or use UPTRACE_DSN env var
		// uptrace.WithDSN("https://<token>@uptrace.dev/<project_id>"),

		uptrace.WithServiceName("myservice"),
		uptrace.WithServiceVersion("1.0.0"),
	)
	// Send buffered spans and free resources.
	defer uptrace.Shutdown(ctx)

	// Create a tracer. Usually, tracer is a global variable.
	tracer := otel.Tracer("app_or_package_name")

	// Create a root span (a trace) to measure some operation.
	ctx, main := tracer.Start(ctx, "main-operation")
	// End the span when the operation we are measuring is done.
	defer main.End()

	// The passed ctx carries the parent span (main).
	// That is how OpenTelemetry manages span relations.
	_, child1 := tracer.Start(ctx, "GET /posts/:id")
	child1.SetAttributes(
		attribute.String("http.method", "GET"),
		attribute.String("http.route", "/posts/:id"),
		attribute.String("http.url", "http://localhost:8080/posts/123"),
		attribute.Int("http.status_code", 200),
	)
	child1.RecordError(errors.New("error1"))
	child1.End()

	_, child2 := tracer.Start(ctx, "SELECT")
	child2.SetAttributes(
		attribute.String("db.system", "mysql"),
		attribute.String("db.statement", "SELECT * FROM posts LIMIT 100"),
	)
	child2.End()

	fmt.Printf("trace: %s\n", uptrace.TraceURL(main))
}

Directories

Path Synopsis
cmd
uptrace-run command
example
basic module
beego module
gin module
go-pg module
go-redis module
go-restful module
gomemcache module
gorilla-mux module
grpc module
logrus module
macaron.v1 module
metrics module
mongo-driver module
net-http module
otel-api module
otlp module
otlp-metrics module
otlp-traces module
slog module
tutorial module
zap module
extra
otelgorm module
otelgorm/e2e module
otellogrus module
otelsql module
otelsql/e2e module
otelzap module

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL