Skip to content

Commit 3bc595e

Browse files
authored
Merge pull request kubernetes#77722 from andyzhangx/fix-incorrect-metrics
fix incorrect prometheus azure metrics
2 parents f5a1ceb + a33b86e commit 3bc595e

File tree

2 files changed

+37
-68
lines changed

2 files changed

+37
-68
lines changed

staging/src/k8s.io/legacy-cloud-providers/azure/azure_client.go

Lines changed: 34 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -293,13 +293,11 @@ func (az *azInterfacesClient) CreateOrUpdate(ctx context.Context, resourceGroupN
293293
mc := newMetricContext("interfaces", "create_or_update", resourceGroupName, az.client.SubscriptionID)
294294
future, err := az.client.CreateOrUpdate(ctx, resourceGroupName, networkInterfaceName, parameters)
295295
if err != nil {
296-
mc.Observe(err)
297-
return future.Response(), err
296+
return future.Response(), mc.Observe(err)
298297
}
299298

300299
err = future.WaitForCompletionRef(ctx, az.client.Client)
301-
mc.Observe(err)
302-
return future.Response(), err
300+
return future.Response(), mc.Observe(err)
303301
}
304302

305303
func (az *azInterfacesClient) Get(ctx context.Context, resourceGroupName string, networkInterfaceName string, expand string) (result network.Interface, err error) {
@@ -376,19 +374,16 @@ func (az *azLoadBalancersClient) CreateOrUpdate(ctx context.Context, resourceGro
376374
mc := newMetricContext("load_balancers", "create_or_update", resourceGroupName, az.client.SubscriptionID)
377375
req, err := az.createOrUpdatePreparer(ctx, resourceGroupName, loadBalancerName, parameters, etag)
378376
if err != nil {
379-
mc.Observe(err)
380-
return nil, err
377+
return nil, mc.Observe(err)
381378
}
382379

383380
future, err := az.client.CreateOrUpdateSender(req)
384381
if err != nil {
385-
mc.Observe(err)
386-
return future.Response(), err
382+
return future.Response(), mc.Observe(err)
387383
}
388384

389385
err = future.WaitForCompletionRef(ctx, az.client.Client)
390-
mc.Observe(err)
391-
return future.Response(), err
386+
return future.Response(), mc.Observe(err)
392387
}
393388

394389
// createOrUpdatePreparer prepares the CreateOrUpdate request.
@@ -432,14 +427,12 @@ func (az *azLoadBalancersClient) Delete(ctx context.Context, resourceGroupName s
432427

433428
mc := newMetricContext("load_balancers", "delete", resourceGroupName, az.client.SubscriptionID)
434429
future, err := az.client.Delete(ctx, resourceGroupName, loadBalancerName)
435-
mc.Observe(err)
436430
if err != nil {
437-
return future.Response(), err
431+
return future.Response(), mc.Observe(err)
438432
}
439433

440434
err = future.WaitForCompletionRef(ctx, az.client.Client)
441-
mc.Observe(err)
442-
return future.Response(), err
435+
return future.Response(), mc.Observe(err)
443436
}
444437

445438
func (az *azLoadBalancersClient) Get(ctx context.Context, resourceGroupName string, loadBalancerName string, expand string) (result network.LoadBalancer, err error) {
@@ -528,14 +521,12 @@ func (az *azPublicIPAddressesClient) CreateOrUpdate(ctx context.Context, resourc
528521

529522
mc := newMetricContext("public_ip_addresses", "create_or_update", resourceGroupName, az.client.SubscriptionID)
530523
future, err := az.client.CreateOrUpdate(ctx, resourceGroupName, publicIPAddressName, parameters)
531-
mc.Observe(err)
532524
if err != nil {
533-
return future.Response(), err
525+
return future.Response(), mc.Observe(err)
534526
}
535527

536528
err = future.WaitForCompletionRef(ctx, az.client.Client)
537-
mc.Observe(err)
538-
return future.Response(), err
529+
return future.Response(), mc.Observe(err)
539530
}
540531

541532
func (az *azPublicIPAddressesClient) Delete(ctx context.Context, resourceGroupName string, publicIPAddressName string) (resp *http.Response, err error) {
@@ -552,14 +543,12 @@ func (az *azPublicIPAddressesClient) Delete(ctx context.Context, resourceGroupNa
552543

553544
mc := newMetricContext("public_ip_addresses", "delete", resourceGroupName, az.client.SubscriptionID)
554545
future, err := az.client.Delete(ctx, resourceGroupName, publicIPAddressName)
555-
mc.Observe(err)
556546
if err != nil {
557-
return future.Response(), err
547+
return future.Response(), mc.Observe(err)
558548
}
559549

560550
err = future.WaitForCompletionRef(ctx, az.client.Client)
561-
mc.Observe(err)
562-
return future.Response(), err
551+
return future.Response(), mc.Observe(err)
563552
}
564553

565554
func (az *azPublicIPAddressesClient) Get(ctx context.Context, resourceGroupName string, publicIPAddressName string, expand string) (result network.PublicIPAddress, err error) {
@@ -648,13 +637,11 @@ func (az *azSubnetsClient) CreateOrUpdate(ctx context.Context, resourceGroupName
648637
mc := newMetricContext("subnets", "create_or_update", resourceGroupName, az.client.SubscriptionID)
649638
future, err := az.client.CreateOrUpdate(ctx, resourceGroupName, virtualNetworkName, subnetName, subnetParameters)
650639
if err != nil {
651-
mc.Observe(err)
652-
return future.Response(), err
640+
return future.Response(), mc.Observe(err)
653641
}
654642

655643
err = future.WaitForCompletionRef(ctx, az.client.Client)
656-
mc.Observe(err)
657-
return future.Response(), err
644+
return future.Response(), mc.Observe(err)
658645
}
659646

660647
func (az *azSubnetsClient) Delete(ctx context.Context, resourceGroupName string, virtualNetworkName string, subnetName string) (resp *http.Response, err error) {
@@ -672,13 +659,11 @@ func (az *azSubnetsClient) Delete(ctx context.Context, resourceGroupName string,
672659
mc := newMetricContext("subnets", "delete", resourceGroupName, az.client.SubscriptionID)
673660
future, err := az.client.Delete(ctx, resourceGroupName, virtualNetworkName, subnetName)
674661
if err != nil {
675-
mc.Observe(err)
676-
return future.Response(), err
662+
return future.Response(), mc.Observe(err)
677663
}
678664

679665
err = future.WaitForCompletionRef(ctx, az.client.Client)
680-
mc.Observe(err)
681-
return future.Response(), err
666+
return future.Response(), mc.Observe(err)
682667
}
683668

684669
func (az *azSubnetsClient) Get(ctx context.Context, resourceGroupName string, virtualNetworkName string, subnetName string, expand string) (result network.Subnet, err error) {
@@ -710,8 +695,8 @@ func (az *azSubnetsClient) List(ctx context.Context, resourceGroupName string, v
710695

711696
mc := newMetricContext("subnets", "list", resourceGroupName, az.client.SubscriptionID)
712697
iterator, err := az.client.ListComplete(ctx, resourceGroupName, virtualNetworkName)
698+
mc.Observe(err)
713699
if err != nil {
714-
mc.Observe(err)
715700
return nil, err
716701
}
717702

@@ -767,19 +752,16 @@ func (az *azSecurityGroupsClient) CreateOrUpdate(ctx context.Context, resourceGr
767752
mc := newMetricContext("security_groups", "create_or_update", resourceGroupName, az.client.SubscriptionID)
768753
req, err := az.createOrUpdatePreparer(ctx, resourceGroupName, networkSecurityGroupName, parameters, etag)
769754
if err != nil {
770-
mc.Observe(err)
771-
return nil, err
755+
return nil, mc.Observe(err)
772756
}
773757

774758
future, err := az.client.CreateOrUpdateSender(req)
775759
if err != nil {
776-
mc.Observe(err)
777-
return future.Response(), err
760+
return future.Response(), mc.Observe(err)
778761
}
779762

780763
err = future.WaitForCompletionRef(ctx, az.client.Client)
781-
mc.Observe(err)
782-
return future.Response(), err
764+
return future.Response(), mc.Observe(err)
783765
}
784766

785767
// createOrUpdatePreparer prepares the CreateOrUpdate request.
@@ -824,13 +806,11 @@ func (az *azSecurityGroupsClient) Delete(ctx context.Context, resourceGroupName
824806
mc := newMetricContext("security_groups", "delete", resourceGroupName, az.client.SubscriptionID)
825807
future, err := az.client.Delete(ctx, resourceGroupName, networkSecurityGroupName)
826808
if err != nil {
827-
mc.Observe(err)
828-
return future.Response(), err
809+
return future.Response(), mc.Observe(err)
829810
}
830811

831812
err = future.WaitForCompletionRef(ctx, az.client.Client)
832-
mc.Observe(err)
833-
return future.Response(), err
813+
return future.Response(), mc.Observe(err)
834814
}
835815

836816
func (az *azSecurityGroupsClient) Get(ctx context.Context, resourceGroupName string, networkSecurityGroupName string, expand string) (result network.SecurityGroup, err error) {
@@ -1053,14 +1033,12 @@ func (az *azVirtualMachineScaleSetVMsClient) Update(ctx context.Context, resourc
10531033

10541034
mc := newMetricContext("vmssvm", "update", resourceGroupName, az.client.SubscriptionID)
10551035
future, err := az.client.Update(ctx, resourceGroupName, VMScaleSetName, instanceID, parameters)
1056-
mc.Observe(err)
10571036
if err != nil {
1058-
return future.Response(), err
1037+
return future.Response(), mc.Observe(err)
10591038
}
10601039

10611040
err = future.WaitForCompletionRef(ctx, az.client.Client)
1062-
mc.Observe(err)
1063-
return future.Response(), err
1041+
return future.Response(), mc.Observe(err)
10641042
}
10651043

10661044
// azRoutesClient implements RoutesClient.
@@ -1109,13 +1087,11 @@ func (az *azRoutesClient) CreateOrUpdate(ctx context.Context, resourceGroupName
11091087

11101088
future, err := az.client.CreateOrUpdateSender(req)
11111089
if err != nil {
1112-
mc.Observe(err)
1113-
return future.Response(), err
1090+
return future.Response(), mc.Observe(err)
11141091
}
11151092

11161093
err = future.WaitForCompletionRef(ctx, az.client.Client)
1117-
mc.Observe(err)
1118-
return future.Response(), err
1094+
return future.Response(), mc.Observe(err)
11191095
}
11201096

11211097
// createOrUpdatePreparer prepares the CreateOrUpdate request.
@@ -1162,13 +1138,11 @@ func (az *azRoutesClient) Delete(ctx context.Context, resourceGroupName string,
11621138
mc := newMetricContext("routes", "delete", resourceGroupName, az.client.SubscriptionID)
11631139
future, err := az.client.Delete(ctx, resourceGroupName, routeTableName, routeName)
11641140
if err != nil {
1165-
mc.Observe(err)
1166-
return future.Response(), err
1141+
return future.Response(), mc.Observe(err)
11671142
}
11681143

11691144
err = future.WaitForCompletionRef(ctx, az.client.Client)
1170-
mc.Observe(err)
1171-
return future.Response(), err
1145+
return future.Response(), mc.Observe(err)
11721146
}
11731147

11741148
// azRouteTablesClient implements RouteTablesClient.
@@ -1211,19 +1185,16 @@ func (az *azRouteTablesClient) CreateOrUpdate(ctx context.Context, resourceGroup
12111185
mc := newMetricContext("route_tables", "create_or_update", resourceGroupName, az.client.SubscriptionID)
12121186
req, err := az.createOrUpdatePreparer(ctx, resourceGroupName, routeTableName, parameters, etag)
12131187
if err != nil {
1214-
mc.Observe(err)
1215-
return nil, err
1188+
return nil, mc.Observe(err)
12161189
}
12171190

12181191
future, err := az.client.CreateOrUpdateSender(req)
12191192
if err != nil {
1220-
mc.Observe(err)
1221-
return future.Response(), err
1193+
return future.Response(), mc.Observe(err)
12221194
}
12231195

12241196
err = future.WaitForCompletionRef(ctx, az.client.Client)
1225-
mc.Observe(err)
1226-
return future.Response(), err
1197+
return future.Response(), mc.Observe(err)
12271198
}
12281199

12291200
// createOrUpdatePreparer prepares the CreateOrUpdate request.
@@ -1423,14 +1394,12 @@ func (az *azDisksClient) CreateOrUpdate(ctx context.Context, resourceGroupName s
14231394

14241395
mc := newMetricContext("disks", "create_or_update", resourceGroupName, az.client.SubscriptionID)
14251396
future, err := az.client.CreateOrUpdate(ctx, resourceGroupName, diskName, diskParameter)
1426-
mc.Observe(err)
14271397
if err != nil {
1428-
return future.Response(), err
1398+
return future.Response(), mc.Observe(err)
14291399
}
14301400

14311401
err = future.WaitForCompletionRef(ctx, az.client.Client)
1432-
mc.Observe(err)
1433-
return future.Response(), err
1402+
return future.Response(), mc.Observe(err)
14341403
}
14351404

14361405
func (az *azDisksClient) Delete(ctx context.Context, resourceGroupName string, diskName string) (resp *http.Response, err error) {
@@ -1447,14 +1416,12 @@ func (az *azDisksClient) Delete(ctx context.Context, resourceGroupName string, d
14471416

14481417
mc := newMetricContext("disks", "delete", resourceGroupName, az.client.SubscriptionID)
14491418
future, err := az.client.Delete(ctx, resourceGroupName, diskName)
1450-
mc.Observe(err)
14511419
if err != nil {
1452-
return future.Response(), err
1420+
return future.Response(), mc.Observe(err)
14531421
}
14541422

14551423
err = future.WaitForCompletionRef(ctx, az.client.Client)
1456-
mc.Observe(err)
1457-
return future.Response(), err
1424+
return future.Response(), mc.Observe(err)
14581425
}
14591426

14601427
func (az *azDisksClient) Get(ctx context.Context, resourceGroupName string, diskName string) (result compute.Disk, err error) {

staging/src/k8s.io/legacy-cloud-providers/azure/azure_metrics.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,14 @@ func newMetricContext(prefix, request, resourceGroup, subscriptionID string) *me
5050
}
5151
}
5252

53-
func (mc *metricContext) Observe(err error) {
53+
func (mc *metricContext) Observe(err error) error {
5454
apiMetrics.latency.WithLabelValues(mc.attributes...).Observe(
5555
time.Since(mc.start).Seconds())
5656
if err != nil {
5757
apiMetrics.errors.WithLabelValues(mc.attributes...).Inc()
5858
}
59+
60+
return err
5961
}
6062

6163
func registerAPIMetrics(attributes ...string) *apiCallMetrics {

0 commit comments

Comments
 (0)