Skip to content

Commit c296998

Browse files
pavolloffayyurishkuro
authored andcommitted
Fix metrics handler registration in agent (#1178)
Signed-off-by: Pavol Loffay <ploffay@redhat.com>
1 parent d554283 commit c296998

File tree

6 files changed

+25
-28
lines changed

6 files changed

+25
-28
lines changed

cmd/agent/app/agent.go

+6
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@ func NewAgent(
4949
return a
5050
}
5151

52+
// GetServer returns HTTP server used by the agent.
53+
func (a *Agent) GetServer() *http.Server {
54+
return a.httpServer
55+
}
56+
5257
// Run runs all of agent UDP and HTTP servers in separate go-routines.
5358
// It returns an error when it's immediately apparent on startup, but
5459
// any errors happening after starting the servers are only logged.
@@ -60,6 +65,7 @@ func (a *Agent) Run() error {
6065
a.httpAddr.Store(listener.Addr().String())
6166
a.closer = listener
6267
go func() {
68+
a.logger.Info("Starting jaeger-agent HTTP server", zap.Int("http-port", listener.Addr().(*net.TCPAddr).Port))
6369
if err := a.httpServer.Serve(listener); err != nil {
6470
a.logger.Error("http server failure", zap.Error(err))
6571
}

cmd/agent/app/agent_test.go

+9-6
Original file line numberDiff line numberDiff line change
@@ -95,21 +95,24 @@ func withRunningAgent(t *testing.T, testcase func(string, chan error)) {
9595
HTTPServer: HTTPServerConfiguration{
9696
HostPort: ":0",
9797
},
98-
Metrics: jmetrics.Builder{
99-
Backend: "prometheus",
100-
HTTPRoute: "/metrics",
101-
},
10298
}
10399
logger, logBuf := testutils.NewLogger()
104-
f, _ := cfg.Metrics.CreateMetricsFactory("jaeger")
105-
agent, err := cfg.CreateAgent(fakeCollectorProxy{}, logger, f)
100+
//f, _ := cfg.Metrics.CreateMetricsFactory("jaeger")
101+
mBldr := &jmetrics.Builder{HTTPRoute: "/metrics", Backend: "prometheus"}
102+
mFactory, err := mBldr.CreateMetricsFactory("jaeger")
103+
require.NoError(t, err)
104+
agent, err := cfg.CreateAgent(fakeCollectorProxy{}, logger, mFactory)
106105
require.NoError(t, err)
107106
ch := make(chan error, 2)
108107
go func() {
109108
if err := agent.Run(); err != nil {
110109
t.Errorf("error from agent.Run(): %s", err)
111110
ch <- err
112111
}
112+
if h := mBldr.Handler(); mFactory != nil && h != nil {
113+
logger.Info("Registering metrics handler with HTTP server", zap.String("route", mBldr.HTTPRoute))
114+
agent.GetServer().Handler.(*http.ServeMux).Handle(mBldr.HTTPRoute, h)
115+
}
113116
close(ch)
114117
}()
115118

cmd/agent/app/builder.go

+3-9
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import (
2828
"github.com/jaegertracing/jaeger/cmd/agent/app/reporter"
2929
"github.com/jaegertracing/jaeger/cmd/agent/app/servers"
3030
"github.com/jaegertracing/jaeger/cmd/agent/app/servers/thriftudp"
31-
jmetrics "github.com/jaegertracing/jaeger/pkg/metrics"
3231
zipkinThrift "github.com/jaegertracing/jaeger/thrift-gen/agent"
3332
jaegerThrift "github.com/jaegertracing/jaeger/thrift-gen/jaeger"
3433
)
@@ -72,7 +71,6 @@ type CollectorProxy interface {
7271
type Builder struct {
7372
Processors []ProcessorConfiguration `yaml:"processors"`
7473
HTTPServer HTTPServerConfiguration `yaml:"httpServer"`
75-
Metrics jmetrics.Builder `yaml:"metrics"`
7674

7775
reporters []reporter.Reporter
7876
}
@@ -110,7 +108,7 @@ func (b *Builder) CreateAgent(primaryProxy CollectorProxy, logger *zap.Logger, m
110108
if err != nil {
111109
return nil, err
112110
}
113-
server := b.HTTPServer.getHTTPServer(primaryProxy.GetManager(), mFactory, &b.Metrics)
111+
server := b.HTTPServer.getHTTPServer(primaryProxy.GetManager(), mFactory)
114112
return NewAgent(processors, server, logger), nil
115113
}
116114

@@ -156,15 +154,11 @@ func (b *Builder) getProcessors(rep reporter.Reporter, mFactory metrics.Factory,
156154
}
157155

158156
// GetHTTPServer creates an HTTP server that provides sampling strategies and baggage restrictions to client libraries.
159-
func (c HTTPServerConfiguration) getHTTPServer(manager httpserver.ClientConfigManager, mFactory metrics.Factory, mBuilder *jmetrics.Builder) *http.Server {
157+
func (c HTTPServerConfiguration) getHTTPServer(manager httpserver.ClientConfigManager, mFactory metrics.Factory) *http.Server {
160158
if c.HostPort == "" {
161159
c.HostPort = defaultHTTPServerHostPort
162160
}
163-
server := httpserver.NewHTTPServer(c.HostPort, manager, mFactory)
164-
if h := mBuilder.Handler(); mFactory != nil && h != nil {
165-
server.Handler.(*http.ServeMux).Handle(mBuilder.HTTPRoute, h)
166-
}
167-
return server
161+
return httpserver.NewHTTPServer(c.HostPort, manager, mFactory)
168162
}
169163

170164
// GetThriftProcessor gets a TBufferedServer backed Processor using the collector configuration

cmd/agent/app/builder_test.go

-9
Original file line numberDiff line numberDiff line change
@@ -107,15 +107,6 @@ func TestBuilderWithExtraReporter(t *testing.T) {
107107
assert.NotNil(t, agent)
108108
}
109109

110-
func TestBuilderMetricsHandler(t *testing.T) {
111-
b := &Builder{}
112-
b.Metrics.Backend = "expvar"
113-
b.Metrics.HTTPRoute = "/expvar"
114-
agent, err := b.CreateAgent(fakeCollectorProxy{}, zap.NewNop(), metrics.NullFactory)
115-
assert.NoError(t, err)
116-
assert.NotNil(t, agent)
117-
}
118-
119110
func TestBuilderWithProcessorErrors(t *testing.T) {
120111
testCases := []struct {
121112
model Model

cmd/agent/app/flags.go

-2
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,6 @@ func AddFlags(flags *flag.FlagSet) {
5656

5757
// InitFromViper initializes Builder with properties retrieved from Viper.
5858
func (b *Builder) InitFromViper(v *viper.Viper) *Builder {
59-
b.Metrics.InitFromViper(v)
60-
6159
for _, processor := range defaultProcessors {
6260
prefix := fmt.Sprintf("processor.%s-%s.", processor.model, processor.protocol)
6361
p := &ProcessorConfiguration{Model: processor.model, Protocol: processor.protocol}

cmd/agent/main.go

+7-2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ package main
1717
import (
1818
"fmt"
1919
"io/ioutil"
20+
"net/http"
2021
"os"
2122

2223
"github.com/pkg/errors"
@@ -54,8 +55,7 @@ func main() {
5455
return err
5556
}
5657

57-
builder := &app.Builder{}
58-
builder.InitFromViper(v)
58+
builder := new(app.Builder).InitFromViper(v)
5959
mBldr := new(metrics.Builder).InitFromViper(v)
6060

6161
mFactory, err := mBldr.CreateMetricsFactory("jaeger")
@@ -79,6 +79,11 @@ func main() {
7979
return errors.Wrap(err, "Unable to initialize Jaeger Agent")
8080
}
8181

82+
if h := mBldr.Handler(); mFactory != nil && h != nil {
83+
logger.Info("Registering metrics handler with HTTP server", zap.String("route", mBldr.HTTPRoute))
84+
agent.GetServer().Handler.(*http.ServeMux).Handle(mBldr.HTTPRoute, h)
85+
}
86+
8287
logger.Info("Starting agent")
8388
if err := agent.Run(); err != nil {
8489
return errors.Wrap(err, "Failed to run the agent")

0 commit comments

Comments
 (0)