Skip to content

Commit b8a9249

Browse files
authored
Merge pull request #6571 from greenmoon55/cronfederatedhpa-logs
structured logging for cronfederatedhpa controllers
2 parents b8f6874 + cfa08e4 commit b8a9249

File tree

3 files changed

+26
-36
lines changed

3 files changed

+26
-36
lines changed

pkg/controllers/cronfederatedhpa/cronfederatedhpa_controller.go

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -56,17 +56,17 @@ type CronFHPAController struct {
5656
// The Controller will requeue the Request to be processed again if an error is non-nil or
5757
// Result.Requeue is true, otherwise upon completion it will remove the work from the queue.
5858
func (c *CronFHPAController) Reconcile(ctx context.Context, req controllerruntime.Request) (controllerruntime.Result, error) {
59-
klog.V(4).Infof("Reconciling CronFederatedHPA %s", req.NamespacedName)
59+
klog.V(4).InfoS("Reconciling CronFederatedHPA", "namespace", req.Namespace, "name", req.Name)
6060

6161
cronFHPA := &autoscalingv1alpha1.CronFederatedHPA{}
6262
if err := c.Client.Get(ctx, req.NamespacedName, cronFHPA); err != nil {
6363
if apierrors.IsNotFound(err) {
64-
klog.V(4).Infof("Begin to cleanup the cron jobs for CronFederatedHPA:%s", req.NamespacedName)
64+
klog.V(4).InfoS("Begin to cleanup the cron jobs for CronFederatedHPA", "namespace", req.Namespace, "name", req.Name)
6565
c.CronHandler.StopCronFHPAExecutor(req.NamespacedName.String())
6666
return controllerruntime.Result{}, nil
6767
}
6868

69-
klog.Errorf("Fail to get CronFederatedHPA(%s):%v", req.NamespacedName, err)
69+
klog.ErrorS(err, "Fail to get CronFederatedHPA", "namespace", req.Namespace, "name", req.Name)
7070
return controllerruntime.Result{}, err
7171
}
7272

@@ -140,7 +140,7 @@ func (c *CronFHPAController) processCronRule(ctx context.Context, cronFHPA *auto
140140
if !helper.IsCronFederatedHPARuleSuspend(rule) {
141141
if err := c.CronHandler.CreateCronJobForExecutor(cronFHPA, rule); err != nil {
142142
c.EventRecorder.Event(cronFHPA, corev1.EventTypeWarning, "StartRuleFailed", err.Error())
143-
klog.Errorf("Fail to start cron for CronFederatedHPA(%s) rule(%s):%v", cronFHPAKey, rule.Name, err)
143+
klog.ErrorS(err, "Fail to start cron for CronFederatedHPA rule", "cronFederatedHPA", cronFHPAKey, "rule", rule.Name)
144144
return err
145145
}
146146
}
@@ -159,8 +159,7 @@ func (c *CronFHPAController) updateRuleHistory(ctx context.Context, cronFHPA *au
159159
// If rule is not suspended, we should set the nextExecutionTime filed, or the nextExecutionTime will be nil
160160
next, err := c.CronHandler.GetRuleNextExecuteTime(cronFHPA, rule.Name)
161161
if err != nil {
162-
klog.Errorf("Fail to get next execution time for CronFederatedHPA(%s/%s) rule(%s):%v",
163-
cronFHPA.Namespace, cronFHPA.Name, rule.Name, err)
162+
klog.ErrorS(err, "Fail to get next execution time for CronFederatedHPA rule", "namespace", cronFHPA.Namespace, "name", cronFHPA.Name, "rule", rule.Name)
164163
return err
165164
}
166165
nextExecutionTime = &metav1.Time{Time: next}
@@ -185,8 +184,7 @@ func (c *CronFHPAController) updateRuleHistory(ctx context.Context, cronFHPA *au
185184
}
186185

187186
if err := c.Client.Status().Update(ctx, cronFHPA); err != nil {
188-
klog.Errorf("Fail to update CronFederatedHPA(%s/%s) rule(%s)'s next execution time:%v",
189-
cronFHPA.Namespace, cronFHPA.Name, rule.Name, err)
187+
klog.ErrorS(err, "Fail to update CronFederatedHPA rule's next execution time", "namespace", cronFHPA.Namespace, "name", cronFHPA.Name, "rule", rule.Name)
190188
return err
191189
}
192190

@@ -210,7 +208,7 @@ func (c *CronFHPAController) removeCronFHPAHistory(ctx context.Context, cronFHPA
210208
}
211209
if err := c.Client.Status().Update(ctx, cronFHPA); err != nil {
212210
c.EventRecorder.Event(cronFHPA, corev1.EventTypeWarning, "UpdateCronFederatedHPAFailed", err.Error())
213-
klog.Errorf("Fail to remove CronFederatedHPA(%s/%s) rule(%s) history:%v", cronFHPA.Namespace, cronFHPA.Name, ruleName, err)
211+
klog.ErrorS(err, "Fail to remove CronFederatedHPA rule history", "namespace", cronFHPA.Namespace, "name", cronFHPA.Name, "rule", ruleName)
214212
return err
215213
}
216214

pkg/controllers/cronfederatedhpa/cronfederatedhpa_handler.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -142,17 +142,15 @@ func (c *CronHandler) CreateCronJobForExecutor(cronFHPA *autoscalingv1alpha1.Cro
142142
timeZone, err = time.LoadLocation(*rule.TimeZone)
143143
if err != nil {
144144
// This should not happen because there is validation in webhook
145-
klog.Errorf("Invalid CronFederatedHPA(%s/%s) rule(%s) time zone(%s):%v",
146-
cronFHPA.Namespace, cronFHPA.Namespace, rule.Name, *rule.TimeZone, err)
145+
klog.ErrorS(err, "Invalid CronFederatedHPA rule time zone", "namespace", cronFHPA.Namespace, "name", cronFHPA.Name, "rule", rule.Name, "timeZone", *rule.TimeZone)
147146
return err
148147
}
149148
}
150149

151150
scheduler := gocron.NewScheduler(timeZone)
152151
cronJob := NewCronFederatedHPAJob(c.client, c.eventRecorder, scheduler, cronFHPA, rule)
153152
if _, err := scheduler.Cron(rule.Schedule).Do(RunCronFederatedHPARule, cronJob); err != nil {
154-
klog.Errorf("Create cron job for CronFederatedHPA(%s/%s) rule(%s) error:%v",
155-
cronFHPA.Namespace, cronFHPA.Name, rule.Name, err)
153+
klog.ErrorS(err, "Create cron job for CronFederatedHPA rule error", "namespace", cronFHPA.Namespace, "name", cronFHPA.Name, "rule", rule.Name)
156154
return err
157155
}
158156
scheduler.StartAsync()

pkg/controllers/cronfederatedhpa/cronfederatedhpa_job.go

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -76,18 +76,18 @@ func RunCronFederatedHPARule(c *ScalingJob) {
7676
err = c.client.Get(context.TODO(), c.namespaceName, cronFHPA)
7777
if err != nil {
7878
if apierrors.IsNotFound(err) {
79-
klog.Infof("CronFederatedHPA(%s) not found", c.namespaceName)
79+
klog.InfoS("CronFederatedHPA not found", "cronFederatedHPA", c.namespaceName)
8080
} else {
8181
// TODO: This may happen when the the network is down, we should do something here
8282
// But we are not sure what to do(retry not solve the problem)
83-
klog.Errorf("Get CronFederatedHPA(%s) failed: %v", c.namespaceName, err)
83+
klog.ErrorS(err, "Get CronFederatedHPA failed", "cronFederatedHPA", c.namespaceName)
8484
}
8585
return
8686
}
8787

8888
if helper.IsCronFederatedHPARuleSuspend(c.rule) {
8989
// If the rule is suspended, this job will be stopped soon
90-
klog.V(4).Infof("CronFederatedHPA(%s) Rule(%s) is suspended, skip it", c.namespaceName, c.rule.Name)
90+
klog.V(4).InfoS("CronFederatedHPA rule is suspended, skip it", "cronFederatedHPA", c.namespaceName, "rule", c.rule.Name)
9191
return
9292
}
9393

@@ -153,17 +153,14 @@ func (c *ScalingJob) ScaleFHPA(cronFHPA *autoscalingv1alpha1.CronFederatedHPA) e
153153
if update {
154154
err := c.client.Update(context.TODO(), fhpa)
155155
if err != nil {
156-
klog.Errorf("CronFederatedHPA(%s) updates FederatedHPA(%s/%s) failed: %v",
157-
c.namespaceName, fhpa.Namespace, fhpa.Name, err)
156+
klog.ErrorS(err, "CronFederatedHPA updates FederatedHPA failed", "namespace", c.namespaceName.Namespace, "cronFederatedHPA", c.namespaceName.Name, "federatedHPA", fhpa.Name)
158157
return err
159158
}
160-
klog.V(4).Infof("CronFederatedHPA(%s) scales FederatedHPA(%s/%s) successfully",
161-
c.namespaceName, fhpa.Namespace, fhpa.Name)
159+
klog.V(4).InfoS("CronFederatedHPA scales FederatedHPA successfully", "namespace", c.namespaceName.Namespace, "cronFederatedHPA", c.namespaceName.Name, "federatedHPA", fhpa.Name)
162160
return nil
163161
}
164162

165-
klog.V(4).Infof("CronFederatedHPA(%s) find nothing updated for FederatedHPA(%s/%s), skip it",
166-
c.namespaceName, fhpa.Namespace, fhpa.Name)
163+
klog.V(4).InfoS("CronFederatedHPA find nothing updated for FederatedHPA, skip it", "namespace", c.namespaceName.Namespace, "cronFederatedHPA", c.namespaceName.Name, "federatedHPA", fhpa.Name)
167164
return nil
168165
}
169166

@@ -175,8 +172,7 @@ func (c *ScalingJob) ScaleWorkloads(cronFHPA *autoscalingv1alpha1.CronFederatedH
175172

176173
targetGV, err := schema.ParseGroupVersion(cronFHPA.Spec.ScaleTargetRef.APIVersion)
177174
if err != nil {
178-
klog.Errorf("CronFederatedHPA(%s) parses GroupVersion(%s) failed: %v",
179-
c.namespaceName, cronFHPA.Spec.ScaleTargetRef.APIVersion, err)
175+
klog.ErrorS(err, "CronFederatedHPA parses GroupVersion failed", "cronFederatedHPA", c.namespaceName, "groupVersion", cronFHPA.Spec.ScaleTargetRef.APIVersion)
180176
return err
181177
}
182178
targetGVK := schema.GroupVersionKind{
@@ -188,37 +184,35 @@ func (c *ScalingJob) ScaleWorkloads(cronFHPA *autoscalingv1alpha1.CronFederatedH
188184
targetResource.SetGroupVersionKind(targetGVK)
189185
err = c.client.Get(ctx, types.NamespacedName{Namespace: cronFHPA.Namespace, Name: cronFHPA.Spec.ScaleTargetRef.Name}, targetResource)
190186
if err != nil {
191-
klog.Errorf("Get Resource(%s/%s) failed: %v", cronFHPA.Namespace, cronFHPA.Spec.ScaleTargetRef.Name, err)
187+
klog.ErrorS(err, "Get resource failed", "namespace", cronFHPA.Namespace, "name", cronFHPA.Spec.ScaleTargetRef.Name)
192188
return err
193189
}
194190

195191
scaleObj := &unstructured.Unstructured{}
196192
err = scaleClient.Get(ctx, targetResource, scaleObj)
197193
if err != nil {
198-
klog.Errorf("Get Scale for resource(%s/%s) failed: %v", cronFHPA.Namespace, cronFHPA.Spec.ScaleTargetRef.Name, err)
194+
klog.ErrorS(err, "Get Scale for resource failed", "namespace", cronFHPA.Namespace, "name", cronFHPA.Spec.ScaleTargetRef.Name)
199195
return err
200196
}
201197

202198
scale := &autoscalingv1.Scale{}
203199
err = helper.ConvertToTypedObject(scaleObj, scale)
204200
if err != nil {
205-
klog.Errorf("Convert Scale failed: %v", err)
201+
klog.ErrorS(err, "Convert Scale failed", "namespace", cronFHPA.Namespace, "name", cronFHPA.Spec.ScaleTargetRef.Name)
206202
return err
207203
}
208204

209205
if scale.Spec.Replicas != *c.rule.TargetReplicas {
210206
if err := helper.ApplyReplica(scaleObj, int64(*c.rule.TargetReplicas), util.ReplicasField); err != nil {
211-
klog.Errorf("CronFederatedHPA(%s) applies Replicas for %s/%s failed: %v",
212-
c.namespaceName, cronFHPA.Namespace, cronFHPA.Spec.ScaleTargetRef.Name, err)
207+
klog.ErrorS(err, "CronFederatedHPA applies Replicas failed", "cronFederatedHPA", c.namespaceName, "namespace", cronFHPA.Namespace, "name", cronFHPA.Spec.ScaleTargetRef.Name)
213208
return err
214209
}
215210
err := scaleClient.Update(ctx, targetResource, client.WithSubResourceBody(scaleObj))
216211
if err != nil {
217-
klog.Errorf("CronFederatedHPA(%s) updates scale resource failed: %v", c.namespaceName, err)
212+
klog.ErrorS(err, "CronFederatedHPA updates scale resource failed", "cronFederatedHPA", c.namespaceName, "namespace", cronFHPA.Namespace, "name", cronFHPA.Spec.ScaleTargetRef.Name)
218213
return err
219214
}
220-
klog.V(4).Infof("CronFederatedHPA(%s) scales resource(%s/%s) successfully",
221-
c.namespaceName, cronFHPA.Namespace, cronFHPA.Spec.ScaleTargetRef.Name)
215+
klog.V(4).InfoS("CronFederatedHPA scales resource successfully", "cronFederatedHPA", c.namespaceName, "namespace", cronFHPA.Namespace, "name", cronFHPA.Spec.ScaleTargetRef.Name)
222216
return nil
223217
}
224218
return nil
@@ -258,12 +252,12 @@ func (c *ScalingJob) addFailedExecutionHistory(
258252
})
259253
return err
260254
}); err != nil {
261-
klog.Errorf("Failed to add failed history record to CronFederatedHPA(%s/%s): %v", cronFHPA.Namespace, cronFHPA.Name, err)
255+
klog.ErrorS(err, "Failed to add failed history record to CronFederatedHPA", "namespace", cronFHPA.Namespace, "name", cronFHPA.Name)
262256
return err
263257
}
264258

265259
if operationResult == controllerutil.OperationResultUpdatedStatusOnly {
266-
klog.V(4).Infof("CronFederatedHPA(%s/%s) status has been updated successfully", cronFHPA.Namespace, cronFHPA.Name)
260+
klog.V(4).InfoS("CronFederatedHPA status has been updated successfully", "namespace", cronFHPA.Namespace, "name", cronFHPA.Name)
267261
}
268262

269263
return nil
@@ -316,12 +310,12 @@ func (c *ScalingJob) addSuccessExecutionHistory(
316310
})
317311
return err
318312
}); err != nil {
319-
klog.Errorf("Failed to add success history record to CronFederatedHPA(%s/%s): %v", cronFHPA.Namespace, cronFHPA.Name, err)
313+
klog.ErrorS(err, "Failed to add success history record to CronFederatedHPA", "namespace", cronFHPA.Namespace, "name", cronFHPA.Name)
320314
return err
321315
}
322316

323317
if operationResult == controllerutil.OperationResultUpdatedStatusOnly {
324-
klog.V(4).Infof("CronFederatedHPA(%s/%s) status has been updated successfully", cronFHPA.Namespace, cronFHPA.Name)
318+
klog.V(4).InfoS("CronFederatedHPA status has been updated successfully", "namespace", cronFHPA.Namespace, "name", cronFHPA.Name)
325319
}
326320

327321
return nil

0 commit comments

Comments
 (0)