You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
2.2 KiB

2 years ago
  1. package gomicro
  2. import (
  3. "gitea.baoapi.com/root/stu_uuos/config"
  4. log "github.com/micro/go-micro/v2/logger"
  5. "github.com/micro/go-micro/v2/server"
  6. ocplugin "github.com/micro/go-plugins/wrapper/trace/opentracing/v2"
  7. opentracing "github.com/opentracing/opentracing-go"
  8. "github.com/uber/jaeger-client-go"
  9. jaegercfg "github.com/uber/jaeger-client-go/config"
  10. jaegerlog "github.com/uber/jaeger-client-go/log"
  11. "github.com/uber/jaeger-client-go/rpcmetrics"
  12. "github.com/uber/jaeger-lib/metrics"
  13. "io"
  14. "time"
  15. )
  16. func NewTracerHandlerWrapper() server.HandlerWrapper {
  17. tracer, _, err := NewTracer(config.GetConfig().ServiceName, "") //"127.0.0.1:16686")
  18. if err != nil {
  19. log.Fatal(err)
  20. }
  21. return ocplugin.NewHandlerWrapper(tracer)
  22. }
  23. // NewTracer 创建一个jaeger Tracer
  24. func NewTracer(serviceName string, addr string) (opentracing.Tracer, io.Closer, error) {
  25. //os.Setenv("JAEGER_SERVICE_NAME", "not-effective")
  26. //cfg, err := jaegercfg.FromEnv()
  27. cfg := jaegercfg.Configuration{
  28. ServiceName: serviceName,
  29. Sampler: &jaegercfg.SamplerConfig{
  30. Type: jaeger.SamplerTypeConst,
  31. Param: 1,
  32. },
  33. Reporter: &jaegercfg.ReporterConfig{
  34. LogSpans: true,
  35. BufferFlushInterval: 1 * time.Second,
  36. //CollectorEndpoint :"http://192.168.0.111:14268/api/traces",
  37. //LocalAgentHostPort: "192.168.0.111:6831",
  38. },
  39. }
  40. jaegerLogger := jaegerlog.StdLogger
  41. metricsFactory := metrics.NullFactory
  42. //metricsFactory := jprom.New().Namespace(metrics.NSOptions{Name: serviceName, Tags: nil})
  43. //jaegerLogger := jaegerLoggerAdapter{log.With("serviceName", serviceName)}
  44. sender, err := jaeger.NewUDPTransport(addr, 0)
  45. if err != nil {
  46. return nil, nil, err
  47. }
  48. reporter := jaeger.NewRemoteReporter(sender)
  49. tracer, closer, err := cfg.NewTracer(
  50. jaegercfg.Logger(jaegerLogger),
  51. jaegercfg.Metrics(metricsFactory),
  52. jaegercfg.Reporter(reporter),
  53. jaegercfg.Observer(rpcmetrics.NewObserver(metricsFactory, rpcmetrics.DefaultNameNormalizer)),
  54. )
  55. if err != nil {
  56. log.Error("cannot initialize Jaeger Tracer", err)
  57. return nil, nil, err
  58. }
  59. /*defer func() {
  60. if err := closer.Close(); err != nil {
  61. log.Error(err)
  62. }
  63. }()*/
  64. opentracing.SetGlobalTracer(tracer)
  65. return tracer, closer, nil
  66. }