From d13b5f42562d5978ebb0f85be43aa88eb69307c2 Mon Sep 17 00:00:00 2001 From: Arne Juul Date: Mon, 16 Oct 2017 13:52:52 +0000 Subject: add "uptime" metric --- configd/src/apps/sentinel/config-handler.cpp | 45 ++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/configd/src/apps/sentinel/config-handler.cpp b/configd/src/apps/sentinel/config-handler.cpp index 1075bc4d7ce..0527982c99f 100644 --- a/configd/src/apps/sentinel/config-handler.cpp +++ b/configd/src/apps/sentinel/config-handler.cpp @@ -395,21 +395,48 @@ ConfigHandler::handleCommand(CommandConnection *c) } } +namespace { + +void +fillRestarts(vespalib::SimpleMetricSnapshot &snapshot, unsigned long restarts) +{ + snapshot.addCount("sentinel.restarts", + "how many times sentinel restarted a service", + restarts); +} + +void +fillRunning(vespalib::SimpleMetricSnapshot &snapshot, unsigned long running) +{ + snapshot.addGauge("sentinel.running", + "how many services the sentinel has running currently", + running); +} + +void +fillUptime(vespalib::SimpleMetricSnapshot &snapshot, long uptime) +{ + snapshot.addGauge("sentinel.uptime", + "how many seconds has the sentinel been running", + uptime); +} + +} // namespace + void ConfigHandler::updateMetrics() { + time_t now = time(nullptr); vespalib::SimpleMetricSnapshot snapshot(_startMetrics.snapshotStart, _startMetrics.snapshotEnd); - snapshot.addCount("sentinel.restarts", "how many times sentinel restarted a service", - _startMetrics.totalRestartsLastSnapshot); - snapshot.addGauge("sentinel.running", "how many services the sentinel has running currently", - _startMetrics.currentlyRunningServices); + fillRestarts(snapshot, _startMetrics.totalRestartsLastSnapshot); + fillRunning(snapshot, _startMetrics.currentlyRunningServices); + fillUptime(snapshot, now - _startMetrics.startedTime); _stateApi.myMetrics.setMetrics(snapshot.asString()); - vespalib::SimpleMetricSnapshot totals(_startMetrics.startedTime, time(nullptr)); - totals.addCount("sentinel.restarts", "how many times sentinel restarted a service", - _startMetrics.totalRestartsCounter); - totals.addGauge("sentinel.running", "how many services the sentinel has running currently", - _startMetrics.currentlyRunningServices); + vespalib::SimpleMetricSnapshot totals(_startMetrics.startedTime, now); + fillRestarts(totals, _startMetrics.totalRestartsCounter); + fillRunning(totals, _startMetrics.currentlyRunningServices); + fillUptime(totals, now - _startMetrics.startedTime); _stateApi.myMetrics.setTotalMetrics(totals.asString()); } -- cgit v1.2.3