Enha: tracing [WIP]

This commit is contained in:
Grail Finder
2025-07-11 17:34:07 +03:00
parent ea27d35254
commit 134b7b6262
3 changed files with 26 additions and 3 deletions

View File

@ -4,4 +4,5 @@ services:
image: jaegertracing/all-in-one:latest image: jaegertracing/all-in-one:latest
ports: ports:
- "6831:6831/udp" - "6831:6831/udp"
- "14268:14268"
- "16686:16686" - "16686:16686"

22
main.go
View File

@ -9,6 +9,7 @@ import (
"gralias/telemetry" "gralias/telemetry"
"log/slog" "log/slog"
"net/http" "net/http"
_ "net/http/pprof"
"os" "os"
"os/signal" "os/signal"
"path/filepath" "path/filepath"
@ -111,16 +112,33 @@ func main() {
cm := crons.NewCronManager(repo, slog.Default()) cm := crons.NewCronManager(repo, slog.Default())
cm.Start() cm.Start()
server := ListenToRequests(cfg.ServerConfig.Port) server := ListenToRequests(cfg.ServerConfig.Port)
pprofPort := "6060"
pprofServer := &http.Server{
Addr: ":" + pprofPort,
}
go func() {
slog.Info("Pprof server listening", "addr", pprofPort)
if err := pprofServer.ListenAndServe(); err != nil && err != http.ErrServerClosed {
slog.Error("Pprof server failed", "error", err)
}
}()
go func() { go func() {
if err := server.ListenAndServe(); err != nil && err != http.ErrServerClosed { if err := server.ListenAndServe(); err != nil && err != http.ErrServerClosed {
panic(err) panic(err)
} }
}() }()
<-stop <-stop
slog.Info("Shutting down server...") slog.Info("Shutting down servers...")
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel() defer cancel()
if err := server.Shutdown(ctx); err != nil { if err := server.Shutdown(ctx); err != nil {
slog.Error("server shutdown failed", "error", err) slog.Error("Main server shutdown failed", "error", err)
}
if err := pprofServer.Shutdown(ctx); err != nil {
slog.Error("Pprof server shutdown failed", "error", err)
} }
} }

View File

@ -36,7 +36,11 @@ func NewTracerProvider(exp sdktrace.SpanExporter) *sdktrace.TracerProvider {
// OtelMiddleware wraps the provided http.Handler with OpenTelemetry tracing. // OtelMiddleware wraps the provided http.Handler with OpenTelemetry tracing.
func OtelMiddleware(handler http.Handler) http.Handler { func OtelMiddleware(handler http.Handler) http.Handler {
return otelhttp.NewHandler(handler, "http.server") return otelhttp.NewHandler(handler, "http.server",
otelhttp.WithSpanNameFormatter(func(operation string, r *http.Request) string {
return r.URL.Path
}),
)
} }
func InitTracer() func() { func InitTracer() func() {