From bcf784375b77aa61377eb6a4a872957053e21a1a Mon Sep 17 00:00:00 2001 From: bergquist Date: Mon, 18 Sep 2017 11:03:17 +0200 Subject: [PATCH] make it possible to configure sampler type --- conf/defaults.ini | 2 ++ conf/sample.ini | 2 ++ pkg/tracing/tracing.go | 14 +++++++++----- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/conf/defaults.ini b/conf/defaults.ini index 5eb3c358f44..5abd27e5c51 100644 --- a/conf/defaults.ini +++ b/conf/defaults.ini @@ -458,6 +458,8 @@ url = https://grafana.com address = # tag that will always be included in when creating new spans. ex (tag1:value1,tag2:value2) always_included_tag = +# Type specifies the type of the sampler: const, probabilistic, rateLimiting, or remote +sampler_type = const # jaeger samplerconfig param # for "const" sampler, 0 or 1 for always false/true respectively # for "probabilistic" sampler, a probability between 0 and 1 diff --git a/conf/sample.ini b/conf/sample.ini index e8394631a5c..076b9306d84 100644 --- a/conf/sample.ini +++ b/conf/sample.ini @@ -397,6 +397,8 @@ ;address = localhost:6831 # Tag that will always be included in when creating new spans. ex (tag1:value1,tag2:value2) ;always_included_tag = tag1:value1 +# Type specifies the type of the sampler: const, probabilistic, rateLimiting, or remote +;sampler_type = const # jaeger samplerconfig param # for "const" sampler, 0 or 1 for always false/true respectively # for "probabilistic" sampler, a probability between 0 and 1 diff --git a/pkg/tracing/tracing.go b/pkg/tracing/tracing.go index 010f5053b60..be81cd7e794 100644 --- a/pkg/tracing/tracing.go +++ b/pkg/tracing/tracing.go @@ -2,14 +2,12 @@ package tracing import ( "io" - "io/ioutil" "strings" "github.com/grafana/grafana/pkg/log" "github.com/grafana/grafana/pkg/setting" opentracing "github.com/opentracing/opentracing-go" - jaeger "github.com/uber/jaeger-client-go" jaegercfg "github.com/uber/jaeger-client-go/config" ini "gopkg.in/ini.v1" ) @@ -22,6 +20,7 @@ type TracingSettings struct { Enabled bool Address string CustomTags map[string]string + SamplerType string SamplerParam float64 } @@ -44,6 +43,7 @@ func parseSettings(file *ini.File) *TracingSettings { } settings.CustomTags = splitTagSettings(section.Key("always_included_tag").MustString("")) + settings.SamplerType = section.Key("sampler_type").MustString("") settings.SamplerParam = section.Key("sampler_param").MustFloat64(1) return settings @@ -51,13 +51,13 @@ func parseSettings(file *ini.File) *TracingSettings { func internalInit(settings *TracingSettings) (io.Closer, error) { if !settings.Enabled { - return ioutil.NopCloser(nil), nil + return &nullCloser{}, nil } cfg := jaegercfg.Configuration{ Disabled: !settings.Enabled, - Sampler: &jaegercfg.SamplerConfig{ //we currently only support SamplerConfig. Open an issue if you need another. - Type: jaeger.SamplerTypeConst, + Sampler: &jaegercfg.SamplerConfig{ + Type: settings.SamplerType, Param: settings.SamplerParam, }, Reporter: &jaegercfg.ReporterConfig{ @@ -110,3 +110,7 @@ func (jlw *jaegerLogWrapper) Error(msg string) { func (jlw *jaegerLogWrapper) Infof(msg string, args ...interface{}) { jlw.logger.Info(msg, args) } + +type nullCloser struct{} + +func (*nullCloser) Close() error { return nil }