tremor-runtime icon indicating copy to clipboard operation
tremor-runtime copied to clipboard

Enhancements for the gelf-chunking postprocessor

Open anupdhml opened this issue 3 years ago • 2 comments

Describe the problem you are trying to solve

The gelf-chunking postprocessor uses a numeric message id that is incremented on each new message. To better guarantee uniqueness when multiple tremor instances are sending chunked gelf messages to the same receiver, we should choose a different scheme for id.

Also, if the total message size is less than the individual chunk size, we can choose to send the message unchunked -- the gelf protocol supports that. For small-enough messages, this will eliminate the chunking overhead both on the client and server side.

Describe the solution you'd like

For message id, gelf docs mention using a combination of hostname and timestamp.

If the length of data that the preprocessor gets is less than the chunk size, send the data as is (i.e. do not apply the chunking logic).

Notes

Relevant implementations from the official java client:

https://github.com/Graylog2/gelfclient/blob/gelfclient-1.5.1/src/main/java/org/graylog2/gelfclient/encoder/GelfMessageChunkEncoder.java#L82-L91

https://github.com/Graylog2/gelfclient/blob/gelfclient-1.5.1/src/main/java/org/graylog2/gelfclient/encoder/GelfMessageChunkEncoder.java#L131-L134

Php client implementation for the same: https://github.com/bzikarsky/gelf-php/blob/1.7.0/src/Gelf/Transport/UdpTransport.php#L88-L96

anupdhml avatar Mar 09 '21 20:03 anupdhml

Hi @darach could I please be assigned this issue? Decided to pick it up as a way of learning Rust. 😄

rameels avatar Oct 14 '22 17:10 rameels

@rameels You are hereby assigned! Thanks for your initiative. Feel free to drop any questions you might have here or on our discord: https://chat.tremor.rs/

mfelsche avatar Oct 14 '22 18:10 mfelsche