1/ Duration anomaly tracker with alarm.
2/ Init anomaly from config based on the public language.
3/ Unit tests for anomaly detection in count/gauge producer.
4/ Revisit the duration tracker logic.
Test: unit test passed.
Change-Id: I2423c0e0f05b1e37626954de9e749303423963f2
diff --git a/cmds/statsd/src/metrics/MetricsManager.cpp b/cmds/statsd/src/metrics/MetricsManager.cpp
index e8a862f..5916b040 100644
--- a/cmds/statsd/src/metrics/MetricsManager.cpp
+++ b/cmds/statsd/src/metrics/MetricsManager.cpp
@@ -38,8 +38,8 @@
MetricsManager::MetricsManager(const StatsdConfig& config) {
mConfigValid = initStatsdConfig(config, mTagIds, mAllLogEntryMatchers, mAllConditionTrackers,
- mAllMetricProducers, mConditionToMetricMap, mTrackerToMetricMap,
- mTrackerToConditionMap);
+ mAllMetricProducers, mAllAnomalyTrackers, mConditionToMetricMap,
+ mTrackerToMetricMap, mTrackerToConditionMap);
}
MetricsManager::~MetricsManager() {
@@ -150,6 +150,19 @@
}
}
+void MetricsManager::onAnomalyAlarmFired(const uint64_t timestampNs,
+ sp<const AnomalyAlarm> anomaly) {
+ for (const auto& itr : mAllAnomalyTrackers) {
+ itr->declareAnomaly(timestampNs);
+ }
+}
+
+void MetricsManager::setAnomalyMonitor(const sp<AnomalyMonitor>& anomalyMonitor) {
+ for (auto& itr : mAllAnomalyTrackers) {
+ itr->setAnomalyMonitor(anomalyMonitor);
+ }
+}
+
// Returns the total byte size of all metrics managed by a single config source.
size_t MetricsManager::byteSize() {
size_t totalSize = 0;