jaeger 使用示例
使用docker-compose搭建
version: '3'
services:
jaeger:
container_name: jaegert
image: jaegertracing/all-in-one:latest
ports:
- 5775:5775/udp
- 6831:6831/udp
- 6832:6832/udp
- 5778:5778
- 16686:16686
- 14268:14268
- 14250:14250
- 9411:9411
启动
docker-compose up
该项目为jaeger demo
package main
import (
"context"
"fmt"
"github.com/opentracing/opentracing-go"
"github.com/opentracing/opentracing-go/log"
"github.com/pkg/errors"
"github.com/uber/jaeger-client-go"
"github.com/uber/jaeger-client-go/config"
"io"
"time"
)
func InitJaeger(service string) (opentracing.Tracer, io.Closer) {
cfg := &config.Configuration{
ServiceName: service,
Sampler: &config.SamplerConfig{
Type: jaeger.SamplerTypeConst,
Param: 1,
},
Reporter: &config.ReporterConfig{
LogSpans: true,
LocalAgentHostPort: "127.0.0.1:6831",
},
}
tracer, closer, err := cfg.NewTracer(config.Logger(jaeger.StdLogger))
if err != nil {
panic(errors.Wrap(err, "jaeger set config fail"))
}
return tracer, closer
}
func main() {
tracer, closer := InitJaeger("demo-with-multi")
defer closer.Close()
opentracing.InitGlobalTracer(tracer)
helloStr := "hello jaeger"
span := tracer.StartSpan("say-hello")
span.SetTag("value", helloStr)
span.LogFields(
log.String("event", "sayhello"),
log.String("value", helloStr),
)
time.Sleep(time.Millisecond * 2)
fmt.Println(helloStr)
span.Finish()
}
见 tracer
- service_a 服务为http层, 为接口层
- service_b 服务为grpc层, 为逻辑层
- service_c 服务为数据操纵层, 为数据库层