[ https://issues.apache.org/jira/browse/PHOENIX-3655?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16474802#comment-16474802 ]
Karan Mehta commented on PHOENIX-3655: -------------------------------------- [~elserj] [~apurtell] [~tdsilva] [~xucang] I digged into the metrics stuff further (hbase-metrics). All the metrics are implemented in the following manner # Create a public interface that extends {{BaseSource}} class. This is where all the metrics name, its meta data information is stored and methods are provided as to how those will get updated. # Create a public class that extends {{BaseSourceImpl}} class and implements the interface created in step 1. This makes a call to {{super()}} in its constructor. Inside {{BaseSourceImpl}}, {{MetricRegistryInfo}} is created based on the parameters provided. This object is used to register itself with {{MetricRegistries}}, using the call to {{MetricRegistries.global().create()}} method. An adapter is created {{HBaseMetrics2HadoopMetricsAdapter}} which takes care of converting any type of metric (hbase-metric) to the hadoop2-metric whenever its {{snapshotAllMetrics()}} method is called. The default sampling rate for hadoop2-metrics is 10 seconds, so essentially these gets called every 10 seconds and metrics are pushed to JMX. An example class in Phoenix is {{MetricsIndexerSourceImpl}} tracking the indexer metrics. [~elserj] I would like to know, why did you chose to use {{getMetricsRegistry()}} to get an instance of {{DynamicMetricsRegistry}}? This is supposed to be deprecated, right? Do you want to move towards {{MetricRegistry}} provided by HBase? Also, Pinging [~enis] [~eclark] [~alexb] To check if the understanding is correct. I will propose my solution ideas soon. > Metrics for PQS > --------------- > > Key: PHOENIX-3655 > URL: https://issues.apache.org/jira/browse/PHOENIX-3655 > Project: Phoenix > Issue Type: New Feature > Affects Versions: 4.8.0 > Environment: Linux 3.13.0-107-generic kernel, v4.9.0-HBase-0.98 > Reporter: Rahul Shrivastava > Assignee: Karan Mehta > Priority: Major > Fix For: 4.15.0 > > Attachments: MetricsforPhoenixQueryServerPQS.pdf > > Original Estimate: 240h > Remaining Estimate: 240h > > Phoenix Query Server runs a separate process compared to its thin client. > Metrics collection is currently done by PhoenixRuntime.java i.e. at Phoenix > driver level. We need the following > 1. For every jdbc statement/prepared statement/ run by PQS , we need > capability to collect metrics at PQS level and push the data to external sink > i.e. file, JMX , other external custom sources. > 2. Besides this global metrics could be periodically collected and pushed to > the sink. > 2. PQS can be configured to turn on metrics collection and type of collect ( > runtime or global) via hbase-site.xml > 3. Sink could be configured via an interface in hbase-site.xml. > All metrics definition https://phoenix.apache.org/metrics.html -- This message was sent by Atlassian JIRA (v7.6.3#76005)