eolivelli commented on a change in pull request #918: ZOOKEEPER-3366: Pluggable
metrics system for ZooKeeper - move remaining metrics to MetricsProvider
URL: https://github.com/apache/zookeeper/pull/918#discussion_r277873995
##########
File path:
zookeeper-server/src/main/java/org/apache/zookeeper/server/ZooKeeperServer.java
##########
@@ -1383,4 +1398,82 @@ public void setResponseCachingEnabled(boolean
isEnabled) {
public ResponseCache getReadResponseCache() {
return isResponseCachingEnabled ? readResponseCache : null;
}
+
+ /**
+ * Register server wide Gauges.
+ *
+ * @param zkServer the server to monitor
+ * @param metricsProvider the provider which publish these metrics
+ */
+ public static void registerGauges(ZooKeeperServer zkServer,
MetricsProvider metricsProvider) {
+ final ZKDatabase zkdb = zkServer.getZKDatabase();
+ final ServerStats stats = zkServer.serverStats();
+
+ MetricsContext rootContext = metricsProvider.getRootContext();
+ rootContext.registerGauge("avg_latency", stats::getAvgLatency);
+
+ rootContext.registerGauge("max_latency", stats::getMaxLatency);
+ rootContext.registerGauge("min_latency", stats::getMinLatency);
+
+ rootContext.registerGauge("packets_received",
stats::getPacketsReceived);
+ rootContext.registerGauge("packets_sent", stats::getPacketsSent);
+ rootContext.registerGauge("num_alive_connections",
stats::getNumAliveClientConnections);
+
+ rootContext.registerGauge("outstanding_requests",
stats::getOutstandingRequests);
+ rootContext.registerGauge("uptime", stats::getUptime);
+
+ rootContext.registerGauge("znode_count", zkdb::getNodeCount);
+
+ rootContext.registerGauge("watch_count",
zkdb.getDataTree()::getWatchCount);
+ rootContext.registerGauge("ephemerals_count",
zkdb.getDataTree()::getEphemeralsCount);
+ rootContext.registerGauge("approximate_data_size",
zkdb.getDataTree()::cachedApproximateDataSize);
+
+ rootContext.registerGauge("global_sessions", zkdb::getSessionCount);
+ rootContext.registerGauge("local_sessions",
+ zkServer.getSessionTracker()::getLocalSessionCount);
+
+ OSMXBean osMbean = new OSMXBean();
+ rootContext.registerGauge("open_file_descriptor_count",
osMbean::getOpenFileDescriptorCount);
+ rootContext.registerGauge("max_file_descriptor_count",
osMbean::getMaxFileDescriptorCount);
+ rootContext.registerGauge("connection_drop_probability",
zkServer::getConnectionDropChance);
+
+ rootContext.registerGauge("last_client_response_size",
stats.getClientResponseStats()::getLastBufferSize);
+ rootContext.registerGauge("max_client_response_size",
stats.getClientResponseStats()::getMaxBufferSize);
+ rootContext.registerGauge("min_client_response_size",
stats.getClientResponseStats()::getMinBufferSize);
+
+ if (zkServer instanceof LeaderZooKeeperServer) {
Review comment:
this can be done better using polymorphism
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services