@@ -39,7 +39,7 @@ import (
39
39
svcnegv1beta1 "k8s.io/ingress-gce/pkg/apis/svcneg/v1beta1"
40
40
"k8s.io/ingress-gce/pkg/controller/translator"
41
41
"k8s.io/ingress-gce/pkg/flags"
42
- "k8s.io/ingress-gce/pkg/neg/metrics"
42
+ metrics "k8s.io/ingress-gce/pkg/neg/metrics"
43
43
"k8s.io/ingress-gce/pkg/neg/metrics/metricscollector"
44
44
syncMetrics "k8s.io/ingress-gce/pkg/neg/metrics/metricscollector"
45
45
"k8s.io/ingress-gce/pkg/neg/readiness"
@@ -118,6 +118,9 @@ type Controller struct {
118
118
119
119
stopCh <- chan struct {}
120
120
logger klog.Logger
121
+
122
+ // negMetrics is used to collect metrics for NEG
123
+ negMetrics * metrics.NegMetrics
121
124
}
122
125
123
126
// NewController returns a network endpoint group controller.
@@ -155,6 +158,7 @@ func NewController(
155
158
readOnlyMode bool ,
156
159
stopCh <- chan struct {},
157
160
logger klog.Logger ,
161
+ negMetrics * metrics.NegMetrics ,
158
162
) (* Controller , error ) {
159
163
if svcNegClient == nil {
160
164
return nil , fmt .Errorf ("svcNegClient is nil" )
@@ -170,17 +174,18 @@ func NewController(
170
174
err := scheme .AddToScheme (negScheme )
171
175
if err != nil {
172
176
logger .Error (err , "Errored adding default scheme to event recorder" )
173
- metrics .PublishNegControllerErrorCountMetrics (err , true )
177
+ negMetrics .PublishNegControllerErrorCountMetrics (err , true )
174
178
}
175
179
err = svcnegv1beta1 .AddToScheme (negScheme )
176
180
if err != nil {
177
181
logger .Error (err , "Errored adding NEG CRD scheme to event recorder" )
178
- metrics .PublishNegControllerErrorCountMetrics (err , true )
182
+ negMetrics .PublishNegControllerErrorCountMetrics (err , true )
179
183
}
180
184
recorder := eventBroadcaster .NewRecorder (negScheme ,
181
185
apiv1.EventSource {Component : "neg-controller" })
182
186
183
- syncerMetrics := syncMetrics .NewNegMetricsCollector (flags .F .NegMetricsExportInterval , logger )
187
+ syncerMetrics := syncMetrics .NewNegMetricsCollector (flags .F .NegMetricsExportInterval , logger , negMetrics .ProviderConfigID )
188
+
184
189
manager := newSyncerManager (
185
190
namer ,
186
191
l4Namer ,
@@ -199,7 +204,9 @@ func NewController(
199
204
enableDualStackNEG ,
200
205
numGCWorkers ,
201
206
lpConfig ,
202
- logger )
207
+ logger ,
208
+ negMetrics ,
209
+ )
203
210
204
211
var reflector readiness.Reflector
205
212
if enableReadinessReflector {
@@ -213,6 +220,7 @@ func NewController(
213
220
enableDualStackNEG ,
214
221
flags .F .EnableMultiSubnetCluster && ! flags .F .EnableMultiSubnetClusterPhase1 ,
215
222
logger ,
223
+ negMetrics ,
216
224
)
217
225
} else {
218
226
reflector = & readiness.NoopReflector {}
@@ -255,6 +263,7 @@ func NewController(
255
263
readOnlyMode : readOnlyMode ,
256
264
stopCh : stopCh ,
257
265
logger : logger ,
266
+ negMetrics : negMetrics ,
258
267
}
259
268
if enableMultiSubnetClusterPhase1 {
260
269
negController .nodeTopologyQueue = workqueue .NewNamedRateLimitingQueue (workqueue .DefaultControllerRateLimiter (), "neg_node_topology_queue" )
@@ -485,7 +494,7 @@ func (c *Controller) processEndpoint(key string) {
485
494
namespace , name , err := cache .SplitMetaNamespaceKey (key )
486
495
if err != nil {
487
496
c .logger .Error (err , "Failed to split endpoint namespaced key" , "key" , key )
488
- metrics .PublishNegControllerErrorCountMetrics (err , true )
497
+ c . negMetrics .PublishNegControllerErrorCountMetrics (err , true )
489
498
return
490
499
}
491
500
c .manager .Sync (namespace , name )
@@ -501,7 +510,7 @@ func (c *Controller) serviceWorker() {
501
510
defer c .serviceQueue .Done (key )
502
511
err := c .processService (key .(string ))
503
512
c .handleErr (err , key )
504
- metrics .PublishNegControllerErrorCountMetrics (err , false )
513
+ c . negMetrics .PublishNegControllerErrorCountMetrics (err , false )
505
514
}()
506
515
}
507
516
}
@@ -862,7 +871,7 @@ func (c *Controller) handleErr(err error, key interface{}) {
862
871
c .logger .Error (nil , msg )
863
872
if service , exists , err := c .serviceLister .GetByKey (key .(string )); err != nil {
864
873
c .logger .Error (err , "Failed to retrieve service from store" , "service" , key .(string ))
865
- metrics .PublishNegControllerErrorCountMetrics (err , true )
874
+ c . negMetrics .PublishNegControllerErrorCountMetrics (err , true )
866
875
} else if exists {
867
876
c .recorder .Eventf (service .(* apiv1.Service ), apiv1 .EventTypeWarning , "ProcessServiceFailed" , msg )
868
877
}
@@ -885,7 +894,7 @@ func (c *Controller) enqueueEndpointSlice(obj interface{}) {
885
894
key , err := endpointslices .EndpointSlicesServiceKey (endpointSlice )
886
895
if err != nil {
887
896
c .logger .Error (err , "Failed to find a service label inside endpoint slice" , "endpointSlice" , klog .KObj (endpointSlice ))
888
- metrics .PublishNegControllerErrorCountMetrics (err , true )
897
+ c . negMetrics .PublishNegControllerErrorCountMetrics (err , true )
889
898
return
890
899
}
891
900
c .logger .V (3 ).Info ("Adding EndpointSlice to endpointQueue for processing" , "endpointSlice" , key )
@@ -896,7 +905,7 @@ func (c *Controller) enqueueNode(obj interface{}) {
896
905
key , err := cache .DeletionHandlingMetaNamespaceKeyFunc (obj )
897
906
if err != nil {
898
907
c .logger .Error (err , "Failed to generate node key" )
899
- metrics .PublishNegControllerErrorCountMetrics (err , true )
908
+ c . negMetrics .PublishNegControllerErrorCountMetrics (err , true )
900
909
return
901
910
}
902
911
c .logger .V (3 ).Info ("Adding Node to nodeQueue for processing" , "node" , key )
@@ -907,7 +916,7 @@ func (c *Controller) enqueueService(obj interface{}) {
907
916
key , err := cache .DeletionHandlingMetaNamespaceKeyFunc (obj )
908
917
if err != nil {
909
918
c .logger .Error (err , "Failed to generate service key" )
910
- metrics .PublishNegControllerErrorCountMetrics (err , true )
919
+ c . negMetrics .PublishNegControllerErrorCountMetrics (err , true )
911
920
return
912
921
}
913
922
c .logger .V (3 ).Info ("Adding Service to serviceQueue for processing" , "service" , key )
@@ -931,7 +940,7 @@ func (c *Controller) enqueueNodeTopology(obj interface{}) {
931
940
key , err := cache .DeletionHandlingMetaNamespaceKeyFunc (obj )
932
941
if err != nil {
933
942
c .logger .Error (err , "Failed to generate Node Topology key" )
934
- metrics .PublishNegControllerErrorCountMetrics (err , true )
943
+ c . negMetrics .PublishNegControllerErrorCountMetrics (err , true )
935
944
return
936
945
}
937
946
c .logger .V (3 ).Info ("Adding NodeTopology to nodeTopologyQueue for processing" , "nodeTopology" , key )
@@ -941,7 +950,7 @@ func (c *Controller) enqueueNodeTopology(obj interface{}) {
941
950
func (c * Controller ) gc () {
942
951
if err := c .manager .GC (); err != nil {
943
952
c .logger .Error (err , "NEG controller garbage collection failed" )
944
- metrics .PublishNegControllerErrorCountMetrics (err , true )
953
+ c . negMetrics .PublishNegControllerErrorCountMetrics (err , true )
945
954
}
946
955
}
947
956
0 commit comments