优化主程序和追踪功能

- 在 main.go 中恢复了 traceRouter 的初始化代码,确保追踪功能正常工作
- 在 trace.go 中将追踪提供者设置为 noop,清理了不必要的代码注释
- 在 client.go 中更新了日志记录方式,使用 traceRouter.Logger 记录请求地址,提升了日志的上下文信息
This commit is contained in:
danial
2025-04-21 16:22:59 +08:00
parent a131994aed
commit 3fba5b0b6e
3 changed files with 32 additions and 29 deletions

View File

@@ -23,7 +23,7 @@ import (
sdklog "go.opentelemetry.io/otel/sdk/log"
sdkMetric "go.opentelemetry.io/otel/sdk/metric"
"go.opentelemetry.io/otel/sdk/resource"
sdktrace "go.opentelemetry.io/otel/sdk/trace"
"go.opentelemetry.io/otel/trace/noop"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
@@ -56,7 +56,7 @@ func (l *LoggerStruct) WithContext(ctx context.Context) *zap.Logger {
}
return l.logger
}
return l.logger
return l.logger.With(zap.String("trace_id", span.SpanContext().TraceID().String()))
}
var (
@@ -91,17 +91,18 @@ func InitTracer() (func(context.Context) error, func(context.Context) error, fun
return nil, nil, nil
}
otel.SetTracerProvider(
sdktrace.NewTracerProvider(
sdktrace.WithSampler(sdktrace.AlwaysSample()),
sdktrace.WithSpanProcessor(sdktrace.NewBatchSpanProcessor(traceExporter,
sdktrace.WithBatchTimeout(30*time.Second),
sdktrace.WithMaxExportBatchSize(100),
)),
sdktrace.WithBatcher(traceExporter),
sdktrace.WithResource(resources),
),
)
// otel.SetTracerProvider(
// sdktrace.NewTracerProvider(
// sdktrace.WithSampler(sdktrace.AlwaysSample()),
// sdktrace.WithSpanProcessor(sdktrace.NewBatchSpanProcessor(traceExporter,
// sdktrace.WithBatchTimeout(30*time.Second),
// sdktrace.WithMaxExportBatchSize(100),
// )),
// sdktrace.WithBatcher(traceExporter),
// sdktrace.WithResource(resources),
// ),
// )
otel.SetTracerProvider(noop.NewTracerProvider())
// Set up meter provider.
metricExporter, err := otlpmetrichttp.New(
InitCtx,

View File

@@ -3,21 +3,22 @@ package client
import (
"context"
"encoding/json"
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
"io"
"net/http"
"net/url"
"shop/internal/traceRouter"
"time"
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
"go.uber.org/zap"
"github.com/beego/beego/v2/client/httplib"
"github.com/beego/beego/v2/core/logs"
)
type Response struct {
Msg string `json:"msg"`
Code int `json:"code"`
Data interface{} `json:"data"`
Data any `json:"data"`
}
// Get 发送get请求
@@ -31,7 +32,7 @@ func Get(ctx context.Context, baseUrl string, params map[string]string) (result
return "", err
}
realUrl.RawQuery = urlParams.Encode()
logs.Info("请求地址", realUrl.String())
traceRouter.Logger.WithContext(ctx).Info("请求地址", zap.String("url", realUrl.String()))
req, err := http.NewRequestWithContext(context.WithoutCancel(ctx), "GET", realUrl.String(), nil)
if err != nil {
return "", err

25
main.go
View File

@@ -3,23 +3,24 @@ package main
import (
_ "shop/internal/models"
_ "shop/internal/routers"
"shop/internal/traceRouter"
beego "github.com/beego/beego/v2/server/web"
_ "github.com/go-sql-driver/mysql"
)
func main() {
// cleanup1, cleanup2, cleanup3 := traceRouter.InitTracer()
// defer func() {
// if cleanup1 != nil {
// _ = cleanup1(traceRouter.InitCtx)
// }
// if cleanup2 != nil {
// _ = cleanup2(traceRouter.InitCtx)
// }
// if cleanup3 != nil {
// _ = cleanup3(traceRouter.InitCtx)
// }
// }()
cleanup1, cleanup2, cleanup3 := traceRouter.InitTracer()
defer func() {
if cleanup1 != nil {
_ = cleanup1(traceRouter.InitCtx)
}
if cleanup2 != nil {
_ = cleanup2(traceRouter.InitCtx)
}
if cleanup3 != nil {
_ = cleanup3(traceRouter.InitCtx)
}
}()
beego.Run()
}