-
Notifications
You must be signed in to change notification settings - Fork 5.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove outputs blocking inputs when output is slow #4938
Conversation
Write(metrics []Metric) error | ||
|
||
// Start the "service" that will provide an Output | ||
Start() error |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do service plugins replace Start
and Stop
implementations with Connect
and Close
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, I'm not sure what the point of this extra interface was, only the prometheus output was a ServiceOutput.
0d8c445
to
b44090b
Compare
b44090b
to
0c0b5bd
Compare
0c0b5bd
to
b545796
Compare
This pull request remove blocking during flushes and writes immediately to the metric buffer. This should improve throughput especially when outputs are slow, and degrade better when overloaded.
closes #2919
To avoid over consumption in queue consumers it introduces a way to track metrics and be notified when they are delivered, allowing for durable handling in the consumer inputs. This is done by reference counting the metrics as they move through Telegraf which does add some additional implementation requirements to processors and consumer inputs.
closes #3984
The agent was refactored to fix issues restarting and shutting down when under load:
closes #4283
closes #4457
closes #4610
As part of the agent refactor, the timing alignment is fixed:
closes #3968
Add per output
flush_interval
,metric_buffer_limit
andmetric_batch_size
.closes #4717
What still needs done:
Required for all PRs: