Goroutine-safe SDK for net/http, Gin, Echo, Fiber, and Chi. Single import, zero-allocation hot path, context.Context-based trace propagation — no codegen, no init container.
1// In your Go service main()2import "github.com/justanalyticsapp/go-sdk"34ja.Init(ja.Config{5APIKey: os.Getenv("JUSTANALYTICS_API_KEY"),6ServiceName: "my-go-api",7Environment: "production",8})910// net/http, Gin, Echo, Fiber, Chi —11// drop-in middleware available for each.
From a single Gin handler to a 50-service mesh, the same SDK traces every request end-to-end.
Wraps your *sql.DB so every query becomes a span. Works with pgx, lib/pq, mysql, sqlite3, and any database/sql driver.
One-line middleware for Gin (router.Use), Echo (e.Use), Fiber, Chi, and stdlib net/http. Each request becomes a root span.
Captures panics with full goroutine stack via runtime.Stack(), then re-panics so your defer/recover stays in control.
Tracing on the request path uses pre-allocated buffers. No GC pressure at high RPS — benchmarked against bare net/http.
Add the frontend script for cookie-free analytics, replay, and Web Vitals. One dashboard for client + server.
p95 latency, error-rate, and throughput alerts per route. Routes to email, webhook, or PagerDuty.
go get, init, mount the middleware. Every handler is traced from request to response.
# Install
go get github.com/justanalyticsapp/go-sdk
// main.go
package main
import (
"os"
"github.com/gin-gonic/gin"
ja "github.com/justanalyticsapp/go-sdk"
)
func main() {
ja.Init(ja.Config{
APIKey: os.Getenv("JUSTANALYTICS_API_KEY"),
ServiceName: "my-go-api",
Environment: "production",
})
defer ja.Shutdown()
r := gin.Default()
r.Use(ja.GinMiddleware()) // every request traced from here on
r.GET("/users/:id", func(c *gin.Context) {
// database/sql queries here are auto-traced
c.JSON(200, gin.H{"id": c.Param("id")})
})
r.Run(":8080")
}Replace five tools with one platform. Start with the free tier or try Pro free for 7 days.
Start 7-Day Free Trial