Skip to content

Commit a081d35

Browse files
events: filter spammy events for the same object and reason (#3139)
Signed-off-by: Steve Kuznetsov <[email protected]>
1 parent 4f56ce8 commit a081d35

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

pkg/lib/event/event.go

+14-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package event
22

33
import (
4+
"fmt"
5+
46
v1 "k8s.io/api/core/v1"
57
kscheme "k8s.io/client-go/kubernetes/scheme"
68
typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1"
@@ -23,7 +25,18 @@ func init() {
2325
// NewRecorder returns an EventRecorder type that can be
2426
// used to post Events to different object's lifecycles.
2527
func NewRecorder(event typedcorev1.EventInterface) (record.EventRecorder, error) {
26-
eventBroadcaster := record.NewBroadcaster()
28+
eventBroadcaster := record.NewBroadcasterWithCorrelatorOptions(record.CorrelatorOptions{
29+
BurstSize: 10,
30+
SpamKeyFunc: func(event *v1.Event) string {
31+
return fmt.Sprintf(
32+
"%s/%s/%s/%s",
33+
event.InvolvedObject.Kind,
34+
event.InvolvedObject.Namespace,
35+
event.InvolvedObject.Name,
36+
event.Reason,
37+
)
38+
},
39+
})
2740
eventBroadcaster.StartLogging(klog.Infof)
2841
eventBroadcaster.StartRecordingToSink(&typedcorev1.EventSinkImpl{Interface: event})
2942
recorder := eventBroadcaster.NewRecorder(s, v1.EventSource{Component: component})

0 commit comments

Comments
 (0)