[ 
https://issues.apache.org/jira/browse/PHOENIX-3655?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16471082#comment-16471082
 ] 

Karan Mehta commented on PHOENIX-3655:
--------------------------------------

Got some deeper insight today into what can be proceeded for this JIRA.

As suggested by [~elserj], Avatica offers {{MetricsAwareAvaticaHandler}} as an 
interface for deriving metrics tied to a request. However, with a second 
thought, I believe that these insights also should not be a part of metrics 
exposed via JMX, since these are not at global level. It doesn't show any trend 
of request timings, however just shows the metric value at any point in time, 
which doesn't make much sense. It should be tied with the statement level 
metrics to get more insight into how much time is spent by Avatica vs Phoenix 
client.

[~apurtell] [~xucang] [~jamestaylor] [~tdsilva] Any thoughts on this one?

Jetty server already exposes its metrics via JMX, 
[https://docs.pingidentity.com/bundle/pf_sm_configureRuntimeReporting_pf84/page/concept/runtimeMonitoringUsingJmx.html]
 websites list some of those.

However avatica-server doesn't expose it. To expose it, the avatica-server 
needs to depend on jetty-jmx module and add the corresponding bean in the 
container. We can expose that option via a config option. Will create a Jira to 
discuss more about options.

For the rest of Phoenix Global Metrics, I plan to write a shim layer that 
converts the metrics to hbase-metrics, which internally uses hadoop-metrics2, 
which exposes them via JMX. Having all these would mean that all the metrics 
are available via JMX. 

At this point, we can expose them via a servlet just like how hbase-server does 
it at {{/jmx}} path, which as far as I understand, uses a JMX client internally 
to read all the metrics and display it the corresponding format. 
{{JMXJsonServlet}} handles that portion. We can expose a similar one at PQS 
level.

Please advice.

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

Reply via email to