github.com/yinchengtsinghua/golang-Eos-dpos-Ethereum@v0.0.0-20190121132951-92cc4225ed8e/swarm/tracing/tracing.go (about) 1 2 //此源码被清华学神尹成大魔王专业翻译分析并修改 3 //尹成QQ77025077 4 //尹成微信18510341407 5 //尹成所在QQ群721929980 6 //尹成邮箱 yinc13@mails.tsinghua.edu.cn 7 //尹成毕业于清华大学,微软区块链领域全球最有价值专家 8 //https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 9 package tracing 10 11 import ( 12 "io" 13 "os" 14 "strings" 15 "time" 16 17 "github.com/ethereum/go-ethereum/log" 18 jaeger "github.com/uber/jaeger-client-go" 19 jaegercfg "github.com/uber/jaeger-client-go/config" 20 jaegerlog "github.com/uber/jaeger-client-go/log" 21 cli "gopkg.in/urfave/cli.v1" 22 ) 23 24 var Enabled bool = false 25 26 // 27 const TracingEnabledFlag = "tracing" 28 29 var ( 30 Closer io.Closer 31 ) 32 33 var ( 34 TracingFlag = cli.BoolFlag{ 35 Name: TracingEnabledFlag, 36 Usage: "Enable tracing", 37 } 38 TracingEndpointFlag = cli.StringFlag{ 39 Name: "tracing.endpoint", 40 Usage: "Tracing endpoint", 41 Value: "0.0.0.0:6831", 42 } 43 TracingSvcFlag = cli.StringFlag{ 44 Name: "tracing.svc", 45 Usage: "Tracing service name", 46 Value: "swarm", 47 } 48 ) 49 50 // 51 var Flags = []cli.Flag{ 52 TracingFlag, 53 TracingEndpointFlag, 54 TracingSvcFlag, 55 } 56 57 // 58 func init() { 59 for _, arg := range os.Args { 60 if flag := strings.TrimLeft(arg, "-"); flag == TracingEnabledFlag { 61 Enabled = true 62 } 63 } 64 } 65 66 func Setup(ctx *cli.Context) { 67 if Enabled { 68 log.Info("Enabling opentracing") 69 var ( 70 endpoint = ctx.GlobalString(TracingEndpointFlag.Name) 71 svc = ctx.GlobalString(TracingSvcFlag.Name) 72 ) 73 74 Closer = initTracer(endpoint, svc) 75 } 76 } 77 78 func initTracer(endpoint, svc string) (closer io.Closer) { 79 // 80 // 81 cfg := jaegercfg.Configuration{ 82 Sampler: &jaegercfg.SamplerConfig{ 83 Type: jaeger.SamplerTypeConst, 84 Param: 1, 85 }, 86 Reporter: &jaegercfg.ReporterConfig{ 87 LogSpans: true, 88 BufferFlushInterval: 1 * time.Second, 89 LocalAgentHostPort: endpoint, 90 }, 91 } 92 93 // 94 // 95 // 96 jLogger := jaegerlog.StdLogger 97 // 98 99 // 100 closer, err := cfg.InitGlobalTracer( 101 svc, 102 jaegercfg.Logger(jLogger), 103 // 104 // 105 ) 106 if err != nil { 107 log.Error("Could not initialize Jaeger tracer", "err", err) 108 } 109 110 return closer 111 }