Skip to content

Commit fe84288

Browse files
authored
Expose tunning options via expvar (#2496)
* Expose tunning options via expvar Always mount expvar /debug/vars handler regardless of chosen metrics backend. Store the following collector's options in expvar: - collector.num-workers - collector.queue-size Store the following agent's options in expvar: - processor.*.server-max-packet-size - processor.*.server-queue-size - processor.*.workers Signed-off-by: Daniil Rutskiy <dstdfx@gmail.com> * Code clean up Signed-off-by: Daniil Rutskiy <dstdfx@gmail.com> * Fix tunning options exposion Put expvar logic into private funcs of builders. Use different values in tests. Signed-off-by: Daniil Rutskiy <dstdfx@gmail.com> * Expose additional storage options Store following storage-related options in expvar: - memory.max-traces - downsampling.ratio Signed-off-by: Daniil Rutskiy <dstdfx@gmail.com> * Call setExpvarOptions method inside Initialize Signed-off-by: Daniil Rutskiy <dstdfx@gmail.com> * Add span-storage.type options Signed-off-by: Daniil Rutskiy <dstdfx@gmail.com> * Fix test and expvar type Signed-off-by: Daniil Rutskiy <dstdfx@gmail.com> * Fix falling test Signed-off-by: Daniil Rutskiy <dstdfx@gmail.com> * Use fork.Factory to store internal options Delete direct expvar calls. Vendor latest jaeger-lib. Signed-off-by: Daniil Rutskiy <dstdfx@gmail.com> * Fix factory init, rename opts func Signed-off-by: Daniil Rutskiy <dstdfx@gmail.com> * Update jaeger-lib to v2.4.0 Signed-off-by: Daniil Rutskiy <dstdfx@gmail.com> * Clean deps Signed-off-by: Daniil Rutskiy <dstdfx@gmail.com>
1 parent 4f3b832 commit fe84288

19 files changed

+212
-12
lines changed

cmd/agent/app/agent_test.go

+5-2
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
"github.com/stretchr/testify/assert"
2828
"github.com/stretchr/testify/require"
2929
"github.com/uber/jaeger-lib/metrics"
30+
"github.com/uber/jaeger-lib/metrics/fork"
3031
"go.uber.org/zap"
3132

3233
jmetrics "github.com/jaegertracing/jaeger/pkg/metrics"
@@ -100,7 +101,8 @@ func withRunningAgent(t *testing.T, testcase func(string, chan error)) {
100101
}
101102
logger, logBuf := testutils.NewLogger()
102103
mBldr := &jmetrics.Builder{HTTPRoute: "/metrics", Backend: "prometheus"}
103-
mFactory, err := mBldr.CreateMetricsFactory("jaeger")
104+
metricsFactory, err := mBldr.CreateMetricsFactory("jaeger")
105+
mFactory := fork.New("internal", metrics.NullFactory, metricsFactory)
104106
require.NoError(t, err)
105107
agent, err := cfg.CreateAgent(fakeCollectorProxy{}, logger, mFactory)
106108
require.NoError(t, err)
@@ -162,7 +164,8 @@ func TestStartStopRace(t *testing.T) {
162164
}
163165
logger, logBuf := testutils.NewLogger()
164166
mBldr := &jmetrics.Builder{HTTPRoute: "/metrics", Backend: "prometheus"}
165-
mFactory, err := mBldr.CreateMetricsFactory("jaeger")
167+
metricsFactory, err := mBldr.CreateMetricsFactory("jaeger")
168+
mFactory := fork.New("internal", metrics.NullFactory, metricsFactory)
166169
require.NoError(t, err)
167170
agent, err := cfg.CreateAgent(fakeCollectorProxy{}, logger, mFactory)
168171
require.NoError(t, err)

cmd/agent/app/builder.go

+15
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,8 @@ func (b *Builder) CreateAgent(primaryProxy CollectorProxy, logger *zap.Logger, m
112112
return nil, fmt.Errorf("cannot create processors: %w", err)
113113
}
114114
server := b.HTTPServer.getHTTPServer(primaryProxy.GetManager(), mFactory)
115+
b.publishOpts(mFactory)
116+
115117
return NewAgent(processors, server, logger), nil
116118
}
117119

@@ -127,6 +129,19 @@ func (b *Builder) getReporter(primaryProxy CollectorProxy) reporter.Reporter {
127129
return reporter.NewMultiReporter(rep...)
128130
}
129131

132+
func (b *Builder) publishOpts(mFactory metrics.Factory) {
133+
internalFactory := mFactory.Namespace(metrics.NSOptions{Name: "internal"})
134+
for _, p := range b.Processors {
135+
prefix := fmt.Sprintf(processorPrefixFmt, p.Model, p.Protocol)
136+
internalFactory.Gauge(metrics.Options{Name: prefix + suffixServerMaxPacketSize}).
137+
Update(int64(p.Server.MaxPacketSize))
138+
internalFactory.Gauge(metrics.Options{Name: prefix + suffixServerQueueSize}).
139+
Update(int64(p.Server.QueueSize))
140+
internalFactory.Gauge(metrics.Options{Name: prefix + suffixWorkers}).
141+
Update(int64(p.Workers))
142+
}
143+
}
144+
130145
func (b *Builder) getProcessors(rep reporter.Reporter, mFactory metrics.Factory, logger *zap.Logger) ([]processors.Processor, error) {
131146
retMe := make([]processors.Processor, len(b.Processors))
132147
for idx, cfg := range b.Processors {

cmd/agent/app/builder_test.go

+40
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929
"github.com/stretchr/testify/assert"
3030
"github.com/stretchr/testify/require"
3131
"github.com/uber/jaeger-lib/metrics"
32+
"github.com/uber/jaeger-lib/metrics/fork"
3233
"github.com/uber/jaeger-lib/metrics/metricstest"
3334
"go.uber.org/zap"
3435
yaml "gopkg.in/yaml.v2"
@@ -277,3 +278,42 @@ func TestCreateCollectorProxy_UnknownReporter(t *testing.T) {
277278
assert.Nil(t, proxy)
278279
assert.EqualError(t, err, "unknown reporter type ")
279280
}
281+
282+
func TestPublishOpts(t *testing.T) {
283+
v := viper.New()
284+
cfg := &Builder{}
285+
command := cobra.Command{}
286+
flags := &flag.FlagSet{}
287+
AddFlags(flags)
288+
command.PersistentFlags().AddGoFlagSet(flags)
289+
v.BindPFlags(command.PersistentFlags())
290+
err := command.ParseFlags([]string{
291+
"--http-server.host-port=:8080",
292+
"--processor.jaeger-binary.server-host-port=:1111",
293+
"--processor.jaeger-binary.server-max-packet-size=4242",
294+
"--processor.jaeger-binary.server-queue-size=24",
295+
"--processor.jaeger-binary.workers=42",
296+
})
297+
require.NoError(t, err)
298+
cfg.InitFromViper(v)
299+
300+
baseMetrics := metricstest.NewFactory(time.Second)
301+
forkFactory := metricstest.NewFactory(time.Second)
302+
metricsFactory := fork.New("internal", forkFactory, baseMetrics)
303+
agent, err := cfg.CreateAgent(fakeCollectorProxy{}, zap.NewNop(), metricsFactory)
304+
assert.NoError(t, err)
305+
assert.NotNil(t, agent)
306+
307+
forkFactory.AssertGaugeMetrics(t, metricstest.ExpectedMetric{
308+
Name: "internal.processor.jaeger-binary.server-max-packet-size",
309+
Value: 4242,
310+
})
311+
forkFactory.AssertGaugeMetrics(t, metricstest.ExpectedMetric{
312+
Name: "internal.processor.jaeger-binary.server-queue-size",
313+
Value: 24,
314+
})
315+
forkFactory.AssertGaugeMetrics(t, metricstest.ExpectedMetric{
316+
Name: "internal.processor.jaeger-binary.workers",
317+
Value: 42,
318+
})
319+
}

cmd/agent/app/flags.go

+5-2
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ const (
3131
suffixServerMaxPacketSize = "server-max-packet-size"
3232
suffixServerSocketBufferSize = "server-socket-buffer-size"
3333
suffixServerHostPort = "server-host-port"
34+
35+
processorPrefixFmt = "processor.%s-%s."
36+
3437
// HTTPServerHostPort is the flag for HTTP endpoint
3538
HTTPServerHostPort = "http-server.host-port"
3639
)
@@ -48,7 +51,7 @@ var defaultProcessors = []struct {
4851
// AddFlags adds flags for Builder.
4952
func AddFlags(flags *flag.FlagSet) {
5053
for _, p := range defaultProcessors {
51-
prefix := fmt.Sprintf("processor.%s-%s.", p.model, p.protocol)
54+
prefix := fmt.Sprintf(processorPrefixFmt, p.model, p.protocol)
5255
flags.Int(prefix+suffixWorkers, defaultServerWorkers, "how many workers the processor should run")
5356
flags.Int(prefix+suffixServerQueueSize, defaultQueueSize, "length of the queue for the UDP server")
5457
flags.Int(prefix+suffixServerMaxPacketSize, defaultMaxPacketSize, "max packet size for the UDP server")
@@ -69,7 +72,7 @@ func AddOTELFlags(flags *flag.FlagSet) {
6972
// InitFromViper initializes Builder with properties retrieved from Viper.
7073
func (b *Builder) InitFromViper(v *viper.Viper) *Builder {
7174
for _, processor := range defaultProcessors {
72-
prefix := fmt.Sprintf("processor.%s-%s.", processor.model, processor.protocol)
75+
prefix := fmt.Sprintf(processorPrefixFmt, processor.model, processor.protocol)
7376
p := &ProcessorConfiguration{Model: processor.model, Protocol: processor.protocol}
7477
p.Workers = v.GetInt(prefix + suffixWorkers)
7578
p.Server.QueueSize = v.GetInt(prefix + suffixServerQueueSize)

cmd/agent/main.go

+7-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ import (
2222
"github.com/spf13/cobra"
2323
"github.com/spf13/viper"
2424
"github.com/uber/jaeger-lib/metrics"
25+
jexpvar "github.com/uber/jaeger-lib/metrics/expvar"
26+
"github.com/uber/jaeger-lib/metrics/fork"
2527
_ "go.uber.org/automaxprocs"
2628
"go.uber.org/zap"
2729

@@ -49,9 +51,12 @@ func main() {
4951
return err
5052
}
5153
logger := svc.Logger // shortcut
52-
mFactory := svc.MetricsFactory.
54+
baseFactory := svc.MetricsFactory.
5355
Namespace(metrics.NSOptions{Name: "jaeger"}).
5456
Namespace(metrics.NSOptions{Name: "agent"})
57+
mFactory := fork.New("internal",
58+
jexpvar.NewFactory(10), // backend for internal opts
59+
baseFactory)
5560

5661
rOpts := new(reporter.Options).InitFromViper(v, logger)
5762
grpcBuilder := grpc.NewConnBuilder().InitFromViper(v)
@@ -79,6 +84,7 @@ func main() {
7984
if err := agent.Run(); err != nil {
8085
return fmt.Errorf("failed to run the agent: %w", err)
8186
}
87+
8288
svc.RunAndThen(func() {
8389
agent.Stop()
8490
cp.Close()

cmd/all-in-one/main.go

+6-1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ import (
2727
jaegerClientConfig "github.com/uber/jaeger-client-go/config"
2828
jaegerClientZapLog "github.com/uber/jaeger-client-go/log/zap"
2929
"github.com/uber/jaeger-lib/metrics"
30+
jexpvar "github.com/uber/jaeger-lib/metrics/expvar"
31+
"github.com/uber/jaeger-lib/metrics/fork"
3032
_ "go.uber.org/automaxprocs"
3133
"go.uber.org/zap"
3234

@@ -81,7 +83,10 @@ by default uses only in-memory database.`,
8183
}
8284
logger := svc.Logger // shortcut
8385
rootMetricsFactory := svc.MetricsFactory // shortcut
84-
metricsFactory := rootMetricsFactory.Namespace(metrics.NSOptions{Name: "jaeger"})
86+
metricsFactory := fork.New("internal",
87+
jexpvar.NewFactory(10), // backend for internal opts
88+
rootMetricsFactory.Namespace(metrics.NSOptions{Name: "jaeger"}))
89+
8590
tracerCloser := initTracer(rootMetricsFactory, svc.Logger)
8691

8792
storageFactory.InitFromViper(v)

cmd/collector/app/builder_flags.go

+1
Original file line numberDiff line numberDiff line change
@@ -116,5 +116,6 @@ func (cOpts *CollectorOptions) InitFromViper(v *viper.Viper) *CollectorOptions {
116116
cOpts.CollectorZipkinAllowedOrigins = v.GetString(collectorZipkinAllowedOrigins)
117117
cOpts.CollectorZipkinAllowedHeaders = v.GetString(collectorZipkinAllowedHeaders)
118118
cOpts.TLS = tlsFlagsConfig.InitFromViper(v)
119+
119120
return cOpts
120121
}

cmd/collector/app/collector.go

+7
Original file line numberDiff line numberDiff line change
@@ -122,10 +122,17 @@ func (c *Collector) Start(builderOpts *CollectorOptions) error {
122122
} else {
123123
c.zkServer = zkServer
124124
}
125+
c.publishOpts(builderOpts)
125126

126127
return nil
127128
}
128129

130+
func (c *Collector) publishOpts(cOpts *CollectorOptions) {
131+
internalFactory := c.metricsFactory.Namespace(metrics.NSOptions{Name: "internal"})
132+
internalFactory.Gauge(metrics.Options{Name: collectorNumWorkers}).Update(int64(cOpts.NumWorkers))
133+
internalFactory.Gauge(metrics.Options{Name: collectorQueueSize}).Update(int64(cOpts.QueueSize))
134+
}
135+
129136
// Close the component and all its underlying dependencies
130137
func (c *Collector) Close() error {
131138
// gRPC server

cmd/collector/app/collector_test.go

+37
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"time"
2222

2323
"github.com/stretchr/testify/assert"
24+
"github.com/uber/jaeger-lib/metrics/fork"
2425
"github.com/uber/jaeger-lib/metrics/metricstest"
2526
"go.uber.org/zap"
2627

@@ -61,3 +62,39 @@ type mockStrategyStore struct {
6162
func (m *mockStrategyStore) GetSamplingStrategy(_ context.Context, serviceName string) (*sampling.SamplingStrategyResponse, error) {
6263
return &sampling.SamplingStrategyResponse{}, nil
6364
}
65+
66+
func TestCollector_PublishOpts(t *testing.T) {
67+
// prepare
68+
hc := healthcheck.New()
69+
logger := zap.NewNop()
70+
baseMetrics := metricstest.NewFactory(time.Second)
71+
forkFactory := metricstest.NewFactory(time.Second)
72+
metricsFactory := fork.New("internal", forkFactory, baseMetrics)
73+
spanWriter := &fakeSpanWriter{}
74+
strategyStore := &mockStrategyStore{}
75+
76+
c := New(&CollectorParams{
77+
ServiceName: "collector",
78+
Logger: logger,
79+
MetricsFactory: metricsFactory,
80+
SpanWriter: spanWriter,
81+
StrategyStore: strategyStore,
82+
HealthCheck: hc,
83+
})
84+
collectorOpts := &CollectorOptions{
85+
NumWorkers: 24,
86+
QueueSize: 42,
87+
}
88+
89+
c.Start(collectorOpts)
90+
defer c.Close()
91+
92+
forkFactory.AssertGaugeMetrics(t, metricstest.ExpectedMetric{
93+
Name: "internal.collector.num-workers",
94+
Value: 24,
95+
})
96+
forkFactory.AssertGaugeMetrics(t, metricstest.ExpectedMetric{
97+
Name: "internal.collector.queue-size",
98+
Value: 42,
99+
})
100+
}

cmd/collector/main.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ import (
2424
"github.com/spf13/cobra"
2525
"github.com/spf13/viper"
2626
"github.com/uber/jaeger-lib/metrics"
27+
jexpvar "github.com/uber/jaeger-lib/metrics/expvar"
28+
"github.com/uber/jaeger-lib/metrics/fork"
2729
_ "go.uber.org/automaxprocs"
2830
"go.uber.org/zap"
2931

@@ -63,7 +65,9 @@ func main() {
6365
}
6466
logger := svc.Logger // shortcut
6567
baseFactory := svc.MetricsFactory.Namespace(metrics.NSOptions{Name: "jaeger"})
66-
metricsFactory := baseFactory.Namespace(metrics.NSOptions{Name: "collector"})
68+
metricsFactory := fork.New("internal",
69+
jexpvar.NewFactory(10), // backend for internal opts
70+
baseFactory.Namespace(metrics.NSOptions{Name: "collector"}))
6771

6872
storageFactory.InitFromViper(v)
6973
if err := storageFactory.Initialize(baseFactory, logger); err != nil {

cmd/flags/service.go

+8
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
package flags
1616

1717
import (
18+
"expvar"
1819
"flag"
1920
"fmt"
2021
"os"
@@ -116,6 +117,13 @@ func (s *Service) Start(v *viper.Viper) error {
116117
s.Logger.Info("Mounting metrics handler on admin server", zap.String("route", route))
117118
s.Admin.Handle(route, h)
118119
}
120+
121+
// Mount expvar routes on different backends
122+
if metricsBuilder.Backend != "expvar" {
123+
s.Logger.Info("Mounting expvar handler on admin server", zap.String("route", "/debug/vars"))
124+
s.Admin.Handle("/debug/vars", expvar.Handler())
125+
}
126+
119127
if err := s.Admin.Serve(); err != nil {
120128
return fmt.Errorf("cannot start the admin server: %w", err)
121129
}

cmd/opentelemetry/go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ require (
1515
github.com/spf13/viper v1.7.1
1616
github.com/stretchr/testify v1.6.1
1717
github.com/uber/jaeger-client-go v2.25.0+incompatible
18-
github.com/uber/jaeger-lib v2.2.0+incompatible
18+
github.com/uber/jaeger-lib v2.3.1-0.20200925164221-2cac3b34a519+incompatible
1919
go.opencensus.io v0.22.4
2020
go.opentelemetry.io/collector v0.10.1-0.20200917170114-639b9a80ed46
2121
go.uber.org/zap v1.16.0

cmd/opentelemetry/go.sum

+3
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ github.com/DataDog/zstd v1.3.6-0.20190409195224-796139022798/go.mod h1:1jcaCB/uf
7676
github.com/DataDog/zstd v1.4.4/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo=
7777
github.com/Djarvur/go-err113 v0.0.0-20200511133814-5174e21577d5 h1:XTrzB+F8+SpRmbhAH8HLxhiiG6nYNwaBZjrFps1oWEk=
7878
github.com/Djarvur/go-err113 v0.0.0-20200511133814-5174e21577d5/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs=
79+
github.com/HdrHistogram/hdrhistogram-go v0.9.0/go.mod h1:nxrse8/Tzg2tg3DZcZjm6qEclQKK70g0KxO61gFFZD4=
7980
github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
8081
github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww=
8182
github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
@@ -1109,6 +1110,8 @@ github.com/uber/jaeger-client-go v2.25.0+incompatible h1:IxcNZ7WRY1Y3G4poYlx24sz
11091110
github.com/uber/jaeger-client-go v2.25.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk=
11101111
github.com/uber/jaeger-lib v2.2.0+incompatible h1:MxZXOiR2JuoANZ3J6DE/U0kSFv/eJ/GfSYVCjK7dyaw=
11111112
github.com/uber/jaeger-lib v2.2.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U=
1113+
github.com/uber/jaeger-lib v2.3.1-0.20200925164221-2cac3b34a519+incompatible h1:pif0W8e7IYk2xPZ/KYV8kqDP9aKsUJ/isUON9dDXkVE=
1114+
github.com/uber/jaeger-lib v2.3.1-0.20200925164221-2cac3b34a519+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U=
11121115
github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc=
11131116
github.com/ultraware/funlen v0.0.3 h1:5ylVWm8wsNwH5aWo9438pwvsK0QiqVuUrt9bn7S/iLA=
11141117
github.com/ultraware/funlen v0.0.3/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA=

go.mod

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ go 1.14
55
require (
66
github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96 // indirect
77
github.com/DataDog/zstd v1.4.4 // indirect
8+
github.com/HdrHistogram/hdrhistogram-go v0.9.0 // indirect
89
github.com/Shopify/sarama v1.22.2-0.20190604114437-cd910a683f9f
910
github.com/apache/thrift v0.13.0
1011
github.com/bsm/sarama-cluster v2.1.13+incompatible
@@ -66,7 +67,7 @@ require (
6667
github.com/spf13/viper v1.6.2
6768
github.com/stretchr/testify v1.5.1
6869
github.com/uber/jaeger-client-go v2.23.1+incompatible
69-
github.com/uber/jaeger-lib v2.2.0+incompatible
70+
github.com/uber/jaeger-lib v2.4.0+incompatible
7071
github.com/vektra/mockery v0.0.0-20181123154057-e78b021dcbb5
7172
github.com/wadey/gocovmerge v0.0.0-20160331181800-b5bfa59ec0ad
7273
go.mongodb.org/mongo-driver v1.3.2 // indirect

go.sum

+4-2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03
77
github.com/DataDog/zstd v1.3.6-0.20190409195224-796139022798/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo=
88
github.com/DataDog/zstd v1.4.4 h1:+IawcoXhCBylN7ccwdwf8LOH2jKq7NavGpEPanrlTzE=
99
github.com/DataDog/zstd v1.4.4/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo=
10+
github.com/HdrHistogram/hdrhistogram-go v0.9.0 h1:dpujRju0R4M/QZzcnR1LH1qm+TVG3UzkWdp5tH1WMcg=
11+
github.com/HdrHistogram/hdrhistogram-go v0.9.0/go.mod h1:nxrse8/Tzg2tg3DZcZjm6qEclQKK70g0KxO61gFFZD4=
1012
github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
1113
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
1214
github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
@@ -560,8 +562,8 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1
560562
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
561563
github.com/uber/jaeger-client-go v2.23.1+incompatible h1:uArBYHQR0HqLFFAypI7RsWTzPSj/bDpmZZuQjMLSg1A=
562564
github.com/uber/jaeger-client-go v2.23.1+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk=
563-
github.com/uber/jaeger-lib v2.2.0+incompatible h1:MxZXOiR2JuoANZ3J6DE/U0kSFv/eJ/GfSYVCjK7dyaw=
564-
github.com/uber/jaeger-lib v2.2.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U=
565+
github.com/uber/jaeger-lib v2.4.0+incompatible h1:fY7QsGQWiCt8pajv4r7JEvmATdCVaWxXbjwyYwsNaLQ=
566+
github.com/uber/jaeger-lib v2.4.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U=
565567
github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc=
566568
github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
567569
github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=

plugin/storage/factory.go

+11
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ const (
4646
badgerStorageType = "badger"
4747
downsamplingRatio = "downsampling.ratio"
4848
downsamplingHashSalt = "downsampling.hashsalt"
49+
spanStorageType = "span-storage-type"
4950

5051
// defaultDownsamplingRatio is the default downsampling ratio.
5152
defaultDownsamplingRatio = 1.0
@@ -111,6 +112,8 @@ func (f *Factory) Initialize(metricsFactory metrics.Factory, logger *zap.Logger)
111112
return err
112113
}
113114
}
115+
f.publishOpts()
116+
114117
return nil
115118
}
116119

@@ -249,3 +252,11 @@ func (f *Factory) Close() error {
249252
}
250253
return multierror.Wrap(errs)
251254
}
255+
256+
func (f *Factory) publishOpts() {
257+
internalFactory := f.metricsFactory.Namespace(metrics.NSOptions{Name: "internal"})
258+
internalFactory.Gauge(metrics.Options{Name: downsamplingRatio}).
259+
Update(int64(f.FactoryConfig.DownsamplingRatio))
260+
internalFactory.Gauge(metrics.Options{Name: spanStorageType + "-" + f.SpanReaderType}).
261+
Update(1)
262+
}

0 commit comments

Comments
 (0)