From 92f030ca24738ccc95927cf933b17dd72eb30290 Mon Sep 17 00:00:00 2001 From: Robert Rati Date: Thu, 8 Jun 2017 09:17:33 -0400 Subject: [PATCH] Added logging to AWS api calls. #46969 --- pkg/cloudprovider/providers/aws/aws.go | 15 +++++++++++++++ pkg/cloudprovider/providers/aws/log_handler.go | 18 ++++++++++++++++-- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/pkg/cloudprovider/providers/aws/aws.go b/pkg/cloudprovider/providers/aws/aws.go index 40256006f6c..c35b2981ac8 100644 --- a/pkg/cloudprovider/providers/aws/aws.go +++ b/pkg/cloudprovider/providers/aws/aws.go @@ -480,6 +480,20 @@ func (p *awsSDKProvider) addHandlers(regionName string, h *request.Handlers) { Fn: delayer.AfterRetry, }) } + + p.addAPILoggingHandlers(h) +} + +func (p *awsSDKProvider) addAPILoggingHandlers(h *request.Handlers) { + h.Send.PushBackNamed(request.NamedHandler{ + Name: "k8s/api-request", + Fn: awsSendHandlerLogger, + }) + + h.ValidateResponse.PushFrontNamed(request.NamedHandler{ + Name: "k8s/api-validate-response", + Fn: awsValidateResponseHandlerLogger, + }) } // Get a CrossRequestRetryDelay, scoped to the region, not to the request. @@ -550,6 +564,7 @@ func (p *awsSDKProvider) Autoscaling(regionName string) (ASG, error) { func (p *awsSDKProvider) Metadata() (EC2Metadata, error) { client := ec2metadata.New(session.New(&aws.Config{})) + p.addAPILoggingHandlers(&client.Handlers) return client, nil } diff --git a/pkg/cloudprovider/providers/aws/log_handler.go b/pkg/cloudprovider/providers/aws/log_handler.go index f1c88fd1e42..86aa30628db 100644 --- a/pkg/cloudprovider/providers/aws/log_handler.go +++ b/pkg/cloudprovider/providers/aws/log_handler.go @@ -23,12 +23,26 @@ import ( // Handler for aws-sdk-go that logs all requests func awsHandlerLogger(req *request.Request) { + service, name := awsServiceAndName(req) + glog.V(4).Infof("AWS request: %s %s", service, name) +} + +func awsSendHandlerLogger(req *request.Request) { + service, name := awsServiceAndName(req) + glog.V(4).Infof("AWS API Send: %s %s %v %v", service, name, req.Operation, req.Params) +} + +func awsValidateResponseHandlerLogger(req *request.Request) { + service, name := awsServiceAndName(req) + glog.V(4).Infof("AWS API ValidateResponse: %s %s %v %v %s", service, name, req.Operation, req.Params, req.HTTPResponse.Status) +} + +func awsServiceAndName(req *request.Request) (string, string) { service := req.ClientInfo.ServiceName name := "?" if req.Operation != nil { name = req.Operation.Name } - - glog.V(4).Infof("AWS request: %s %s", service, name) + return service, name }