Browse Source

HPCC-26304 Change naming in metrics framework

Updated naming convention to reflect current design.

Signed-off-by: Ken Rowland kenneth.rowland@lexisnexisrisk.com
Ken Rowland 3 years ago
parent
commit
d12392a486

+ 5 - 5
devdoc/Metrics.rst

@@ -183,7 +183,7 @@ framework is independent of those dependencies. Sinks:
 * Convert metric native values into collection system specific measurements and reports
 * Drive the collection and reporting processes
 
-The third area of the framework is the glue logic, referred to as the *MetricsReporter*. It manages
+The third area of the framework is the glue logic, referred to as the *MetricsManager*. It manages
 the metrics system for the component. It provides the following:
 
 * Handles framework initialization
@@ -348,7 +348,7 @@ must obtain a reference to the reporter. Use the following example:
 ::
 
     using namespace hpccMetrics;
-    MetricsReporter &metricsReporter = queryMetricsReporter();
+    MetricsManager &metricsManager = queryMetricsManager();
 
 Metrics are wrapped by a standard C++ shared pointer. The component is responsible for maintaining a reference to
 each shared pointer during the lifetime of the metric. The framework keeps a weak pointer to each metric and thus
@@ -359,7 +359,7 @@ is assumed for all code examples that follow.
 ::
 
     std::shared_ptr<CounterMetric> pCounter = std::make_shared<CounterMetric>("metricName", "description");
-    metricsReporter.add(pCounter);
+    metricsManager.add(pCounter);
 
 Note the metric type for both the shared pointer variable and in the *make_shared* template that creates the
 metric and returns a shared pointer. Simply substitute other metric types and handle any differences in the
@@ -383,7 +383,7 @@ added it, can be replaced by the following:
 
 ::
 
-    auto pCount = createMetricAndAddToReporter<CounterMetric>("metricName", "description");
+    auto pCount = createMetricAndAddToManager<CounterMetric>("metricName", "description");
 
 For convenience a similar function template exists for creating custom metrics. For a custom metric the framework
 must know the metric type and have a reference to the underlying state variable. The following template function
@@ -391,7 +391,7 @@ handles creating a custom metric and adding it to the reporter (which is created
 
 ::
 
-    auto pCustomMetric = createCustomMetricAndAddToReporter("customName", "description", metricType, value);
+    auto pCustomMetric = createCustomMetricAndAddToManager("customName", "description", metricType, value);
 
 
 Where:

+ 2 - 1
esp/bindings/SOAP/Platform/soapbind.cpp

@@ -37,7 +37,8 @@
 #include "jmetrics.hpp"
 
 
-static auto pSoapRequestCount = hpccMetrics::createMetricAndAddToReporter<hpccMetrics::CounterMetric>("soaprequests", "JSON and SOAP POST requests");
+static auto pSoapRequestCount = hpccMetrics::createMetricAndAddToManager<hpccMetrics::CounterMetric>("soaprequests",
+                                                                                                     "JSON and SOAP POST requests");
 
 
 #define ESP_FACTORY DECL_EXPORT

+ 4 - 4
esp/platform/espp.cpp

@@ -368,9 +368,9 @@ void initializeMetrics(CEspConfig* config)
     if (pMetricsTree != nullptr)
     {
         PROGLOG("Metrics initializing...");
-        MetricsReporter &metricsReporter = queryMetricsReporter();
-        metricsReporter.init(pMetricsTree);
-        metricsReporter.startCollecting();
+        MetricsManager &metricsManager = queryMetricsManager();
+        metricsManager.init(pMetricsTree);
+        metricsManager.startCollecting();
     }
 }
 
@@ -580,7 +580,7 @@ int init_main(int argc, const char* argv[])
 int main(int argc, const char* argv[])
 {
     start_init_main(argc, argv, init_main);
-    queryMetricsReporter().stopCollecting();
+    queryMetricsManager().stopCollecting();
     stopPerformanceMonitor();
     UseSysLogForOperatorMessages(false);
     releaseAtoms();

+ 4 - 1
esp/platform/espprotocol.cpp

@@ -29,7 +29,10 @@
 
 static RelaxedAtomic<unsigned> gActiveRequests;
 
-static auto pActiveRequests = hpccMetrics::createCustomMetricAndAddToReporter("activerequests", "Number of active requests", hpccMetrics::METRICS_GAUGE, gActiveRequests);
+static auto pActiveRequests = hpccMetrics::createCustomMetricAndAddToManager("activerequests",
+                                                                             "Number of active requests",
+                                                                             hpccMetrics::METRICS_GAUGE,
+                                                                             gActiveRequests);
 
 typedef IXslProcessor * (*getXslProcessor_func)();
 

+ 2 - 1
esp/platform/txsummary.cpp

@@ -24,7 +24,8 @@
 
 #define MATCH_ENTRY [&](const EntryValue& e) {return strieq(e.get()->name, pathPart);}
 
-static auto pRequestCount = hpccMetrics::createMetricAndAddToReporter<hpccMetrics::CounterMetric>("requests", "Number of Requests");
+static auto pRequestCount = hpccMetrics::createMetricAndAddToManager<hpccMetrics::CounterMetric>("requests",
+                                                                                                 "Number of Requests");
 
 inline bool validate(const char* k)
 {

+ 15 - 15
system/jlib/jmetrics.cpp

@@ -16,7 +16,7 @@
 
 using namespace hpccMetrics;
 
-static Singleton<MetricsReporter> metricsReporter;
+static Singleton<MetricsManager> metricsManager;
 MODULE_INIT(INIT_PRIORITY_STANDARD)
 {
     return true;
@@ -24,16 +24,16 @@ MODULE_INIT(INIT_PRIORITY_STANDARD)
 
 MODULE_EXIT()
 {
-    delete metricsReporter.queryExisting();
+    delete metricsManager.queryExisting();
 }
 
 
-MetricsReporter &hpccMetrics::queryMetricsReporter()
+MetricsManager &hpccMetrics::queryMetricsManager()
 {
-    return *metricsReporter.query([] { return new MetricsReporter; });
+    return *metricsManager.query([] { return new MetricsManager; });
 }
 
-MetricsReporter::~MetricsReporter()
+MetricsManager::~MetricsManager()
 {
     for (auto const &sinkIt : sinks)
     {
@@ -43,14 +43,14 @@ MetricsReporter::~MetricsReporter()
 }
 
 
-void MetricsReporter::init(IPropertyTree *pMetricsTree)
+void MetricsManager::init(IPropertyTree *pMetricsTree)
 {
     Owned<IPropertyTreeIterator> sinkElementsIt = pMetricsTree->getElements("sinks");
     initializeSinks(sinkElementsIt);
 }
 
 
-void MetricsReporter::addMetric(const std::shared_ptr<IMetric> &pMetric)
+void MetricsManager::addMetric(const std::shared_ptr<IMetric> &pMetric)
 {
     std::unique_lock<std::mutex> lock(metricVectorMutex);
     auto it = metrics.find(pMetric->queryName());
@@ -75,7 +75,7 @@ void MetricsReporter::addMetric(const std::shared_ptr<IMetric> &pMetric)
 }
 
 
-void MetricsReporter::startCollecting()
+void MetricsManager::startCollecting()
 {
     for (auto const &sinkIt : sinks)
     {
@@ -84,7 +84,7 @@ void MetricsReporter::startCollecting()
 }
 
 
-void MetricsReporter::stopCollecting()
+void MetricsManager::stopCollecting()
 {
     for (auto const &sinkIt : sinks)
     {
@@ -93,7 +93,7 @@ void MetricsReporter::stopCollecting()
 }
 
 
-std::vector<std::shared_ptr<IMetric>> MetricsReporter::queryMetricsForReport(const std::string &sinkName)
+std::vector<std::shared_ptr<IMetric>> MetricsManager::queryMetricsForReport(const std::string &sinkName)
 {
     std::vector<std::shared_ptr<IMetric>> reportMetrics;
     reportMetrics.reserve(metrics.size());
@@ -130,7 +130,7 @@ std::vector<std::shared_ptr<IMetric>> MetricsReporter::queryMetricsForReport(con
 }
 
 
-void MetricsReporter::initializeSinks(IPropertyTreeIterator *pSinkIt)
+void MetricsManager::initializeSinks(IPropertyTreeIterator *pSinkIt)
 {
     for (pSinkIt->first(); pSinkIt->isValid(); pSinkIt->next())
     {
@@ -160,7 +160,7 @@ void MetricsReporter::initializeSinks(IPropertyTreeIterator *pSinkIt)
 }
 
 
-MetricSink *MetricsReporter::getSinkFromLib(const char *type, const char *sinkName, const IPropertyTree *pSettingsTree)
+MetricSink *MetricsManager::getSinkFromLib(const char *type, const char *sinkName, const IPropertyTree *pSettingsTree)
 {
     std::string libName;
 
@@ -195,7 +195,7 @@ MetricSink *MetricsReporter::getSinkFromLib(const char *type, const char *sinkNa
 }
 
 // Method for use when testing
-void MetricsReporter::addSink(MetricSink *pSink, const char *name)
+void MetricsManager::addSink(MetricSink *pSink, const char *name)
 {
     //
     // Add the sink if it does not already exist, otherwise delete the sink because
@@ -232,9 +232,9 @@ PeriodicMetricSink::~PeriodicMetricSink()
 }
 
 
-void PeriodicMetricSink::startCollection(MetricsReporter *_pReporter)
+void PeriodicMetricSink::startCollection(MetricsManager *_pManager)
 {
-    pReporter = _pReporter;
+    pManager = _pManager;
     prepareToStartCollecting();
     isCollecting = true;
     collectThread = std::thread(&PeriodicMetricSink::collectionThread, this);

+ 13 - 13
system/jlib/jmetrics.hpp

@@ -30,9 +30,9 @@
 
 namespace hpccMetrics {
 
-class MetricsReporter;
+class MetricsManager;
 
-MetricsReporter jlib_decl &queryMetricsReporter();
+MetricsManager jlib_decl &queryMetricsManager();
 
 /*
  * Enumerates the metric type.
@@ -172,7 +172,7 @@ class jlib_decl MetricSink
 {
 public:
     virtual ~MetricSink() = default;
-    virtual void startCollection(MetricsReporter *pReporter) = 0;
+    virtual void startCollection(MetricsManager *pManager) = 0;
     virtual void stopCollection() = 0;
     const std::string &queryName() const { return name; }
     const std::string &queryType() const { return type; }
@@ -185,7 +185,7 @@ protected:
 protected:
     std::string name;
     std::string type;
-    MetricsReporter *pReporter = nullptr;
+    MetricsManager *pManager = nullptr;
 };
 
 
@@ -193,7 +193,7 @@ class jlib_decl PeriodicMetricSink : public MetricSink
 {
 public:
     virtual ~PeriodicMetricSink() override;
-    virtual void startCollection(MetricsReporter *pReporter) override;
+    virtual void startCollection(MetricsManager *pManager) override;
     virtual void stopCollection() override;
 
 protected:
@@ -222,11 +222,11 @@ struct SinkInfo
     std::vector<std::string> reportMetrics;   // vector of metrics to report (empty for none)
 };
 
-class jlib_decl MetricsReporter
+class jlib_decl MetricsManager
 {
 public:
-    MetricsReporter() = default;
-    ~MetricsReporter();
+    MetricsManager() = default;
+    ~MetricsManager();
     void init(IPropertyTree *pMetricsTree);
     void addSink(MetricSink *pSink, const char *name);  // for use by unit tests
     void addMetric(const std::shared_ptr<IMetric> &pMetric);
@@ -248,20 +248,20 @@ protected:
 
 
 //
-// Convenience function templates to create metrics and add to the reporter
+// Convenience function templates to create metrics and add to the manager
 template <typename T>
-std::shared_ptr<T> createMetricAndAddToReporter(const char *name, const char* desc)
+std::shared_ptr<T> createMetricAndAddToManager(const char *name, const char* desc)
 {
     std::shared_ptr<T> pMetric = std::make_shared<T>(name, desc);
-    queryMetricsReporter().addMetric(pMetric);
+    queryMetricsManager().addMetric(pMetric);
     return pMetric;
 }
 
 template <typename T>
-std::shared_ptr<CustomMetric<T>> createCustomMetricAndAddToReporter(const char *name, const char *desc, MetricType metricType, T &value)
+std::shared_ptr<CustomMetric<T>> createCustomMetricAndAddToManager(const char *name, const char *desc, MetricType metricType, T &value)
 {
     std::shared_ptr<CustomMetric<T>> pMetric = std::make_shared<CustomMetric<T>>(name, desc, metricType, value);
-    queryMetricsReporter().addMetric(pMetric);
+    queryMetricsManager().addMetric(pMetric);
     return pMetric;
 }
 

+ 1 - 1
system/metrics/sinks/file/fileSink.cpp

@@ -39,7 +39,7 @@ void FileMetricSink::prepareToStartCollecting()
 
 void FileMetricSink::doCollection()
 {
-    auto reportMetrics = pReporter->queryMetricsForReport(name);
+    auto reportMetrics = pManager->queryMetricsForReport(name);
     writeReportHeaderToFile();
     for (auto &pMetric: reportMetrics)
     {

+ 1 - 1
system/metrics/sinks/log/logSink.cpp

@@ -31,7 +31,7 @@ LogMetricSink::LogMetricSink(const char *name, const IPropertyTree *pSettingsTre
 
 void LogMetricSink::doCollection()
 {
-    auto reportMetrics = pReporter->queryMetricsForReport(name);
+    auto reportMetrics = pManager->queryMetricsForReport(name);
     for (auto &pMetric: reportMetrics)
     {
         writeLogEntry(pMetric);

+ 8 - 8
system/metrics/sinks/prometheus/prometheusSink.cpp

@@ -28,7 +28,7 @@ extern "C" MetricSink* getSinkInstance(const char *name, const IPropertyTree *pS
 PrometheusMetricSink::PrometheusMetricSink(const char *name, const IPropertyTree *pSettingsTree) :
     MetricSink(name, PROMETHEUS_REPORTER_TYPE)
 {
-    m_metricsReporter = nullptr;
+    m_metricsManager = nullptr;
     m_metricsSinkName = name;
     m_processing = false;
     m_port = DEFAULT_PROMETHEUS_METRICS_SERVICE_PORT;
@@ -70,10 +70,10 @@ PrometheusMetricSink::PrometheusMetricSink(const char *name, const IPropertyTree
         m_server.Get(m_metricsServiceName.str(), [&](const Request& req, Response& res)
         {
             StringBuffer payload;
-            if (!m_metricsReporter)
-                throw std::runtime_error("NULL MetricsReporter detected!");
+            if (!m_metricsManager)
+                throw std::runtime_error("NULL MetricsManager detected!");
             else
-                toPrometheusMetrics(m_metricsReporter->queryMetricsForReport(std::string(m_metricsSinkName.str())), payload, m_verbose);
+                toPrometheusMetrics(m_metricsManager->queryMetricsForReport(std::string(m_metricsSinkName.str())), payload, m_verbose);
 
             res.set_content(payload.str(), PROMETHEUS_METRICS_SERVICE_RESP_TYPE);
             LOG(MCuserInfo, "TxSummary[status=%d;user=@%s:%d;contLen=%ld;req=GET;]\n",res.status, req.remote_addr.c_str(), req.remote_port, req.content_length);
@@ -123,12 +123,12 @@ void PrometheusMetricSink::toPrometheusMetrics(std::vector<std::shared_ptr<IMetr
     }
 }
 
-void PrometheusMetricSink::startCollection(MetricsReporter *_pReporter)
+void PrometheusMetricSink::startCollection(MetricsManager *_pManager)
 {
-    if (!_pReporter)
-        throw MakeStringException(-1, "PrometheusMetricsService: NULL MetricsReporter detected!");
+    if (!_pManager)
+        throw MakeStringException(-1, "PrometheusMetricsService: NULL MetricsManager detected!");
 
-    m_metricsReporter = _pReporter;
+    m_metricsManager = _pManager;
 
     m_collectThread = std::thread(collectionThread, this);
     m_processing = true;

+ 2 - 2
system/metrics/sinks/prometheus/prometheusSink.hpp

@@ -59,7 +59,7 @@ public:
     void startServer();
 private:
     std::thread       m_collectThread;
-    MetricsReporter * m_metricsReporter;
+    MetricsManager * m_metricsManager;
     StringBuffer      m_metricsSinkName;
 
     std::atomic<bool>               m_processing{false};
@@ -92,7 +92,7 @@ protected:
 
     Server m_server;
 
-    virtual void startCollection(MetricsReporter * pReporter) override;
+    virtual void startCollection(MetricsManager * pReporter) override;
     virtual void stopCollection() override;
 
     static const char * mapHPCCMetricTypeToPrometheusStr(MetricType type);

+ 19 - 19
testing/unittests/metrics/MetricFrameworkTests.cpp

@@ -33,9 +33,9 @@ public:
 
     ~MetricFrameworkTestSink() override = default;
 
-    void startCollection(MetricsReporter *_pReporter) override
+    void startCollection(MetricsManager *_pManager) override
     {
-        pReporter = _pReporter;
+        pManager = _pManager;
         isCollecting = true;
     }
 
@@ -46,7 +46,7 @@ public:
 
     std::vector<std::shared_ptr<IMetric>> getReportMetrics() const
     {
-        return pReporter->queryMetricsForReport(name);
+        return pManager->queryMetricsForReport(name);
     }
 
 public:
@@ -60,7 +60,7 @@ public:
     MetricFrameworkTests()
     {
         pTestSink = new MetricFrameworkTestSink("testsink");
-        frameworkTestReporter.addSink(pTestSink, "testsink");
+        frameworkTestManager.addSink(pTestSink, "testsink");
     }
 
     ~MetricFrameworkTests() = default;
@@ -69,8 +69,8 @@ public:
         CPPUNIT_TEST(Test_counter_metric_increments_properly);
         CPPUNIT_TEST(Test_gauge_metric_updates_properly);
         CPPUNIT_TEST(Test_custom_metric);
-        CPPUNIT_TEST(Test_reporter_calls_sink_to_start_and_stop_collection);
-        CPPUNIT_TEST(Test_reporter_manages_metrics_properly);
+        CPPUNIT_TEST(Test_manager_calls_sink_to_start_and_stop_collection);
+        CPPUNIT_TEST(Test_manager_manages_metrics_properly);
     CPPUNIT_TEST_SUITE_END();
 
 protected:
@@ -132,38 +132,38 @@ protected:
     }
 
 
-    void Test_reporter_calls_sink_to_start_and_stop_collection()
+    void Test_manager_calls_sink_to_start_and_stop_collection()
     {
-        frameworkTestReporter.startCollecting();
+        frameworkTestManager.startCollecting();
         CPPUNIT_ASSERT_EQUAL(true, pTestSink->isCollecting);
-        frameworkTestReporter.stopCollecting();
+        frameworkTestManager.stopCollecting();
         CPPUNIT_ASSERT_EQUAL(false, pTestSink->isCollecting);
     }
 
 
-    void Test_reporter_manages_metrics_properly()
+    void Test_manager_manages_metrics_properly()
     {
         int numAdded;
         std::shared_ptr<CounterMetric> pCounter = std::make_shared<CounterMetric>("test-counter", "description");
         std::shared_ptr<GaugeMetric> pGauge = std::make_shared<GaugeMetric>("test-gauge", "description");
-        frameworkTestReporter.addMetric(pCounter);
-        frameworkTestReporter.addMetric(pGauge);
+        frameworkTestManager.addMetric(pCounter);
+        frameworkTestManager.addMetric(pGauge);
         numAdded = 2;
 
-        frameworkTestReporter.startCollecting();
+        frameworkTestManager.startCollecting();
 
         //
         // Make sure the initial list is correct
-        int numMetrics = frameworkTestReporter.queryMetricsForReport("testsink").size();
+        int numMetrics = frameworkTestManager.queryMetricsForReport("testsink").size();
         CPPUNIT_ASSERT_EQUAL(numAdded, numMetrics);
 
         //
         // Add a metric while reporting is enabled and make sure it is returned
         std::shared_ptr<CounterMetric> pNewCounter = std::make_shared<CounterMetric>("test-newcounter", "description");
-        frameworkTestReporter.addMetric(pNewCounter);
+        frameworkTestManager.addMetric(pNewCounter);
         numAdded++;
 
-        numMetrics = frameworkTestReporter.queryMetricsForReport("testsink").size();
+        numMetrics = frameworkTestManager.queryMetricsForReport("testsink").size();
         CPPUNIT_ASSERT_EQUAL(numAdded, numMetrics);
 
         //
@@ -171,14 +171,14 @@ protected:
         pNewCounter = nullptr;
         numAdded--;
 
-        numMetrics = frameworkTestReporter.queryMetricsForReport("testsink").size();
+        numMetrics = frameworkTestManager.queryMetricsForReport("testsink").size();
         CPPUNIT_ASSERT_EQUAL(numAdded, numMetrics);
 
-        frameworkTestReporter.stopCollecting();
+        frameworkTestManager.stopCollecting();
     }
 
 protected:
-    MetricsReporter frameworkTestReporter;
+    MetricsManager frameworkTestManager;
     MetricFrameworkTestSink *pTestSink;
 
 };

+ 4 - 4
testing/unittests/metrics/PeriodicSinkTests.cpp

@@ -74,7 +74,7 @@ public:
         Owned<IPropertyTree> pSettings = createPTreeFromYAMLString(periodicSinkSettingsTestYml, ipt_none, ptr_ignoreWhiteSpace, nullptr);
         pSettings->setPropInt("@period", period);
         pPeriodicTestSink = new PeriodicTestSink("periodic_test_sink", pSettings);
-        periodicSinkTestReporter.addSink(pPeriodicTestSink, "periodic_test_sink");
+        periodicSinkTestManager.addSink(pPeriodicTestSink, "periodic_test_sink");
     }
 
     ~PeriodicSinkTests() = default;
@@ -92,7 +92,7 @@ protected:
         // Stop collection and ask the test sink how many collections were done. If the count is +/- 1
         // from the wait period multiple used, then we are close enough
         unsigned multiple = 3;
-        periodicSinkTestReporter.startCollecting();
+        periodicSinkTestManager.startCollecting();
 
         //
         // Check that the sink called to prepare for collection
@@ -100,7 +100,7 @@ protected:
 
         // wait... then stop collecting
         sleep(multiple * period);
-        periodicSinkTestReporter.stopCollecting();
+        periodicSinkTestManager.stopCollecting();
 
         unsigned numCollections = pPeriodicTestSink->numCollections;
 
@@ -113,7 +113,7 @@ protected:
     }
 
 protected:
-    MetricsReporter periodicSinkTestReporter;
+    MetricsManager periodicSinkTestManager;
     PeriodicTestSink *pPeriodicTestSink = nullptr;
 };