Comments (3)
Depends on olivere library configuration, you can check the details there.
My guess is it will retry by Backoff algorithm until some special status codes.
from gogstash.
If you look at https://github.com/tsaikd/gogstash/blob/master/output/elastic/outputelastic.go you will see the default parameters buffer sizes. This is used during normal operations.
In case of issues one of three things can happen.
- The message is not accepted and dropped.
- The message is declined and requed. By default, see line 21, it will retry messages where Elasticsearch returns with HTTP status codes 408, 429, 503, 507.
- The message is not delivered and remain in the queue.
From what I can see what will happen is that - over time under an error condition with new messages coming in - the output will consume all memory and gogstash will crash. I can't find anywhere that a message is dropped when not delivered. The parameter ExponentialBackoffMaxTimeout does not seem to drop messages over time.
I tested with two error conditions; Elasticsearch down and Elasticsearch in read-only mode (high watermark/disk util).
Should we discuss implementing some kind of backpressure mechanism where the output can pause the input. Many inputs can support this while others have issues with it.
from gogstash.
You can have many strategies for handling delivering errors, and in my opinion, an important thing for a logging system is keeping the logs integrity. If you drop messages somewhere, you might miss a chance to be notified for the unstable system state. Case by case, sometimes you may want to drop messages to prevent memory exhaustion.
from gogstash.
Related Issues (20)
- Peformance / efficieny numbers HOT 5
- Output plugin for ClickHouse HOT 4
- Elastic output document type as deprecated HOT 1
- Splitting one input into multiple outputs HOT 3
- Can I use dynamic index with elasticsearch output? HOT 2
- useragent filter should use uap-go regexes by default HOT 1
- Fields with dots in the name cannot be referenced HOT 3
- Filter for key-value and unix nano timestamps HOT 2
- How to log in to elasticsearch HOT 2
- Input - UDP packet mode HOT 3
- Issues with file output HOT 1
- How does output to loki work? HOT 9
- Improve error message for geoip filter HOT 1
- output module "http" failed HOT 4
- Do you have any plan to add plain codec? HOT 5
- Cannot stop program HOT 3
- Supporting Logstash config syntax HOT 3
- Ctrl+C does not kill worker processes HOT 1
- Using GOMAXPROC instead of Forking HOT 12
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gogstash.