influxdata/telegraf
Auf GitHub ansehenDefine an error handling behavior of Serializer.SerializeBatch function
Open
#8.830 geöffnet am 8. Feb. 2021
feature requesthelp wantedsize/l
Repository-Metriken
- Stars
- (9.892 Stars)
- PR-Merge-Metriken
- (Durchschn. Merge 2T 12h) (136 gemergte PRs in 30 T)
Beschreibung
Feature Request
Currently, the serializer interface doesn't define error handling behavior of SerializeBatch function.
If an error is occurred in the middle of processing multiple metrics, whether of not return the rest of succeeded metrics is up to the implementation.
Proposal:
Define the expected behaviour and add it in the comment/document.
Current behavior:
Undefined.
It made each serializer uses different strategy.
For example,
influx: https://github.com/influxdata/telegraf/blob/master/plugins/serializers/influx/influx.go#L114-L122- Ignore certain type of error and return nil if others
graphite: https://github.com/influxdata/telegraf/blob/master/plugins/serializers/graphite/graphite.go#L102-L111- returns nil for any single error
wavefront: https://github.com/influxdata/telegraf/blob/master/plugins/serializers/wavefront/wavefront.go#L102-L105- A little unclear but it looks like it ignores all the errors
Desired behavior:
Having well defined set of behavior including
- Whether of not stop processing all the metrics if error occurs from one of the metrics
- Whether of not log the error if we ignore the error
- Maybe we can change the return error type to
[]error
- Maybe we can change the return error type to
- Possibly having a config flag for changing the behavior
Use case:
This is important to reduce possible confusions of end users and plugin writers.