Skip to content

Commit 293531f

Browse files
authored
Add Trace IDs and metadata to log lines (#648)
1 parent 8d9a24e commit 293531f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+576
-306
lines changed

cmd/aws-application-networking-k8s/main.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,10 @@ func main() {
108108

109109
logLevel := logLevel()
110110
log := gwlog.NewLogger(logLevel)
111-
ctrl.SetLogger(zapr.NewLogger(log.Desugar()).WithName("runtime"))
111+
ctrl.SetLogger(zapr.NewLogger(log.InnerLogger.Desugar()).WithName("runtime"))
112+
113+
setupLog := log.InnerLogger.Named("setup")
112114

113-
setupLog := log.Named("setup")
114115
err := config.ConfigInit()
115116
if err != nil {
116117
setupLog.Fatalf("init config failed: %s", err)

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ require (
66
github.com/aws/aws-sdk-go v1.53.7
77
github.com/go-logr/zapr v1.2.4
88
github.com/golang/mock v1.6.0
9+
github.com/google/uuid v1.3.1
910
github.com/hashicorp/golang-lru/v2 v2.0.7
1011
github.com/onsi/ginkgo v1.16.5
1112
github.com/onsi/gomega v1.27.10
@@ -42,7 +43,6 @@ require (
4243
github.com/google/gnostic-models v0.6.8 // indirect
4344
github.com/google/go-cmp v0.6.0 // indirect
4445
github.com/google/gofuzz v1.2.0 // indirect
45-
github.com/google/uuid v1.3.1 // indirect
4646
github.com/imdario/mergo v0.3.16 // indirect
4747
github.com/jmespath/go-jmespath v0.4.0 // indirect
4848
github.com/josharian/intern v1.0.0 // indirect

pkg/aws/cloud.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,14 @@ func NewCloud(log gwlog.Logger, cfg CloudConfig, metricsRegisterer prometheus.Re
5959

6060
sess.Handlers.Complete.PushFront(func(r *request.Request) {
6161
if r.Error != nil {
62-
log.Debugw("error",
62+
log.Debugw(context.TODO(), "error",
6363
"error", r.Error.Error(),
6464
"serviceName", r.ClientInfo.ServiceName,
6565
"operation", r.Operation.Name,
6666
"params", r.Params,
6767
)
6868
} else {
69-
log.Debugw("response",
69+
log.Debugw(context.TODO(), "response",
7070
"serviceName", r.ClientInfo.ServiceName,
7171
"operation", r.Operation.Name,
7272
"params", r.Params,

pkg/controllers/accesslogpolicy_controller.go

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -104,18 +104,22 @@ func RegisterAccessLogPolicyController(
104104
}
105105

106106
func (r *accessLogPolicyReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
107-
r.log.Infow("reconcile", "name", req.Name)
107+
ctx = gwlog.StartReconcileTrace(ctx, r.log, "accesslogpolicy", req.Name, req.Namespace)
108+
defer func() {
109+
gwlog.EndReconcileTrace(ctx, r.log)
110+
}()
111+
108112
recErr := r.reconcile(ctx, req)
109113
if recErr != nil {
110-
r.log.Infow("reconcile error", "name", req.Name, "message", recErr.Error())
114+
r.log.Infow(ctx, "reconcile error", "name", req.Name, "message", recErr.Error())
111115
}
112116
res, retryErr := lattice_runtime.HandleReconcileError(recErr)
113117
if res.RequeueAfter != 0 {
114-
r.log.Infow("requeue request", "name", req.Name, "requeueAfter", res.RequeueAfter)
118+
r.log.Infow(ctx, "requeue request", "name", req.Name, "requeueAfter", res.RequeueAfter)
115119
} else if res.Requeue {
116-
r.log.Infow("requeue request", "name", req.Name)
120+
r.log.Infow(ctx, "requeue request", "name", req.Name)
117121
} else if retryErr == nil {
118-
r.log.Infow("reconciled", "name", req.Name)
122+
r.log.Infow(ctx, "reconciled", "name", req.Name)
119123
}
120124
return res, retryErr
121125
}
@@ -266,12 +270,12 @@ func (r *accessLogPolicyReconciler) buildAndDeployModel(
266270
if err != nil {
267271
return nil, err
268272
}
269-
r.log.Debugw("Successfully built model", "stack", jsonStack)
273+
r.log.Debugw(ctx, "Successfully built model", "stack", jsonStack)
270274

271275
if err := r.stackDeployer.Deploy(ctx, stack); err != nil {
272276
return nil, err
273277
}
274-
r.log.Debugf("successfully deployed model for stack %s:%s", stack.StackID().Name, stack.StackID().Namespace)
278+
r.log.Debugf(ctx, "successfully deployed model for stack %s:%s", stack.StackID().Name, stack.StackID().Namespace)
275279

276280
return stack, nil
277281
}
@@ -342,7 +346,7 @@ func (r *accessLogPolicyReconciler) findImpactedAccessLogPolicies(ctx context.Co
342346
alps := &anv1alpha1.AccessLogPolicyList{}
343347
err := r.client.List(ctx, alps, listOptions)
344348
if err != nil {
345-
r.log.Errorf("Failed to list all Access Log Policies, %s", err)
349+
r.log.Errorf(ctx, "Failed to list all Access Log Policies, %s", err)
346350
return []reconcile.Request{}
347351
}
348352

@@ -358,7 +362,7 @@ func (r *accessLogPolicyReconciler) findImpactedAccessLogPolicies(ctx context.Co
358362
continue
359363
}
360364

361-
r.log.Debugf("Adding Access Log Policy %s/%s to queue due to %s event", alp.Namespace, alp.Name, targetRefKind)
365+
r.log.Debugf(ctx, "Adding Access Log Policy %s/%s to queue due to %s event", alp.Namespace, alp.Name, targetRefKind)
362366
requests = append(requests, reconcile.Request{
363367
NamespacedName: types.NamespacedName{
364368
Namespace: alp.Namespace,

pkg/controllers/eventhandlers/gateway.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ var ZeroTransitionTime = metav1.NewTime(time.Time{})
3838
func (h *enqueueRequestsForGatewayEvent) Create(ctx context.Context, e event.CreateEvent, queue workqueue.RateLimitingInterface) {
3939
gwNew := e.Object.(*gateway_api.Gateway)
4040

41-
h.log.Infof("Received Create event for Gateway %s-%s", gwNew.Name, gwNew.Namespace)
41+
h.log.Infof(ctx, "Received Create event for Gateway %s-%s", gwNew.Name, gwNew.Namespace)
4242

4343
// initialize transition time
4444
gwNew.Status.Conditions[0].LastTransitionTime = ZeroTransitionTime
@@ -49,7 +49,7 @@ func (h *enqueueRequestsForGatewayEvent) Update(ctx context.Context, e event.Upd
4949
gwOld := e.ObjectOld.(*gateway_api.Gateway)
5050
gwNew := e.ObjectNew.(*gateway_api.Gateway)
5151

52-
h.log.Infof("Received Update event for Gateway %s-%s", gwNew.GetName(), gwNew.GetNamespace())
52+
h.log.Infof(ctx, "Received Update event for Gateway %s-%s", gwNew.GetName(), gwNew.GetNamespace())
5353

5454
if !equality.Semantic.DeepEqual(gwOld.Spec, gwNew.Spec) {
5555
// initialize transition time
@@ -69,13 +69,13 @@ func (h *enqueueRequestsForGatewayEvent) Generic(ctx context.Context, e event.Ge
6969
func (h *enqueueRequestsForGatewayEvent) enqueueImpactedRoutes(ctx context.Context, queue workqueue.RateLimitingInterface) {
7070
routes, err := core.ListAllRoutes(ctx, h.client)
7171
if err != nil {
72-
h.log.Errorf("Failed to list all routes, %s", err)
72+
h.log.Errorf(ctx, "Failed to list all routes, %s", err)
7373
return
7474
}
7575

7676
for _, route := range routes {
7777
if len(route.Spec().ParentRefs()) <= 0 {
78-
h.log.Debugf("Ignoring Route with no parentRef %s-%s", route.Name(), route.Namespace())
78+
h.log.Debugf(ctx, "Ignoring Route with no parentRef %s-%s", route.Name(), route.Namespace())
7979
continue
8080
}
8181

@@ -92,7 +92,7 @@ func (h *enqueueRequestsForGatewayEvent) enqueueImpactedRoutes(ctx context.Conte
9292

9393
gw := &gateway_api.Gateway{}
9494
if err := h.client.Get(ctx, gwName, gw); err != nil {
95-
h.log.Debugf("Ignoring Route with unknown parentRef %s-%s", route.Name(), route.Namespace())
95+
h.log.Debugf(ctx, "Ignoring Route with unknown parentRef %s-%s", route.Name(), route.Namespace())
9696
continue
9797
}
9898

@@ -104,12 +104,12 @@ func (h *enqueueRequestsForGatewayEvent) enqueueImpactedRoutes(ctx context.Conte
104104
}
105105

106106
if err := h.client.Get(ctx, gwClassName, gwClass); err != nil {
107-
h.log.Debugf("Ignoring Route with unknown Gateway %s-%s", route.Name(), route.Namespace())
107+
h.log.Debugf(ctx, "Ignoring Route with unknown Gateway %s-%s", route.Name(), route.Namespace())
108108
continue
109109
}
110110

111111
if gwClass.Spec.ControllerName == config.LatticeGatewayControllerName {
112-
h.log.Debugf("Adding Route %s-%s to queue due to Gateway event", route.Name(), route.Namespace())
112+
h.log.Debugf(ctx, "Adding Route %s-%s to queue due to Gateway event", route.Name(), route.Namespace())
113113
queue.Add(reconcile.Request{
114114
NamespacedName: types.NamespacedName{
115115
Namespace: route.Namespace(),

pkg/controllers/eventhandlers/gatewayclass.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,14 @@ func (h *enqueueRequestsForGatewayClassEvent) enqueueImpactedGateway(
4949
gwList := &gateway_api.GatewayList{}
5050
err := h.client.List(ctx, gwList)
5151
if err != nil {
52-
h.log.Errorf("Error listing Gateways during GatewayClass event %s", err)
52+
h.log.Errorf(ctx, "Error listing Gateways during GatewayClass event %s", err)
5353
return
5454
}
5555

5656
for _, gw := range gwList.Items {
5757
if string(gw.Spec.GatewayClassName) == gwClass.Name {
5858
if gwClass.Spec.ControllerName == config.LatticeGatewayControllerName {
59-
h.log.Debugf("Found matching gateway, %s-%s", gw.Name, gw.Namespace)
59+
h.log.Debugf(ctx, "Found matching gateway, %s-%s", gw.Name, gw.Namespace)
6060
queue.Add(reconcile.Request{
6161
NamespacedName: types.NamespacedName{
6262
Namespace: gw.Namespace,

pkg/controllers/eventhandlers/mapper.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -98,29 +98,29 @@ func policyToTargetRefObj[T client.Object](r *resourceMapper, ctx context.Contex
9898

9999
targetRef := policy.GetTargetRef()
100100
if targetRef == nil {
101-
r.log.Infow("Policy does not have targetRef, skipping",
101+
r.log.Infow(ctx, "Policy does not have targetRef, skipping",
102102
"policyName", policyNamespacedName)
103103
return null
104104
}
105105
expectedGroup, expectedKind, err := k8sResourceTypeToGroupAndKind(retObj)
106106
if err != nil {
107-
r.log.Errorw("Failed to get expected GroupKind for targetRefObj",
107+
r.log.Errorw(ctx, "Failed to get expected GroupKind for targetRefObj",
108108
"policyName", policyNamespacedName,
109109
"targetRef", targetRef,
110110
"reason", err.Error())
111111
return null
112112
}
113113

114114
if targetRef.Group != expectedGroup || targetRef.Kind != expectedKind {
115-
r.log.Infow("Detected targetRef GroupKind and expected retObj GroupKind are different, skipping",
115+
r.log.Infow(ctx, "Detected targetRef GroupKind and expected retObj GroupKind are different, skipping",
116116
"policyName", policyNamespacedName,
117117
"targetRef", targetRef,
118118
"expectedGroup", expectedGroup,
119119
"expectedKind", expectedKind)
120120
return null
121121
}
122122
if targetRef.Namespace != nil && policyNamespacedName.Namespace != string(*targetRef.Namespace) {
123-
r.log.Infow("Detected Policy and TargetRef namespace are different, skipping",
123+
r.log.Infow(ctx, "Detected Policy and TargetRef namespace are different, skipping",
124124
"policyNamespacedName", policyNamespacedName, "targetRef", targetRef,
125125
"targetRef.Namespace", targetRef.Namespace,
126126
"policyNamespacedName.Namespace", policyNamespacedName.Namespace)
@@ -133,16 +133,16 @@ func policyToTargetRefObj[T client.Object](r *resourceMapper, ctx context.Contex
133133
}
134134
if err := r.client.Get(ctx, key, retObj); err != nil {
135135
if errors.IsNotFound(err) {
136-
r.log.Debugw("Policy is referring to a non-existent targetRefObj, skipping",
136+
r.log.Debugw(ctx, "Policy is referring to a non-existent targetRefObj, skipping",
137137
"policyName", policyNamespacedName, "targetRef", targetRef)
138138
} else {
139139
// Still gracefully skipping the event but errors other than NotFound are bad sign.
140-
r.log.Errorw("Failed to query targetRef of TargetGroupPolicy",
140+
r.log.Errorw(ctx, "Failed to query targetRef of TargetGroupPolicy",
141141
"policyName", policyNamespacedName, "targetRef", targetRef, "reason", err.Error())
142142
}
143143
return null
144144
}
145-
r.log.Debugw("Policy change on Service detected",
145+
r.log.Debugw(ctx, "Policy change on Service detected",
146146
"policyName", policyNamespacedName, "targetRef", targetRef)
147147

148148
return retObj

pkg/controllers/eventhandlers/service.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ func (h *serviceEventHandler) mapToServiceExport(ctx context.Context, obj client
4545
requests = append(requests, reconcile.Request{
4646
NamespacedName: k8s.NamespacedName(svcExport),
4747
})
48-
h.log.Infow("Service impacting resource change triggered ServiceExport update",
48+
h.log.Infow(ctx, "Service impacting resource change triggered ServiceExport update",
4949
"serviceName", svc.Namespace+"/"+svc.Name)
5050
}
5151
return requests
@@ -73,7 +73,7 @@ func (h *serviceEventHandler) mapToRoute(ctx context.Context, obj client.Object,
7373
for _, route := range routes {
7474
routeName := k8s.NamespacedName(route.K8sObject())
7575
requests = append(requests, reconcile.Request{NamespacedName: routeName})
76-
h.log.Infow("Service impacting resource change triggered Route update",
76+
h.log.Infow(ctx, "Service impacting resource change triggered Route update",
7777
"serviceName", svc.Namespace+"/"+svc.Name, "routeName", routeName, "routeType", routeType)
7878
}
7979
return requests

pkg/controllers/eventhandlers/serviceimport.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ func (h *serviceImportEventHandler) mapToRoute(ctx context.Context, obj client.O
4141
for _, route := range routes {
4242
routeName := k8s.NamespacedName(route.K8sObject())
4343
requests = append(requests, reconcile.Request{NamespacedName: routeName})
44-
h.log.Infow("ServiceImport resource change triggered Route update",
44+
h.log.Infow(ctx, "ServiceImport resource change triggered Route update",
4545
"serviceName", obj.GetNamespace()+"/"+obj.GetName(), "routeName", routeName, "routeType", routeType)
4646
}
4747
return requests

pkg/controllers/gateway_controller.go

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package controllers
1919
import (
2020
"context"
2121
"fmt"
22+
2223
anv1alpha1 "github.com/aws/aws-application-networking-k8s/pkg/apis/applicationnetworking/v1alpha1"
2324
"github.com/aws/aws-application-networking-k8s/pkg/aws/services"
2425
"github.com/aws/aws-application-networking-k8s/pkg/controllers/eventhandlers"
@@ -90,7 +91,7 @@ func RegisterGatewayController(
9091
},
9192
})
9293
if err != nil {
93-
log.Infof("Could not setup default service network %s, proceeding without it - %s",
94+
log.Infof(context.TODO(), "Could not setup default service network %s, proceeding without it - %s",
9495
config.DefaultServiceNetwork, err.Error())
9596
}
9697
}
@@ -109,7 +110,7 @@ func RegisterGatewayController(
109110
if ok {
110111
builder.Watches(&anv1alpha1.VpcAssociationPolicy{}, vpcAssociationPolicyEventHandler.MapToGateway())
111112
} else {
112-
log.Infof("VpcAssociationPolicy CRD is not installed, skipping watch")
113+
log.Infof(context.TODO(), "VpcAssociationPolicy CRD is not installed, skipping watch")
113114
}
114115
return builder.Complete(r)
115116
}
@@ -119,18 +120,22 @@ func RegisterGatewayController(
119120
//+kubebuilder:rbac:groups=gateway.networking.k8s.io,resources=gateways/finalizers,verbs=update
120121

121122
func (r *gatewayReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
122-
r.log.Infow("reconcile", "name", req.Name)
123+
ctx = gwlog.StartReconcileTrace(ctx, r.log, "gateway", req.Name, req.Namespace)
124+
defer func() {
125+
gwlog.EndReconcileTrace(ctx, r.log)
126+
}()
127+
123128
recErr := r.reconcile(ctx, req)
124129
if recErr != nil {
125-
r.log.Infow("reconcile error", "name", req.Name, "message", recErr.Error())
130+
r.log.Infow(ctx, "reconcile error", "name", req.Name, "message", recErr.Error())
126131
}
127132
res, retryErr := lattice_runtime.HandleReconcileError(recErr)
128133
if res.RequeueAfter != 0 {
129-
r.log.Infow("requeue request", "name", req.Name, "requeueAfter", res.RequeueAfter)
134+
r.log.Infow(ctx, "requeue request", "name", req.Name, "requeueAfter", res.RequeueAfter)
130135
} else if res.Requeue {
131-
r.log.Infow("requeue request", "name", req.Name)
136+
r.log.Infow(ctx, "requeue request", "name", req.Name)
132137
} else if retryErr == nil {
133-
r.log.Infow("reconciled", "name", req.Name)
138+
r.log.Infow(ctx, "reconciled", "name", req.Name)
134139
}
135140
return res, retryErr
136141
}
@@ -149,12 +154,12 @@ func (r *gatewayReconciler) reconcile(ctx context.Context, req ctrl.Request) err
149154
}
150155

151156
if err := r.client.Get(ctx, gwClassName, gwClass); err != nil {
152-
r.log.Infow("GatewayClass is not found", "name", req.Name, "gwclass", gwClassName)
157+
r.log.Infow(ctx, "GatewayClass is not found", "name", req.Name, "gwclass", gwClassName)
153158
return client.IgnoreNotFound(err)
154159
}
155160

156161
if gwClass.Spec.ControllerName != config.LatticeGatewayControllerName {
157-
r.log.Infow("GatewayClass is not recognized", "name", req.Name, "gwClassControllerName", gwClass.Spec.ControllerName)
162+
r.log.Infow(ctx, "GatewayClass is not recognized", "name", req.Name, "gwClassControllerName", gwClass.Spec.ControllerName)
158163
return nil
159164
}
160165

0 commit comments

Comments
 (0)