From 59a898670f417432b240c0098a002631c1438039 Mon Sep 17 00:00:00 2001 From: andyzhangx Date: Thu, 9 May 2019 08:54:19 +0000 Subject: [PATCH] fix incorrect prometheus metrics fix left incorrect metrics --- .../providers/azure/azure_client.go | 100 ++++++------------ .../providers/azure/azure_metrics.go | 4 +- 2 files changed, 37 insertions(+), 67 deletions(-) diff --git a/pkg/cloudprovider/providers/azure/azure_client.go b/pkg/cloudprovider/providers/azure/azure_client.go index 7870285348..720d096e4a 100644 --- a/pkg/cloudprovider/providers/azure/azure_client.go +++ b/pkg/cloudprovider/providers/azure/azure_client.go @@ -193,12 +193,11 @@ func (az *azVirtualMachinesClient) CreateOrUpdate(ctx context.Context, resourceG mc := newMetricContext("vm", "create_or_update", resourceGroupName, az.client.SubscriptionID) future, err := az.client.CreateOrUpdate(ctx, resourceGroupName, VMName, parameters) if err != nil { - return future.Response(), err + return future.Response(), mc.Observe(err) } err = future.WaitForCompletionRef(ctx, az.client.Client) - mc.Observe(err) - return future.Response(), err + return future.Response(), mc.Observe(err) } func (az *azVirtualMachinesClient) Get(ctx context.Context, resourceGroupName string, VMName string, expand compute.InstanceViewTypes) (result compute.VirtualMachine, err error) { @@ -288,13 +287,11 @@ func (az *azInterfacesClient) CreateOrUpdate(ctx context.Context, resourceGroupN mc := newMetricContext("interfaces", "create_or_update", resourceGroupName, az.client.SubscriptionID) future, err := az.client.CreateOrUpdate(ctx, resourceGroupName, networkInterfaceName, parameters) if err != nil { - mc.Observe(err) - return future.Response(), err + return future.Response(), mc.Observe(err) } err = future.WaitForCompletionRef(ctx, az.client.Client) - mc.Observe(err) - return future.Response(), err + return future.Response(), mc.Observe(err) } func (az *azInterfacesClient) Get(ctx context.Context, resourceGroupName string, networkInterfaceName string, expand string) (result network.Interface, err error) { @@ -370,14 +367,12 @@ func (az *azLoadBalancersClient) CreateOrUpdate(ctx context.Context, resourceGro mc := newMetricContext("load_balancers", "create_or_update", resourceGroupName, az.client.SubscriptionID) future, err := az.client.CreateOrUpdate(ctx, resourceGroupName, loadBalancerName, parameters) - mc.Observe(err) if err != nil { - return future.Response(), err + return future.Response(), mc.Observe(err) } err = future.WaitForCompletionRef(ctx, az.client.Client) - mc.Observe(err) - return future.Response(), err + return future.Response(), mc.Observe(err) } func (az *azLoadBalancersClient) Delete(ctx context.Context, resourceGroupName string, loadBalancerName string) (resp *http.Response, err error) { @@ -394,14 +389,12 @@ func (az *azLoadBalancersClient) Delete(ctx context.Context, resourceGroupName s mc := newMetricContext("load_balancers", "delete", resourceGroupName, az.client.SubscriptionID) future, err := az.client.Delete(ctx, resourceGroupName, loadBalancerName) - mc.Observe(err) if err != nil { - return future.Response(), err + return future.Response(), mc.Observe(err) } err = future.WaitForCompletionRef(ctx, az.client.Client) - mc.Observe(err) - return future.Response(), err + return future.Response(), mc.Observe(err) } func (az *azLoadBalancersClient) Get(ctx context.Context, resourceGroupName string, loadBalancerName string, expand string) (result network.LoadBalancer, err error) { @@ -490,14 +483,12 @@ func (az *azPublicIPAddressesClient) CreateOrUpdate(ctx context.Context, resourc mc := newMetricContext("public_ip_addresses", "create_or_update", resourceGroupName, az.client.SubscriptionID) future, err := az.client.CreateOrUpdate(ctx, resourceGroupName, publicIPAddressName, parameters) - mc.Observe(err) if err != nil { - return future.Response(), err + return future.Response(), mc.Observe(err) } err = future.WaitForCompletionRef(ctx, az.client.Client) - mc.Observe(err) - return future.Response(), err + return future.Response(), mc.Observe(err) } func (az *azPublicIPAddressesClient) Delete(ctx context.Context, resourceGroupName string, publicIPAddressName string) (resp *http.Response, err error) { @@ -514,14 +505,12 @@ func (az *azPublicIPAddressesClient) Delete(ctx context.Context, resourceGroupNa mc := newMetricContext("public_ip_addresses", "delete", resourceGroupName, az.client.SubscriptionID) future, err := az.client.Delete(ctx, resourceGroupName, publicIPAddressName) - mc.Observe(err) if err != nil { - return future.Response(), err + return future.Response(), mc.Observe(err) } err = future.WaitForCompletionRef(ctx, az.client.Client) - mc.Observe(err) - return future.Response(), err + return future.Response(), mc.Observe(err) } func (az *azPublicIPAddressesClient) Get(ctx context.Context, resourceGroupName string, publicIPAddressName string, expand string) (result network.PublicIPAddress, err error) { @@ -610,13 +599,11 @@ func (az *azSubnetsClient) CreateOrUpdate(ctx context.Context, resourceGroupName mc := newMetricContext("subnets", "create_or_update", resourceGroupName, az.client.SubscriptionID) future, err := az.client.CreateOrUpdate(ctx, resourceGroupName, virtualNetworkName, subnetName, subnetParameters) if err != nil { - mc.Observe(err) - return future.Response(), err + return future.Response(), mc.Observe(err) } err = future.WaitForCompletionRef(ctx, az.client.Client) - mc.Observe(err) - return future.Response(), err + return future.Response(), mc.Observe(err) } func (az *azSubnetsClient) Delete(ctx context.Context, resourceGroupName string, virtualNetworkName string, subnetName string) (resp *http.Response, err error) { @@ -634,13 +621,11 @@ func (az *azSubnetsClient) Delete(ctx context.Context, resourceGroupName string, mc := newMetricContext("subnets", "delete", resourceGroupName, az.client.SubscriptionID) future, err := az.client.Delete(ctx, resourceGroupName, virtualNetworkName, subnetName) if err != nil { - mc.Observe(err) - return future.Response(), err + return future.Response(), mc.Observe(err) } err = future.WaitForCompletionRef(ctx, az.client.Client) - mc.Observe(err) - return future.Response(), err + return future.Response(), mc.Observe(err) } func (az *azSubnetsClient) Get(ctx context.Context, resourceGroupName string, virtualNetworkName string, subnetName string, expand string) (result network.Subnet, err error) { @@ -672,8 +657,8 @@ func (az *azSubnetsClient) List(ctx context.Context, resourceGroupName string, v mc := newMetricContext("subnets", "list", resourceGroupName, az.client.SubscriptionID) iterator, err := az.client.ListComplete(ctx, resourceGroupName, virtualNetworkName) + mc.Observe(err) if err != nil { - mc.Observe(err) return nil, err } @@ -729,13 +714,11 @@ func (az *azSecurityGroupsClient) CreateOrUpdate(ctx context.Context, resourceGr mc := newMetricContext("security_groups", "create_or_update", resourceGroupName, az.client.SubscriptionID) future, err := az.client.CreateOrUpdate(ctx, resourceGroupName, networkSecurityGroupName, parameters) if err != nil { - mc.Observe(err) - return future.Response(), err + return future.Response(), mc.Observe(err) } err = future.WaitForCompletionRef(ctx, az.client.Client) - mc.Observe(err) - return future.Response(), err + return future.Response(), mc.Observe(err) } func (az *azSecurityGroupsClient) Delete(ctx context.Context, resourceGroupName string, networkSecurityGroupName string) (resp *http.Response, err error) { @@ -753,13 +736,11 @@ func (az *azSecurityGroupsClient) Delete(ctx context.Context, resourceGroupName mc := newMetricContext("security_groups", "delete", resourceGroupName, az.client.SubscriptionID) future, err := az.client.Delete(ctx, resourceGroupName, networkSecurityGroupName) if err != nil { - mc.Observe(err) - return future.Response(), err + return future.Response(), mc.Observe(err) } err = future.WaitForCompletionRef(ctx, az.client.Client) - mc.Observe(err) - return future.Response(), err + return future.Response(), mc.Observe(err) } func (az *azSecurityGroupsClient) Get(ctx context.Context, resourceGroupName string, networkSecurityGroupName string, expand string) (result network.SecurityGroup, err error) { @@ -982,14 +963,12 @@ func (az *azVirtualMachineScaleSetVMsClient) Update(ctx context.Context, resourc mc := newMetricContext("vmssvm", "update", resourceGroupName, az.client.SubscriptionID) future, err := az.client.Update(ctx, resourceGroupName, VMScaleSetName, instanceID, parameters) - mc.Observe(err) if err != nil { - return future.Response(), err + return future.Response(), mc.Observe(err) } err = future.WaitForCompletionRef(ctx, az.client.Client) - mc.Observe(err) - return future.Response(), err + return future.Response(), mc.Observe(err) } // azRoutesClient implements RoutesClient. @@ -1032,13 +1011,11 @@ func (az *azRoutesClient) CreateOrUpdate(ctx context.Context, resourceGroupName mc := newMetricContext("routes", "create_or_update", resourceGroupName, az.client.SubscriptionID) future, err := az.client.CreateOrUpdate(ctx, resourceGroupName, routeTableName, routeName, routeParameters) if err != nil { - mc.Observe(err) - return future.Response(), err + return future.Response(), mc.Observe(err) } err = future.WaitForCompletionRef(ctx, az.client.Client) - mc.Observe(err) - return future.Response(), err + return future.Response(), mc.Observe(err) } func (az *azRoutesClient) Delete(ctx context.Context, resourceGroupName string, routeTableName string, routeName string) (resp *http.Response, err error) { @@ -1056,13 +1033,11 @@ func (az *azRoutesClient) Delete(ctx context.Context, resourceGroupName string, mc := newMetricContext("routes", "delete", resourceGroupName, az.client.SubscriptionID) future, err := az.client.Delete(ctx, resourceGroupName, routeTableName, routeName) if err != nil { - mc.Observe(err) - return future.Response(), err + return future.Response(), mc.Observe(err) } err = future.WaitForCompletionRef(ctx, az.client.Client) - mc.Observe(err) - return future.Response(), err + return future.Response(), mc.Observe(err) } // azRouteTablesClient implements RouteTablesClient. @@ -1104,14 +1079,12 @@ func (az *azRouteTablesClient) CreateOrUpdate(ctx context.Context, resourceGroup mc := newMetricContext("route_tables", "create_or_update", resourceGroupName, az.client.SubscriptionID) future, err := az.client.CreateOrUpdate(ctx, resourceGroupName, routeTableName, parameters) - mc.Observe(err) if err != nil { - return future.Response(), err + return future.Response(), mc.Observe(err) } err = future.WaitForCompletionRef(ctx, az.client.Client) - mc.Observe(err) - return future.Response(), err + return future.Response(), mc.Observe(err) } func (az *azRouteTablesClient) Get(ctx context.Context, resourceGroupName string, routeTableName string, expand string) (result network.RouteTable, err error) { @@ -1174,8 +1147,7 @@ func (az *azStorageAccountClient) Create(ctx context.Context, resourceGroupName } err = future.WaitForCompletionRef(ctx, az.client.Client) - mc.Observe(err) - return future.Response(), err + return future.Response(), mc.Observe(err) } func (az *azStorageAccountClient) Delete(ctx context.Context, resourceGroupName string, accountName string) (result autorest.Response, err error) { @@ -1284,14 +1256,12 @@ func (az *azDisksClient) CreateOrUpdate(ctx context.Context, resourceGroupName s mc := newMetricContext("disks", "create_or_update", resourceGroupName, az.client.SubscriptionID) future, err := az.client.CreateOrUpdate(ctx, resourceGroupName, diskName, diskParameter) - mc.Observe(err) if err != nil { - return future.Response(), err + return future.Response(), mc.Observe(err) } err = future.WaitForCompletionRef(ctx, az.client.Client) - mc.Observe(err) - return future.Response(), err + return future.Response(), mc.Observe(err) } func (az *azDisksClient) Delete(ctx context.Context, resourceGroupName string, diskName string) (resp *http.Response, err error) { @@ -1308,14 +1278,12 @@ func (az *azDisksClient) Delete(ctx context.Context, resourceGroupName string, d mc := newMetricContext("disks", "delete", resourceGroupName, az.client.SubscriptionID) future, err := az.client.Delete(ctx, resourceGroupName, diskName) - mc.Observe(err) if err != nil { - return future.Response(), err + return future.Response(), mc.Observe(err) } err = future.WaitForCompletionRef(ctx, az.client.Client) - mc.Observe(err) - return future.Response(), err + return future.Response(), mc.Observe(err) } func (az *azDisksClient) Get(ctx context.Context, resourceGroupName string, diskName string) (result compute.Disk, err error) { diff --git a/pkg/cloudprovider/providers/azure/azure_metrics.go b/pkg/cloudprovider/providers/azure/azure_metrics.go index c0806250b9..9c574d7584 100644 --- a/pkg/cloudprovider/providers/azure/azure_metrics.go +++ b/pkg/cloudprovider/providers/azure/azure_metrics.go @@ -50,12 +50,14 @@ func newMetricContext(prefix, request, resourceGroup, subscriptionID string) *me } } -func (mc *metricContext) Observe(err error) { +func (mc *metricContext) Observe(err error) error { apiMetrics.latency.WithLabelValues(mc.attributes...).Observe( time.Since(mc.start).Seconds()) if err != nil { apiMetrics.errors.WithLabelValues(mc.attributes...).Inc() } + + return err } func registerAPIMetrics(attributes ...string) *apiCallMetrics {