From a081d35ea9798fbd3a038926b391ca6b51e20000 Mon Sep 17 00:00:00 2001 From: Steve Kuznetsov Date: Thu, 21 Dec 2023 15:37:26 -0500 Subject: [PATCH] events: filter spammy events for the same object and reason (#3139) Signed-off-by: Steve Kuznetsov --- pkg/lib/event/event.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/pkg/lib/event/event.go b/pkg/lib/event/event.go index a4c7c4f4eb..34382d35f8 100644 --- a/pkg/lib/event/event.go +++ b/pkg/lib/event/event.go @@ -1,6 +1,8 @@ package event import ( + "fmt" + v1 "k8s.io/api/core/v1" kscheme "k8s.io/client-go/kubernetes/scheme" typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1" @@ -23,7 +25,18 @@ func init() { // NewRecorder returns an EventRecorder type that can be // used to post Events to different object's lifecycles. func NewRecorder(event typedcorev1.EventInterface) (record.EventRecorder, error) { - eventBroadcaster := record.NewBroadcaster() + eventBroadcaster := record.NewBroadcasterWithCorrelatorOptions(record.CorrelatorOptions{ + BurstSize: 10, + SpamKeyFunc: func(event *v1.Event) string { + return fmt.Sprintf( + "%s/%s/%s/%s", + event.InvolvedObject.Kind, + event.InvolvedObject.Namespace, + event.InvolvedObject.Name, + event.Reason, + ) + }, + }) eventBroadcaster.StartLogging(klog.Infof) eventBroadcaster.StartRecordingToSink(&typedcorev1.EventSinkImpl{Interface: event}) recorder := eventBroadcaster.NewRecorder(s, v1.EventSource{Component: component})