Skip to content

Commit 83f105d

Browse files
committed
feat: rest http server add the logic open-telemetry
1 parent 02c4050 commit 83f105d

File tree

12 files changed

+73
-4
lines changed

12 files changed

+73
-4
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,8 @@ Microservice framework implemented based on Golang.
6969
│ └─server
7070
│ ├─restserver http 服务的初始化配置
7171
│ │ ├─middlewares http 服务的中间件
72-
│ │ │ └─auth
72+
│ │ │ ├─auth
73+
│ │ │ └─tracing.go 只是向gin中封装了 jeager 的 span 的相关信息,待上报的时候,才能入库
7374
│ │ ├─pprof http 服务的 pprof 相关逻辑
7475
│ │ └─validation http 服务的参数校验
7576
│ └─rpcserver rpc 服务的初始化配置

app/pkg/options/tracing.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ type TelemetryOptions struct {
2020

2121
func NewTelemetryOptions() *TelemetryOptions {
2222
return &TelemetryOptions{
23-
Name: "shop",
23+
Name: "shop-service",
2424
Endpoint: "http://127.0.0.1:14268/api/traces",
2525
Sampler: 1.0,
2626
Batcher: "jaeger",

app/shop/admin/controller/list.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,14 @@ package controller
22

33
import (
44
"github.com/CoderI421/gframework/pkg/log"
5+
"go.opentelemetry.io/otel/trace"
56

67
"github.com/gin-gonic/gin"
78
)
89

910
func (us *userServer) List(ctx *gin.Context) {
11+
12+
span := trace.SpanFromContext(ctx.Request.Context())
13+
log.Info(span.SpanContext().TraceID().String())
1014
log.Info("GetUserList is called")
1115
}

app/shop/admin/http.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,47 @@ import (
77

88
// NewUserHTTPServer 创建一个http server
99
func NewUserHTTPServer(conf *config.Config) (*restserver.Server, error) {
10+
//trace.InitAgent(trace.Options{
11+
// Name: conf.Telemetry.Name,
12+
// Endpoint: conf.Telemetry.Endpoint,
13+
// Sampler: conf.Telemetry.Sampler,
14+
// Batcher: conf.Telemetry.Batcher,
15+
//})
16+
1017
uRestServer := restserver.NewServer(
1118
restserver.WithPort(conf.Server.HttpPort),
1219
restserver.WithEnableProfiling(true),
1320
restserver.WithMiddlewares(conf.Server.Middlewares),
1421
)
22+
//_ = tracerProvider()
1523

1624
// 配置好路由
1725
initRouter(uRestServer)
1826
return uRestServer, nil
1927
}
28+
29+
//var tp *otelsdktrace.TracerProvider
30+
//
31+
//// 初始化Provider
32+
//func tracerProvider() error {
33+
// url := "http://127.0.0.1:14268/api/traces"
34+
// jexp, err := jaeger.New(jaeger.WithCollectorEndpoint(jaeger.WithEndpoint(url)))
35+
// if err != nil {
36+
// panic(err)
37+
// }
38+
//
39+
// tp = otelsdktrace.NewTracerProvider(
40+
// otelsdktrace.WithBatcher(jexp),
41+
// otelsdktrace.WithResource(
42+
// resource.NewWithAttributes(
43+
// semconv.SchemaURL,
44+
// semconv.ServiceNameKey.String("mxshop-user"),
45+
// attribute.String("environment", "dev"),
46+
// attribute.Int("ID", 1),
47+
// ),
48+
// ),
49+
// )
50+
// otel.SetTracerProvider(tp)
51+
// otel.SetTextMapPropagator(propagation.NewCompositeTextMapPropagator(propagation.TraceContext{}, propagation.Baggage{}))
52+
// return nil
53+
//}

configs/admin/admin.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,10 @@ server:
2525
- recovery # panic 恢复
2626
- cors # 跨域
2727
- context
28+
- trace
2829

2930
telemetry:
30-
Name: user-srv
31+
Name: shop-service
3132
Endpoint: http://127.0.0.1:14268/api/traces
3233
Sampler: 1.0
3334
Bathcer: jaeger

configs/user/srv.yaml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,10 @@ log:
1111

1212
registry:
1313
address: 127.0.0.1:8500
14-
scheme: http
14+
scheme: http
15+
16+
telemetry:
17+
Name: user-srv
18+
Endpoint: http://127.0.0.1:14268/api/traces
19+
Sampler: 1.0
20+
Bathcer: jaeger

gmicro/server/restserver/middlewares/middleware.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,6 @@ func defaultMiddlewares() map[string]gin.HandlerFunc {
99
"recovery": gin.Recovery(),
1010
"cors": Cors(),
1111
"context": Context(),
12+
"trace": TracingHandler("gmicro"),
1213
}
1314
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package middlewares
2+
3+
import (
4+
"github.com/gin-gonic/gin"
5+
"go.opentelemetry.io/contrib/instrumentation/github.com/gin-gonic/gin/otelgin"
6+
)
7+
8+
func TracingHandler(service string) gin.HandlerFunc {
9+
return otelgin.Middleware(service)
10+
}

gmicro/server/restserver/options.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ func WithEnableProfiling(profiling bool) ServerOption {
1010
}
1111
}
1212

13+
func WithServiceName(srvName string) ServerOption {
14+
return func(s *Server) {
15+
s.serviceName = srvName
16+
}
17+
}
18+
1319
func WithMode(mode string) ServerOption {
1420
return func(s *Server) {
1521
s.mode = mode

gmicro/server/restserver/server.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ type Server struct {
4848
trans ut.Translator
4949
// 将 http.Server 作为作为 Server 的一个属性,为了重写 gin 的 Run 方法 实现后续的优雅推出
5050
server *http.Server
51+
52+
//tracing 的服务名,默认为 restserver
53+
serviceName string
5154
}
5255

5356
func NewServer(opts ...ServerOption) *Server {

0 commit comments

Comments
 (0)