Skip to content
This repository was archived by the owner on Apr 30, 2025. It is now read-only.

Commit 93345ff

Browse files
mike-jcpeanball
authored andcommitted
refactor: get rid of multiple interfaces
1 parent 1114295 commit 93345ff

33 files changed

+1083
-1207
lines changed

handlers/httplatencyprometheus.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ import (
1010
)
1111

1212
type httpLatencyPrometheusHandler struct {
13-
reporter metrics.ProxyReporter
13+
reporter metrics.MetricReporter
1414
}
1515

1616
// NewHTTPLatencyPrometheus creates a new handler that handles prometheus metrics for latency
17-
func NewHTTPLatencyPrometheus(reporter metrics.ProxyReporter) negroni.Handler {
17+
func NewHTTPLatencyPrometheus(reporter metrics.MetricReporter) negroni.Handler {
1818
return &httpLatencyPrometheusHandler{
1919
reporter: reporter,
2020
}

handlers/httplatencyprometheus_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ var _ = Describe("Http Prometheus Latency", func() {
2424
resp http.ResponseWriter
2525
req *http.Request
2626

27-
fakeReporter *metrics_fakes.FakeProxyReporter
27+
fakeReporter *metrics_fakes.FakeMetricReporter
2828

2929
nextCalled bool
3030
)
@@ -34,7 +34,7 @@ var _ = Describe("Http Prometheus Latency", func() {
3434
req = test_util.NewRequest("GET", "example.com", "/", body)
3535
resp = httptest.NewRecorder()
3636

37-
fakeReporter = new(metrics_fakes.FakeProxyReporter)
37+
fakeReporter = new(metrics_fakes.FakeMetricReporter)
3838

3939
nextHandler = http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
4040
_, err := io.ReadAll(req.Body)

handlers/lookup.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ func (err InvalidProcessInstanceHeaderError) Error() string {
3636

3737
type lookupHandler struct {
3838
registry registry.Registry
39-
reporter metrics.ProxyReporter
39+
reporter metrics.MetricReporter
4040
logger *slog.Logger
4141
errorWriter errorwriter.ErrorWriter
4242
EmptyPoolResponseCode503 bool
@@ -45,7 +45,7 @@ type lookupHandler struct {
4545
// NewLookup creates a handler responsible for looking up a route.
4646
func NewLookup(
4747
registry registry.Registry,
48-
rep metrics.ProxyReporter,
48+
rep metrics.MetricReporter,
4949
logger *slog.Logger,
5050
ew errorwriter.ErrorWriter,
5151
emptyPoolResponseCode503 bool,

handlers/lookup_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ var _ = Describe("Lookup", func() {
2929
testSink *test_util.TestSink
3030
logger *slog.Logger
3131
reg *fakeRegistry.FakeRegistry
32-
rep *fakes.FakeProxyReporter
32+
rep *fakes.FakeMetricReporter
3333
resp *httptest.ResponseRecorder
3434
req *http.Request
3535
nextCalled bool
@@ -54,7 +54,7 @@ var _ = Describe("Lookup", func() {
5454
testSink = &test_util.TestSink{Buffer: gbytes.NewBuffer()}
5555
log.SetDynamicWriteSyncer(zapcore.NewMultiWriteSyncer(testSink, zapcore.AddSync(GinkgoWriter)))
5656
log.SetLoggingLevel("Debug")
57-
rep = &fakes.FakeProxyReporter{}
57+
rep = &fakes.FakeMetricReporter{}
5858
reg = &fakeRegistry.FakeRegistry{}
5959
handler = negroni.New()
6060
req = test_util.NewRequest("GET", "example.com", "/", nil)

handlers/reporter.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ import (
1414
)
1515

1616
type reporterHandler struct {
17-
reporter metrics.ProxyReporter
17+
reporter metrics.MetricReporter
1818
logger *slog.Logger
1919
}
2020

2121
// NewReporter creates a new handler that handles reporting backend
2222
// responses to metrics and missing Content-Length header
23-
func NewReporter(reporter metrics.ProxyReporter, logger *slog.Logger) negroni.Handler {
23+
func NewReporter(reporter metrics.MetricReporter, logger *slog.Logger) negroni.Handler {
2424
return &reporterHandler{
2525
reporter: reporter,
2626
logger: logger,

handlers/reporter_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ var _ = Describe("Reporter Handler", func() {
2626
resp http.ResponseWriter
2727
req *http.Request
2828

29-
fakeReporter *metrics_fakes.FakeProxyReporter
29+
fakeReporter *metrics_fakes.FakeMetricReporter
3030
logger *test_util.TestLogger
3131
prevHandler negroni.Handler
3232

@@ -38,7 +38,7 @@ var _ = Describe("Reporter Handler", func() {
3838
req = test_util.NewRequest("GET", "example.com", "/", body)
3939
resp = httptest.NewRecorder()
4040

41-
fakeReporter = new(metrics_fakes.FakeProxyReporter)
41+
fakeReporter = new(metrics_fakes.FakeMetricReporter)
4242
logger = test_util.NewTestLogger("test")
4343

4444
nextHandler = http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {

main.go

+15-33
Original file line numberDiff line numberDiff line change
@@ -128,42 +128,24 @@ func main() {
128128
dropReporter := initializeDropsondeReporter(prefix, logger, c)
129129
promReporter := initializePrometheusReporter(c)
130130

131-
routeRegistryReporters := make([]metrics.RouteRegistryReporter, 0)
131+
reporters := make([]metrics.MetricReporter, 0)
132132
if dropReporter != nil {
133-
routeRegistryReporters = append(routeRegistryReporters, dropReporter)
133+
reporters = append(reporters, dropReporter)
134134
}
135135
if promReporter != nil {
136-
routeRegistryReporters = append(routeRegistryReporters, promReporter)
136+
reporters = append(reporters, promReporter)
137137
}
138-
registryMetrics := metrics.NewMultiRouteRegistryReporter(routeRegistryReporters...)
138+
metricReporter := metrics.NewMultiMetricReporter(reporters...)
139139

140-
proxyReporters := make([]metrics.ProxyReporter, 0)
141-
if dropReporter != nil {
142-
proxyReporters = append(proxyReporters, dropReporter)
143-
}
144-
if promReporter != nil {
145-
proxyReporters = append(proxyReporters, promReporter)
146-
}
147-
proxyMetrics := metrics.NewMultiProxyReporter(proxyReporters...)
148-
149-
monitorReporters := make([]metrics.MonitorReporter, 0)
150-
if dropReporter != nil {
151-
monitorReporters = append(monitorReporters, dropReporter)
152-
}
153-
if promReporter != nil {
154-
monitorReporters = append(monitorReporters, promReporter)
155-
}
156-
monitorMetrics := metrics.NewMultiMonitorReporter(monitorReporters...)
157-
158-
registry := rregistry.NewRouteRegistry(grlog.CreateLoggerWithSource(prefix, "registry"), c, registryMetrics)
140+
registry := rregistry.NewRouteRegistry(grlog.CreateLoggerWithSource(prefix, "registry"), c, metricReporter)
159141
varz := rvarz.NewVarz(registry)
160-
compositeReporter := &metrics.CompositeReporter{VarzReporter: varz, ProxyReporter: proxyMetrics}
142+
compositeReporter := &metrics.CompositeReporter{VarzReporter: varz, MetricReporter: metricReporter}
161143

162144
if c.SuspendPruningIfNatsUnavailable {
163145
registry.SuspendPruning(func() bool { return !(natsClient.Status() == nats.CONNECTED) })
164146
}
165147

166-
fdMonitor := initializeFDMonitor(monitorMetrics, grlog.CreateLoggerWithSource(prefix, "FileDescriptor"))
148+
fdMonitor := initializeFDMonitor(metricReporter, grlog.CreateLoggerWithSource(prefix, "FileDescriptor"))
167149

168150
accessLogger, err := accesslog.CreateRunningAccessLogger(
169151
grlog.CreateLoggerWithSource(prefix, "access-grlog"),
@@ -261,7 +243,7 @@ func main() {
261243
}
262244

263245
subscriber := mbus.NewSubscriber(natsClient, registry, c, natsReconnected, grlog.CreateLoggerWithSource(prefix, "subscriber"))
264-
natsMonitor := initializeNATSMonitor(subscriber, monitorMetrics, grlog.CreateLoggerWithSource(prefix, "NATSMonitor"))
246+
natsMonitor := initializeNATSMonitor(subscriber, metricReporter, grlog.CreateLoggerWithSource(prefix, "NATSMonitor"))
265247

266248
members = append(members, grouper.Member{Name: "fdMonitor", Runner: fdMonitor})
267249
members = append(members, grouper.Member{Name: "subscriber", Runner: subscriber})
@@ -273,8 +255,8 @@ func main() {
273255
monitor := ifrit.Invoke(sigmon.New(group, syscall.SIGTERM, syscall.SIGINT, syscall.SIGUSR1))
274256

275257
go func() {
276-
time.Sleep(c.RouteLatencyMetricMuzzleDuration) // this way we avoid reporting metrics for pre-existing routes
277-
registryMetrics.UnmuzzleRouteRegistrationLatency() // Required for Envelope V1. Keep it while we have both Envelope V1 and Prometheus.
258+
time.Sleep(c.RouteLatencyMetricMuzzleDuration) // this way we avoid reporting metrics for pre-existing routes
259+
metricReporter.UnmuzzleRouteRegistrationLatency() // Required for Envelope V1. Keep it while we have both Envelope V1 and Prometheus.
278260
}()
279261

280262
<-monitor.Ready()
@@ -289,7 +271,7 @@ func main() {
289271
}
290272

291273
// initializeDropsondeReporter setups metrics via dropsonse if enabled
292-
func initializeDropsondeReporter(prefix string, logger *slog.Logger, c *config.Config) *metrics.MetricsReporter {
274+
func initializeDropsondeReporter(prefix string, logger *slog.Logger, c *config.Config) *metrics.Metrics {
293275
if !c.EnableEnvelopeV1Metrics {
294276
return nil
295277
}
@@ -310,14 +292,14 @@ func initializePrometheusReporter(c *config.Config) *metrics_prometheus.Metrics
310292
return metrics_prometheus.NewMetrics(promRegistry, c.PerRequestMetricsReporting, c.Prometheus.Meters)
311293
}
312294

313-
func initializeFDMonitor(reporter metrics.MultiMonitorReporter, logger *slog.Logger) *monitor.FileDescriptor {
295+
func initializeFDMonitor(reporter metrics.MetricReporter, logger *slog.Logger) *monitor.FileDescriptor {
314296
pid := os.Getpid()
315297
path := fmt.Sprintf("/proc/%d/fd", pid)
316298
ticker := time.NewTicker(time.Second * 5)
317299
return monitor.NewFileDescriptor(path, ticker, reporter, logger)
318300
}
319301

320-
func initializeNATSMonitor(subscriber *mbus.Subscriber, reporter metrics.MultiMonitorReporter, logger *slog.Logger) *monitor.NATSMonitor {
302+
func initializeNATSMonitor(subscriber *mbus.Subscriber, reporter metrics.MetricReporter, logger *slog.Logger) *monitor.NATSMonitor {
321303
ticker := time.NewTicker(time.Second * 5)
322304
return &monitor.NATSMonitor{
323305
Subscriber: subscriber,
@@ -327,7 +309,7 @@ func initializeNATSMonitor(subscriber *mbus.Subscriber, reporter metrics.MultiMo
327309
}
328310
}
329311

330-
func initializeMetrics(sender *metric_sender.MetricSender, c *config.Config, logger *slog.Logger) *metrics.MetricsReporter {
312+
func initializeMetrics(sender *metric_sender.MetricSender, c *config.Config, logger *slog.Logger) *metrics.Metrics {
331313
// 5 sec is dropsonde default batching interval
332314
batcher := metricbatcher.New(sender, 5*time.Second)
333315
batcher.AddConsistentlyEmittedMetrics("bad_gateways",
@@ -349,7 +331,7 @@ func initializeMetrics(sender *metric_sender.MetricSender, c *config.Config, log
349331
"websocket_upgrades",
350332
)
351333

352-
return &metrics.MetricsReporter{Sender: sender, Batcher: batcher, PerRequestMetricsReporting: c.PerRequestMetricsReporting, Logger: logger}
334+
return &metrics.Metrics{Sender: sender, Batcher: batcher, PerRequestMetricsReporting: c.PerRequestMetricsReporting, Logger: logger}
353335
}
354336

355337
func createCrypto(logger *slog.Logger, secret string) *secure.AesGCM {

0 commit comments

Comments
 (0)