summaryrefslogtreecommitdiff
path: root/src/mongo/db/stats/counters.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/stats/counters.h')
-rw-r--r--src/mongo/db/stats/counters.h21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/mongo/db/stats/counters.h b/src/mongo/db/stats/counters.h
index e9742797100..e30efaca25a 100644
--- a/src/mongo/db/stats/counters.h
+++ b/src/mongo/db/stats/counters.h
@@ -31,6 +31,8 @@
#pragma once
+#include "mongo/base/counter.h"
+#include "mongo/db/commands/server_status_metric.h"
#include "mongo/db/jsobj.h"
#include "mongo/platform/atomic_word.h"
#include "mongo/platform/basic.h"
@@ -125,4 +127,21 @@ private:
};
extern NetworkCounter networkCounter;
-}
+
+class AggStageCounters {
+public:
+ // Container for a stage count metric along with its corresponding counter.
+ struct StageCounter {
+ explicit StageCounter(const std::string& name)
+ : metric("aggStageCounters." + name, &counter) {}
+
+ Counter64 counter;
+ ServerStatusMetricField<Counter64> metric;
+ };
+
+ // Map of aggregation stages to the number of occurrences.
+ stdx::unordered_map<std::string, std::unique_ptr<StageCounter>> stageCounterMap;
+};
+
+extern AggStageCounters aggStageCounters;
+} // namespace mongo