This PR adds the aggregator functionality for client side aggregation, it is pushing to a feature branch. This has already been implemented for the GO client.
Adds a class that periodically aggregates metrics for a given flush_interval and then sends the aggregated metrics to intake. A metric will be aggregated if there was another matching context sent within the same flush interval.
Possible Drawbacks
A possible drawback is that the current code relies on object oriented programming (inheritance) for the add_metric and other functions, it requires that the MetricAggregator objects will have the same fields
Verification Process
Unit tests that verify the aggregator.py class matches the existing behavior in the client side aggregator for the go client.
Release Notes
No behavioral changes until the base.py class is changed
Review checklist (to be filled by reviewers)
[ ] Feature or bug fix MUST have appropriate tests (unit, integration, etc...)
[ ] PR title must be written as a CHANGELOG entry (see why)
[ ] Files changes must correspond to the primary purpose of the PR as described in the title (small unrelated changes should have their own PR)
[ ] PR must have one changelog/ label attached. If applicable it should have the backward-incompatible label attached.
[ ] PR should not have do-not-merge/ label attached.
[ ] If Applicable, issue must have kind/ and severity/ labels attached at least.
What does this PR do?
This PR adds the aggregator functionality for client side aggregation, it is pushing to a feature branch. This has already been implemented for the GO client.
Issue
Description of the Change
Adds a class that periodically aggregates metrics for a given
flush_interval
and then sends the aggregated metrics to intake. A metric will be aggregated if there was another matching context sent within the same flush interval.Possible Drawbacks
A possible drawback is that the current code relies on object oriented programming (inheritance) for the
add_metric
and other functions, it requires that theMetricAggregator
objects will have the same fieldsVerification Process
Unit tests that verify the aggregator.py class matches the existing behavior in the client side aggregator for the go client.
Release Notes
No behavioral changes until the
base.py
class is changedReview 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.