Fill out the template below. Any pull request that does not include enough information to be reviewed in a timely manner may be closed at the maintainers' discretion.
The pull request must only fix one issue, or add one feature, at the time.
The pull request must update the test suite to demonstrate the changed functionality.
After you create the pull request, all status checks must be pass before a maintainer reviews your contribution. For more details, please see CONTRIBUTING.
What does this PR do?
Project description
This PR adds simple client side aggregation (aggregating metrics before they are received by the agent) for the python client. This PR combines two previous PRs together (1, 2)
Client side aggregation has already been implemented in Go, Java, and the C# dogstatsd clients
Description of the Change
Periodically aggregates metrics (Count, Gauge, Set) for a given statsd_aggregation_flush_interval and then sends the aggregated metrics to intake. A metric will be aggregated if statsd_disable_aggregating is False and there was another matching context sent within the same flush interval.
Verification Process
Unit tests that verify the aggregator.py class matches the existing behavior in the client side aggregator for the go client.
Unit tests that verify the new metric objects (merics.py) match the existing behavior in the client side aggregator for Go.
Requirements for Contributing to this repository
What does this PR do?
Project description This PR adds simple client side aggregation (aggregating metrics before they are received by the agent) for the python client. This PR combines two previous PRs together (1, 2)
Client side aggregation has already been implemented in Go, Java, and the C# dogstatsd clients
Description of the Change
Periodically aggregates metrics (Count, Gauge, Set) for a given
statsd_aggregation_flush_interval
and then sends the aggregated metrics to intake. A metric will be aggregated ifstatsd_disable_aggregating
isFalse
and there was another matching context sent within the same flush interval.Verification Process
Unit tests that verify the aggregator.py class matches the existing behavior in the client side aggregator for the go client.
Unit tests that verify the new metric objects (merics.py) match the existing behavior in the client side aggregator for Go.
Local testing: Confluence doc More Docs
Bench Mark tests (TODO as a stretch goal)
Additional Notes
We currently do not allow buffering and aggregation at the same time, if both enabled, aggregation will occur instead of buffering.
Release Notes
Review checklist (to be filled by reviewers)
changelog/
label attached. If applicable it should have thebackward-incompatible
label attached.do-not-merge/
label attached.kind/
andseverity/
labels attached at least.