diff --git a/pkg/metrics/prometheus.go b/pkg/metrics/prometheus.go index ffe236b94..491e6875b 100644 --- a/pkg/metrics/prometheus.go +++ b/pkg/metrics/prometheus.go @@ -229,8 +229,10 @@ func OnConfigurationUpdate(dynConf dynamic.Configurations, entryPoints []string) for serviceName, service := range config.HTTP.Services { dynamicConfig.services[fmt.Sprintf("%s@%s", serviceName, key)] = make(map[string]bool) - for _, server := range service.LoadBalancer.Servers { - dynamicConfig.services[fmt.Sprintf("%s@%s", serviceName, key)][server.URL] = true + if service.LoadBalancer != nil { + for _, server := range service.LoadBalancer.Servers { + dynamicConfig.services[fmt.Sprintf("%s@%s", serviceName, key)][server.URL] = true + } } } } diff --git a/pkg/metrics/prometheus_test.go b/pkg/metrics/prometheus_test.go index 13eb3e874..ccaf2e84b 100644 --- a/pkg/metrics/prometheus_test.go +++ b/pkg/metrics/prometheus_test.go @@ -291,6 +291,11 @@ func TestPrometheusMetricRemoval(t *testing.T) { th.WithLoadBalancerServices(th.WithService("bar", th.WithServers(th.WithServer("http://localhost:9000"))), ), + func(cfg *dynamic.HTTPConfiguration) { + cfg.Services["fii"] = &dynamic.Service{ + Weighted: &dynamic.WeightedRoundRobin{}, + } + }, ), }