Skip to content

Commit fa12c50

Browse files
YashasG98mrunalpagnis
authored andcommitted
Addition of Backendset size dimension to LB metrics
1 parent 2f12888 commit fa12c50

File tree

6 files changed

+179
-73
lines changed

6 files changed

+179
-73
lines changed

pkg/cloudprovider/providers/oci/load_balancer.go

Lines changed: 40 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ package oci
1616

1717
import (
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

Comments
 (0)