summaryrefslogtreecommitdiffstats
path: root/logd
diff options
context:
space:
mode:
authorArne Juul <arnej@yahoo-inc.com>2017-11-22 15:49:11 +0000
committerArne Juul <arnej@yahoo-inc.com>2017-12-04 13:26:58 +0000
commit214d88c8db868077a318f49d51b0529c911cf6f9 (patch)
tree4a37c1b9d84136ddba721a0ab741456a102235bc /logd
parentf207f5403b91df0fb9fe6679c45ba93fcc00ab5b (diff)
add metrics engine
Diffstat (limited to 'logd')
-rw-r--r--logd/src/logd/state.cpp17
-rw-r--r--logd/src/logd/state.h8
2 files changed, 22 insertions, 3 deletions
diff --git a/logd/src/logd/state.cpp b/logd/src/logd/state.cpp
index b73183d5987..232c300befa 100644
--- a/logd/src/logd/state.cpp
+++ b/logd/src/logd/state.cpp
@@ -4,10 +4,25 @@
LOG_SETUP("");
#include "state.h"
+#include <vespa/vespalib/metrics/simple_metrics_collector.h>
namespace logdemon {
+vespalib::metrics::CollectorConfig minute()
+{
+ vespalib::metrics::CollectorConfig conf;
+ conf.sliding_window_seconds = 60;
+ return conf;
+}
+
+
StateReporter::StateReporter()
+ : _port(-1),
+ _server(),
+ _health(),
+ _components(),
+ _metrics(vespalib::metrics::SimpleMetricsCollector::create(minute())),
+ _producer(_metrics)
{
}
@@ -16,7 +31,7 @@ StateReporter::setStatePort(int statePort)
{
if (statePort != _port) {
_port = statePort;
- _server.reset(new vespalib::StateServer(_port, _health, _metrics, _components));
+ _server.reset(new vespalib::StateServer(_port, _health, _producer, _components));
LOG(info, "state server listening on port %d", _server->getListenPort());
}
}
diff --git a/logd/src/logd/state.h b/logd/src/logd/state.h
index 7abcc7eb93c..845aab502a4 100644
--- a/logd/src/logd/state.h
+++ b/logd/src/logd/state.h
@@ -3,9 +3,10 @@
#include <vespa/vespalib/net/state_server.h>
#include <vespa/vespalib/net/simple_health_producer.h>
-#include <vespa/vespalib/net/simple_metrics_producer.h>
#include <vespa/vespalib/net/simple_component_config_producer.h>
#include <vespa/vespalib/net/generic_state_handler.h>
+#include <vespa/vespalib/metrics/metrics_collector.h>
+#include <vespa/vespalib/metrics/producer.h>
namespace logdemon {
@@ -13,12 +14,15 @@ class StateReporter {
int _port;
std::unique_ptr<vespalib::StateServer> _server;
vespalib::SimpleHealthProducer _health;
- vespalib::SimpleMetricsProducer _metrics;
vespalib::SimpleComponentConfigProducer _components;
+ std::shared_ptr<vespalib::metrics::MetricsCollector> _metrics;
+ vespalib::metrics::Producer _producer;
public:
StateReporter();
+ ~StateReporter() {}
void setStatePort(int statePort);
void gotConf(size_t generation);
+ vespalib::metrics::MetricsCollector &metrics();
};
} // namespace