@@ -16,6 +16,7 @@ package oci
1616
1717import (
1818 "context"
19+ "strconv"
1920 "time"
2021
2122 "github.com/oracle/oci-go-sdk/v31/core"
@@ -415,14 +416,18 @@ func (cp *CloudProvider) EnsureLoadBalancer(ctx context.Context, clusterName str
415416 logger := cp .logger .With ("loadbalancerName" , lbName , "serviceName" , service .Name )
416417 logger .With ("nodes" , len (nodes )).Info ("Ensuring load balancer" )
417418
419+ dimensionsMap := make (map [string ]string )
420+
418421 var errorType string
419422 var lbMetricDimension string
420423 lb , err := cp .client .LoadBalancer ().GetLoadBalancerByName (ctx , cp .config .CompartmentID , lbName )
421424 if err != nil && ! client .IsNotFound (err ) {
422425 logger .With (zap .Error (err )).Error ("Failed to get loadbalancer by name" )
423426 errorType = util .GetError (err )
424427 lbMetricDimension = util .GetMetricDimensionForComponent (errorType , util .LoadBalancerType )
425- metrics .SendMetricData (cp .metricPusher , metrics .LBUpdate , time .Since (startTime ).Seconds (), lbMetricDimension , lbName )
428+ dimensionsMap [metrics .ComponentDimension ] = lbMetricDimension
429+ dimensionsMap [metrics .ResourceOCIDDimension ] = lbName
430+ metrics .SendMetricData (cp .metricPusher , metrics .LBUpdate , time .Since (startTime ).Seconds (), dimensionsMap )
426431 return nil , err
427432 }
428433 exists := ! client .IsNotFound (err )
@@ -437,14 +442,17 @@ func (cp *CloudProvider) EnsureLoadBalancer(ctx context.Context, clusterName str
437442
438443 logger = logger .With ("lbOCID" , lbOCID )
439444
445+ dimensionsMap [metrics .ResourceOCIDDimension ] = lbOCID
446+
440447 var sslConfig * SSLConfig
441448 if requiresCertificate (service ) {
442449 ports , err := getSSLEnabledPorts (service )
443450 if err != nil {
444451 logger .With (zap .Error (err )).Error ("Failed to parse SSL port." )
445452 errorType = util .GetError (err )
446453 lbMetricDimension = util .GetMetricDimensionForComponent (errorType , util .LoadBalancerType )
447- metrics .SendMetricData (cp .metricPusher , metrics .LBUpdate , time .Since (startTime ).Seconds (), lbMetricDimension , lbOCID )
454+ dimensionsMap [metrics .ComponentDimension ] = lbMetricDimension
455+ metrics .SendMetricData (cp .metricPusher , metrics .LBUpdate , time .Since (startTime ).Seconds (), dimensionsMap )
448456 return nil , err
449457 }
450458 secretListenerString := service .Annotations [ServiceAnnotationLoadBalancerTLSSecret ]
@@ -456,7 +464,8 @@ func (cp *CloudProvider) EnsureLoadBalancer(ctx context.Context, clusterName str
456464 logger .With (zap .Error (err )).Error ("Failed to get Load balancer Subnets." )
457465 errorType = util .GetError (err )
458466 lbMetricDimension = util .GetMetricDimensionForComponent (errorType , util .LoadBalancerType )
459- metrics .SendMetricData (cp .metricPusher , metrics .LBUpdate , time .Since (startTime ).Seconds (), lbMetricDimension , lbOCID )
467+ dimensionsMap [metrics .ComponentDimension ] = lbMetricDimension
468+ metrics .SendMetricData (cp .metricPusher , metrics .LBUpdate , time .Since (startTime ).Seconds (), dimensionsMap )
460469 return nil , err
461470 }
462471
@@ -465,7 +474,8 @@ func (cp *CloudProvider) EnsureLoadBalancer(ctx context.Context, clusterName str
465474 logger .With (zap .Error (err )).Error ("Failed to derive LBSpec" )
466475 errorType = util .GetError (err )
467476 lbMetricDimension = util .GetMetricDimensionForComponent (errorType , util .LoadBalancerType )
468- metrics .SendMetricData (cp .metricPusher , metrics .LBUpdate , time .Since (startTime ).Seconds (), lbMetricDimension , lbOCID )
477+ dimensionsMap [metrics .ComponentDimension ] = lbMetricDimension
478+ metrics .SendMetricData (cp .metricPusher , metrics .LBUpdate , time .Since (startTime ).Seconds (), dimensionsMap )
469479 return nil , err
470480 }
471481
@@ -475,12 +485,15 @@ func (cp *CloudProvider) EnsureLoadBalancer(ctx context.Context, clusterName str
475485 logger .With (zap .Error (err )).Error ("Failed to provision LoadBalancer" )
476486 errorType = util .GetError (err )
477487 lbMetricDimension = util .GetMetricDimensionForComponent (errorType , util .LoadBalancerType )
478- metrics .SendMetricData (cp .metricPusher , metrics .LBProvision , time .Since (startTime ).Seconds (), lbMetricDimension , lbOCID )
488+ dimensionsMap [metrics .ComponentDimension ] = lbMetricDimension
489+ metrics .SendMetricData (cp .metricPusher , metrics .LBProvision , time .Since (startTime ).Seconds (), dimensionsMap )
479490 } else {
480491 logger = cp .logger .With ("loadbalancerName" , lbName , "serviceName" , service .Name , "lbOCID" , newLBOCID )
481492 logger .Info ("Successfully provisioned loadbalancer" )
482493 lbMetricDimension = util .GetMetricDimensionForComponent (util .Success , util .LoadBalancerType )
483- metrics .SendMetricData (cp .metricPusher , metrics .LBProvision , time .Since (startTime ).Seconds (), lbMetricDimension , newLBOCID )
494+ dimensionsMap [metrics .ComponentDimension ] = lbMetricDimension
495+ dimensionsMap [metrics .ResourceOCIDDimension ] = newLBOCID
496+ metrics .SendMetricData (cp .metricPusher , metrics .LBProvision , time .Since (startTime ).Seconds (), dimensionsMap )
484497 }
485498 return lbStatus , err
486499 }
@@ -498,7 +511,8 @@ func (cp *CloudProvider) EnsureLoadBalancer(ctx context.Context, clusterName str
498511 logger .With (zap .Error (err )).Error ("Failed to ensure ssl certificates" )
499512 errorType = util .GetError (err )
500513 lbMetricDimension = util .GetMetricDimensionForComponent (errorType , util .LoadBalancerType )
501- metrics .SendMetricData (cp .metricPusher , metrics .LBUpdate , time .Since (startTime ).Seconds (), lbMetricDimension , lbOCID )
514+ dimensionsMap [metrics .ComponentDimension ] = lbMetricDimension
515+ metrics .SendMetricData (cp .metricPusher , metrics .LBUpdate , time .Since (startTime ).Seconds (), dimensionsMap )
502516 return nil , errors .Wrap (err , "ensuring ssl certificates" )
503517 }
504518 }
@@ -507,14 +521,17 @@ func (cp *CloudProvider) EnsureLoadBalancer(ctx context.Context, clusterName str
507521 errorType = util .GetError (err )
508522 lbMetricDimension = util .GetMetricDimensionForComponent (errorType , util .LoadBalancerType )
509523 logger .With (zap .Error (err )).Error ("Failed to update LoadBalancer" )
510- metrics .SendMetricData (cp .metricPusher , metrics .LBUpdate , time .Since (startTime ).Seconds (), lbMetricDimension , lbOCID )
524+ dimensionsMap [metrics .ComponentDimension ] = lbMetricDimension
525+ metrics .SendMetricData (cp .metricPusher , metrics .LBUpdate , time .Since (startTime ).Seconds (), dimensionsMap )
511526 return nil , err
512527 }
513528
514529 syncTime := time .Since (startTime ).Seconds ()
515530 logger .Info ("Successfully updated loadbalancer" )
516531 lbMetricDimension = util .GetMetricDimensionForComponent (util .Success , util .LoadBalancerType )
517- metrics .SendMetricData (cp .metricPusher , metrics .LBUpdate , syncTime , lbMetricDimension , lbOCID )
532+ dimensionsMap [metrics .ComponentDimension ] = lbMetricDimension
533+ dimensionsMap [metrics .BackendSetsCountDimension ] = strconv .Itoa (len (lb .BackendSets ))
534+ metrics .SendMetricData (cp .metricPusher , metrics .LBUpdate , syncTime , dimensionsMap )
518535
519536 return loadBalancerToStatus (lb )
520537}
@@ -817,6 +834,8 @@ func (cp *CloudProvider) EnsureLoadBalancerDeleted(ctx context.Context, clusterN
817834 logger .Debug ("Attempting to delete load balancer" )
818835 var errorType string
819836 var lbMetricDimension string
837+ dimensionsMap := make (map [string ]string )
838+
820839 lb , err := cp .client .LoadBalancer ().GetLoadBalancerByName (ctx , cp .config .CompartmentID , name )
821840 if err != nil {
822841 if client .IsNotFound (err ) {
@@ -826,18 +845,22 @@ func (cp *CloudProvider) EnsureLoadBalancerDeleted(ctx context.Context, clusterN
826845 errorType = util .GetError (err )
827846 lbMetricDimension = util .GetMetricDimensionForComponent (errorType , util .LoadBalancerType )
828847 logger .With (zap .Error (err )).Error ("Failed to get loadbalancer by name" )
829- metrics .SendMetricData (cp .metricPusher , metrics .LBDelete , time .Since (startTime ).Seconds (), lbMetricDimension , name )
848+ dimensionsMap [metrics .ComponentDimension ] = lbMetricDimension
849+ dimensionsMap [metrics .ResourceOCIDDimension ] = name
850+ metrics .SendMetricData (cp .metricPusher , metrics .LBDelete , time .Since (startTime ).Seconds (), dimensionsMap )
830851 return errors .Wrapf (err , "get load balancer %q by name" , name )
831852 }
832853
833854 id := * lb .Id
855+ dimensionsMap [metrics .ResourceOCIDDimension ] = id
834856 logger = logger .With ("loadBalancerID" , id )
835857 if service .Annotations [ServiceAnnotaionLoadBalancerSecurityListManagementMode ] != ManagementModeNone {
836858 err := cp .cleanupSecListForLoadBalancerDelete (lb , logger , ctx , service , name )
837859 if err != nil {
838860 errorType = util .GetError (err )
839861 lbMetricDimension = util .GetMetricDimensionForComponent (errorType , util .LoadBalancerType )
840- metrics .SendMetricData (cp .metricPusher , metrics .LBDelete , time .Since (startTime ).Seconds (), lbMetricDimension , id )
862+ dimensionsMap [metrics .ComponentDimension ] = lbMetricDimension
863+ metrics .SendMetricData (cp .metricPusher , metrics .LBDelete , time .Since (startTime ).Seconds (), dimensionsMap )
841864 return err
842865 }
843866 }
@@ -848,21 +871,24 @@ func (cp *CloudProvider) EnsureLoadBalancerDeleted(ctx context.Context, clusterN
848871 errorType = util .GetError (err )
849872 lbMetricDimension = util .GetMetricDimensionForComponent (errorType , util .LoadBalancerType )
850873 logger .With (zap .Error (err )).Error ("Failed to delete loadbalancer" )
851- metrics .SendMetricData (cp .metricPusher , metrics .LBDelete , time .Since (startTime ).Seconds (), lbMetricDimension , id )
874+ dimensionsMap [metrics .ComponentDimension ] = lbMetricDimension
875+ metrics .SendMetricData (cp .metricPusher , metrics .LBDelete , time .Since (startTime ).Seconds (), dimensionsMap )
852876 return errors .Wrapf (err , "delete load balancer %q" , id )
853877 }
854878 _ , err = cp .client .LoadBalancer ().AwaitWorkRequest (ctx , workReqID )
855879 if err != nil {
856880 logger .With (zap .Error (err )).Error ("Timeout waiting for loadbalancer delete" )
857881 errorType = util .GetError (err )
858882 lbMetricDimension = util .GetMetricDimensionForComponent (errorType , util .LoadBalancerType )
859- metrics .SendMetricData (cp .metricPusher , metrics .LBDelete , time .Since (startTime ).Seconds (), lbMetricDimension , id )
883+ dimensionsMap [metrics .ComponentDimension ] = lbMetricDimension
884+ metrics .SendMetricData (cp .metricPusher , metrics .LBDelete , time .Since (startTime ).Seconds (), dimensionsMap )
860885 return errors .Wrapf (err , "awaiting deletion of load balancer %q" , name )
861886 }
862887
863888 logger .Info ("Deleted load balancer" )
864889 lbMetricDimension = util .GetMetricDimensionForComponent (util .Success , util .LoadBalancerType )
865- metrics .SendMetricData (cp .metricPusher , metrics .LBDelete , time .Since (startTime ).Seconds (), lbMetricDimension , id )
890+ dimensionsMap [metrics .ComponentDimension ] = lbMetricDimension
891+ metrics .SendMetricData (cp .metricPusher , metrics .LBDelete , time .Since (startTime ).Seconds (), dimensionsMap )
866892
867893 return nil
868894}
0 commit comments