[
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)