Skip to content

Commit 770a775

Browse files
move tracing (go-kratos#18)
1 parent e43f6b6 commit 770a775

File tree

4 files changed

+114
-124
lines changed

4 files changed

+114
-124
lines changed

.gitignore

+4
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,7 @@
1818
npm-debug.log*
1919
yarn-debug.log*
2020
yarn-error.log*
21+
.idea/*
22+
23+
24+
package-lock.json

docs/component/middleware/tracing.md

+110
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,113 @@ keywords:
1111
- gRPC
1212
- HTTP
1313
---
14+
### 配置
15+
Kratos tracing 中间件使用 opentelemetry 实现了链路追踪,分别实现了 client/server 的中间件并提供了 WithTracerProvider, WithPropagators 两个配置方法.
16+
17+
### WithTracerProvider
18+
19+
```go
20+
func WithTracerProvider(provider trace.TracerProvider) Option {
21+
return func(opts *options) {
22+
opts.TracerProvider = provider
23+
}
24+
}
25+
```
26+
27+
WithTracerProvider 用于设置 tracing 的链路追踪程序的提供者,该方法接收一个 trace.TracerProvider.
28+
29+
### WithPropagators
30+
31+
```go
32+
func WithPropagators(propagators propagation.TextMapPropagator) Option {
33+
return func(opts *options) {
34+
opts.Propagators = propagators
35+
}
36+
}
37+
```
38+
39+
40+
WithPropagators 用于设置 tracing 的文本映射的传播器,该方法接收一个 propagation.TextMapPropagator
41+
42+
### 使用方法
43+
44+
#### server 中使用 tracing 采集数据
45+
46+
```go
47+
package server
48+
49+
func initTracer() func() {
50+
// 创建一个 jaeger 的 pipeline,其他收集方式可以查看 opentelemetry 文档
51+
flush, err := jaeger.InstallNewPipeline(
52+
jaeger.WithCollectorEndpoint("http://localhost:14268/api/traces"),
53+
jaeger.WithSDKOptions(
54+
sdktrace.WithSampler(sdktrace.AlwaysSample()),
55+
sdktrace.WithResource(resource.NewWithAttributes(
56+
semconv.ServiceNameKey.String("kratos-trace"),
57+
attribute.String("exporter", "jaeger"),
58+
attribute.Float64("float", 312.23),
59+
)),
60+
),
61+
)
62+
if err != nil {
63+
log.Fatal(err)
64+
}
65+
return flush
66+
}
67+
// NewGRPCServer new a gRPC server.
68+
func NewGRPCServer(c *conf.Server, executor *service.ExecutorService) *grpc.Server {
69+
flush := initTracer()
70+
defer flush()
71+
//tr := otel.Tracer("component-main")
72+
var opts = []grpc.ServerOption{
73+
grpc.Middleware(
74+
middleware.Chain(
75+
tracing.Server(tracing.WithTracerProvider(otel.GetTracerProvider())),
76+
),
77+
),
78+
}
79+
// ...
80+
}
81+
```
82+
83+
#### client 中使用 tracing 采集数据
84+
85+
```go
86+
87+
func initTracer() func() {
88+
// 创建一个 jaeger 的 pipeline,其他收集方式可以查看 opentelemetry 文档
89+
flush, err := jaeger.InstallNewPipeline(
90+
jaeger.WithCollectorEndpoint("http://localhost:14268/api/traces"),
91+
jaeger.WithSDKOptions(
92+
sdktrace.WithSampler(sdktrace.AlwaysSample()),
93+
sdktrace.WithResource(resource.NewWithAttributes(
94+
semconv.ServiceNameKey.String("kratos-trace"),
95+
attribute.String("exporter", "jaeger"),
96+
attribute.Float64("float", 312.23),
97+
)),
98+
),
99+
)
100+
if err != nil {
101+
log.Fatal(err)
102+
}
103+
return flush
104+
}
105+
func grpcCli() (*grpc.ClientConn, error) {
106+
return grpc.DialInsecure(
107+
context.Background(),
108+
grpc.WithMiddleware(
109+
tracing.Client(
110+
tracing.WithTracerProvider(
111+
otel.GetTracerProvider(),
112+
),
113+
),
114+
),
115+
)
116+
}
117+
```
118+
119+
### References
120+
121+
* https://opentelemetry.io/
122+
* https://github.com/open-telemetry/opentelemetry-go/tree/main/example
123+
* https://pkg.go.dev/go.opentelemetry.io/otel

docs/component/tracing.md

-123
This file was deleted.

sidebars.js

-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ module.exports = {
2424
'component/config',
2525
'component/log',
2626
'component/metrics',
27-
'component/tracing',
2827
'component/registry',
2928
{
3029
type: 'category',

0 commit comments

Comments
 (0)