Enha: tracing [WIP]
This commit is contained in:
@ -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
22
main.go
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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() {
|
||||||
|
Reference in New Issue
Block a user