fork of https://github.com/sourcegraph/zoekt
1package tracer
2
3import (
4 "log"
5 "reflect"
6
7 "github.com/opentracing/opentracing-go"
8 sglog "github.com/sourcegraph/log"
9 "github.com/uber/jaeger-client-go"
10 jaegercfg "github.com/uber/jaeger-client-go/config"
11 jaegermetrics "github.com/uber/jaeger-lib/metrics"
12)
13
14func configureJaeger(resource sglog.Resource) (opentracing.Tracer, error) {
15 cfg, err := jaegercfg.FromEnv()
16 cfg.ServiceName = resource.Name
17 if err != nil {
18 return nil, err
19 }
20 cfg.Tags = append(
21 cfg.Tags,
22 opentracing.Tag{Key: "service.version", Value: resource.Version},
23 opentracing.Tag{Key: "service.instance.id", Value: resource.InstanceID},
24 )
25 if reflect.DeepEqual(cfg.Sampler, &jaegercfg.SamplerConfig{}) {
26 // Default sampler configuration for when it is not specified via
27 // JAEGER_SAMPLER_* env vars. In most cases, this is sufficient
28 // enough to connect to Jaeger without any env vars.
29 cfg.Sampler.Type = jaeger.SamplerTypeConst
30 cfg.Sampler.Param = 1 // 1 => enabled
31 }
32 tracer, _, err := cfg.NewTracer(
33 jaegercfg.Logger(&jaegerLogger{}),
34 jaegercfg.Metrics(jaegermetrics.NullFactory),
35 )
36 if err != nil {
37 return nil, err
38 }
39 return tracer, nil
40}
41
42type jaegerLogger struct{}
43
44func (l *jaegerLogger) Error(msg string) {
45 log.Printf("ERROR: %s", msg)
46}
47
48// Infof logs a message at info priority
49func (l *jaegerLogger) Infof(msg string, args ...interface{}) {
50 log.Printf(msg, args...)
51}