resmoio / kubernetes-event-exporter

Export Kubernetes events to multiple destinations with routing and filtering
Apache License 2.0
789 stars 158 forks source link

add ProcessUpdateEvent trigger to controll whether sent the event to the recivers when the event is update #126

Closed wuzhuoquan closed 1 year ago

wuzhuoquan commented 1 year ago

if an event occur many times, It will only update the event fields like count and lastTimestamp. By default kubernetes-event-exporter will ignore the eventUpdate and will not sent to the recivers. If you Don't want to miss every event,you can use trigger processUpdateEvent to controll whether sent the event to the recivers.

jmos5156 commented 1 year ago

@mustafaakin Is this PR not worth adding? I have built it myself and it seems to work fine. I now get all the events I expect to see.

mustafaakin commented 1 year ago

I have conflicting views on this. While agree this is needed, it's not applicable for all sinks, that are append only and would result in huge duplicates because of image cannot be pulled x1000 times. Instead it should be configured sink level

jmos5156 commented 1 year ago

Having duplicates is part of logging as a whole. Most applications will output duplicate if that is what is happening. People can then perform analysis in their logging tech to see the rate of incidents and make decisions.

I'm no GO developer, but the PR allows the option to process updates if the user wants it. This is what you asked for in here.

Finally, this is a K8 event exporter, I need it to export all events not drop events. I'm losing valuable info from my clusters and have no full picture visibility in my logging tech to see what is happening.

wuzhuoquan commented 1 year ago

I have conflicting views on this. While agree this is needed, it's not applicable for all sinks, that are append only and would result in huge duplicates because of image cannot be pulled x1000 times. Instead it should be configured sink level

So this PR only set the trigger processUpdateEvent to controller whether sent all events to the recivers. By default is false, means will not sent the update event to sinks, but sometimes the user want to sent all event to sinks, then they can set it to true.

This PR only provide a option for the user to make it possible.

jmos5156 commented 1 year ago

I don't mean to be pushy but what @wuzhuoquan describes seems to be a good middle ground to proceed.

jmos5156 commented 1 year ago

It feels like this is dead in the water and not going anywhere. If so could we abandon this, it will allow me to look at other alternatives seeing as this repo is not really responsive to contributions and making the product better.

mustafaakin commented 1 year ago

Problem with this contribution is that configuration should be local to each sink. It does not matter that default is false. If it's enabled to true, it sends changes to all sinks regardless of it makes sense or not. I want ability to send regular messages to one sink (Opsgenie), and all updates to another (Kafka)

Additionally, the sinks need to be aware of ID generation so the sinks can update the data instead of growing the underlying storage.

Therefore, unless those changes are made, I can't merge this PR.